text:
package squidpony.squidmath;

import squidpony.ArrayTools;
import squidpony.annotation.Beta;

import java.util.Collection;
import java.util.Iterator;
import java.util.SortedSet;

/**
 * An ordered multi-directional "map" that keeps 1 or more keysets organized so you can look up one key given a key in
 * another keyset, and do the same for the indices of keys. Does not have generic type parameters, which is needed
 * because we handle arbitrary counts of keysets, and each keyset could have its own type. You can use most of the
 * normal Map methods here, though they often need an int as their first argument, {@code which}, that specifies which
 * keyset the method applies to. For example, {@link #contains(int, Object)} checks for the presence of the second
 * parameter in the keyset specified by the first parameter. Adding items to a MultiKey uses {@link #put(Object...)},
 * and that does not take a {@code which} parameter because it needs to add an item to every keyset to succeed, and will
 * do nothing if the array or varargs passed to it has a different length than the {@link #keyCount} of the MultiKey.
 * Created by Tommy Ettinger on 10/23/2016.
 */
@Beta
@SuppressWarnings("unchecked")
public class MultiKey {
    public final int keyCount;
    Arrangement[] keys;

    /**
     * Constructs an empty MultiKey.
     */
    public MultiKey()
    {
        this(3, 16, 0.5f);
    }

    /**
     * Constructs a MultiKey with the expected number of indices to hold (the number of items in each keyset is always
     * the same, and this will be more efficient if expected is greater than that number).
     * @param expected how many items this should be ready to hold; can resize if needed
     */
    public MultiKey(int keyCount, int expected)
    {
        this(keyCount, expected, 0.5f);
    }

    /**
     * Constructs a MultiKey with the expected number of indices to hold (the number of items in each keyset is always
     * the same, and this will be more efficient if expected is greater than that number) and the load factor to use,
     * between 0.1f and 0.8f usually (using load factors higher than 0.8f can cause problems).
     * @param expected the amount of indices (the number of items in each keyset is always the same) this should hold
     * @param f the load factor, probably between 0.1f and 0.8f
     */
    public MultiKey(int keyCount, int expected, float f)
    {
        this.keyCount = keyCount;
        keys = new Arrangement[keyCount];
        for (int i = 0; i < keyCount; i++) {
            keys[i] = new Arrangement(expected, f);
        }
    }

    /**
     * Constructs a MultiKey from a Collection of Iterables that will be processed in tandem, adding a unique item from
     * each keyset in keysets if and only if it can also add a unique item from all other keysets, otherwise skipping
     * that iteration in each Iterable.
     * @param keysets a Collection of Iterable data structures, each containing items that should all be unique
     */
    public MultiKey(Collection<Iterable> keysets) {
        if (keysets == null) {
            keyCount = 0;
            keys = new Arrangement[0];
        } else {
            keyCount = keysets.size();
            keys = new Arrangement[keyCount];
            for (int i = 0; i < keyCount; i++) {
                keys[i] = new Arrangement();
            }
            putAll(keysets);
        }
    }

    public MultiKey(MultiKey other)
    {
        if(other == null)
        {
            keyCount = 0;
            keys = new Arrangement[0];
        }
        else
        {
            keyCount = other.keyCount;
            keys = new Arrangement[keyCount];
            for (int i = 0; i < keyCount; i++) {
                keys[i] = new Arrangement(other.keys[i]);
            }
        }
    }

    public MultiKey(Arrangement[] keysets)
    {
        if(keysets == null)
        {
            keyCount = 0;
            keys = new Arrangement[0];
        }
        else
        {
            keyCount = keysets.length;
            keys = new Arrangement[keyCount];
            int minLength = Integer.MAX_VALUE;
            for (int k = 0; k < keyCount; k++) {
                if(keysets[k] == null)
                    return;
                minLength = Math.min(minLength, keysets[k].size);
            }
            for (int k = 0; k < keyCount; k++) {
                keys[k] = keysets[k].take(minLength);
            }
        }
    }
    /**
     * Returns true if this contains key in the keyset specified by which.
     * @param which which keyset to check in
     * @param key the key to check the presence of
     * @return true if key is present in the keyset at which; false otherwise
     */
    public boolean contains(int which, Object key) {
        if(which >= 0 && which < keyCount)
            return keys[which].containsKey(key);
        return false;
    }

    /**
     * Returns true if index is between 0 (inclusive) and {@link #size()} (exclusive), or false otherwise.
     * @param index the index to check
     * @return true if index is a valid index in the ordering of this MultiKey
     */
    public boolean containsIndex(int index) {
        if(keyCount > 0) return keys[0].containsValue(index);
        return false;
    }

    /**
     * Given an index of a keyset (which) and an Object key, finds the position in the ordering that key has in the
     * keyset at which, or -1 if key is not present.
     * <br>
     * Unlike {@link java.util.List#indexOf(Object)}, this runs in constant time.
     * @param which which keyset to check in
     * @param key the key to find the position of
     * @return the int index of key in the ordering, or -1 if it is not present
     */
    public int indexOf(int which, Object key)
    {
        if(which >= 0 && which < keyCount)
            return keys[which].getInt(key);
        return -1;
    }

    /**
     * Given an index of a keyset (which) and an int index, finds the associated key in the keyset specified by which
     * (using index as a point in the ordering).
     * @param which which keyset to get from
     * @param index an int index into this MultiKey
     * @return the key (in the keyset found by which) with index for its position in the ordering, or null if index or which was invalid
     */
    public Object getAt(int which, int index)
    {
        if(which >= 0 && which < keyCount)
            return keys[which].keyAt(index);
        return null;
    }

    /**
     * Given an int index, finds the associated keys at all keysets (using index as a point in the ordering) and returns
     * them as a newly-allocated Object array.
     * @param index an int index into this MultiKey
     * @return the array of keys with index for their position in the ordering, or an array of null if index was invalid
     * @see #getAllAt(int, Object[]) getAllAt can avoid allocating a new array each time
     */
    public Object[] getAllAt(int index) {
        Object[] os = new Object[keyCount];
        for (int i = 0; i < keyCount; i++) {
            os[i] = keys[i].keyAt(index);
        }
        return os;
    }

    /**
     * Given an int index and an Object array to reuse, finds the associated keys at all keysets (using index as a point
     * in the ordering) and fills into with those keys, up to keyCount items.
     * @param index an int index into this MultiKey
     * @param into an Object array to reuse and fill with items; will be returned as-is if smaller than keyCount
     * @return the array of keys with index for their position in the ordering, or an array of null if index was invalid
     */
    public Object[] getAllAt(int index, Object[] into) {
        if (into != null && into.length >= keyCount) {
            for (int i = 0; i < keyCount; i++) {
                into[i] = keys[i].keyAt(index);
            }
        }
        return into;
    }

    /**
     * Given an index of the keyset to look up a key in (lookingUp), an index of the keyset to get from (getting), and
     * an Object key to look up (key), finds the Object key in the keyset specified by getting that is associated with
     * key in the keyset specified by lookingUp. key and the returned value will be at the same point in the ordering.
     * @param lookingUp which keyset to look up the {@code key} parameter in
     * @param getting which keyset to get a value from
     * @param key an object to use as a key, which should be the right type for the keyset at lookingUp
     * @return the object from getting's keyset that is associated with key, or null if key was not present
     */
    public Object getFrom(int lookingUp, int getting, Object key)
    {
        if(lookingUp >= 0 && lookingUp < keyCount && getting >= 0 && getting < keyCount)
            return keys[getting].keyAt(keys[lookingUp].getInt(key));
        return null;
    }

    /**
     * Gets a random key from the keyset specified by which using the given RNG.
     * @param which which keyset to get a random key from
     * @param random generates a random index to get a key with
     * @return a randomly chosen key from the keyset specified, or null if this is empty
     */
    public Object randomKey(int which, RNG random)
    {
        if(which >= 0 && which < keyCount)
            return keys[which].randomKey(random);
        return null;
    }
    /**
     * Gets a random key from a random keyset in this MultiKey using the given RNG.
     * @param random generates a random keyset index and random item index, to get a random key
     * @return a randomly chosen Object key from possibly any keyset in this, or null if this is empty
     */
    public Object randomKey(RNG random)
    {
        if(keyCount > 0)
            return keys[random.nextIntHasty(keyCount)].randomKey(random);
        return null;
    }

    /**
     * In the keyset specified by {@code which}, changes an existing key, {@code past}, to another key, {@code future},
     * if past exists in that keyset and future does not yet exist in that keyset. This will retain past's point in the
     * ordering for future, so the associated other key(s) will still be associated in the same way.
     * @param which which keyset to alter the items in
     * @param past a key, that must exist in the keyset specified by which, and will be changed
     * @param future a key, that cannot currently exist in the keyset specified by which, but will if this succeeds
     * @return this for chaining
     */
    public MultiKey alter(int which, Object past, Object future)
    {
        if(which >= 0 && which < keyCount && keys[which].containsKey(past) && !keys[which].containsKey(future))
            keys[which].alter(past, future);
        return this;
    }
    /**
     * In the keyset specified by {@code which}, changes the key at {@code index} to another key, {@code future}, if
     * index is valid and future does not yet exist in that keyset. The position in the ordering for future will be the
     * same as index, and the same as the key this replaced, if this succeeds, so the other key(s) at that position will
     * still be associated in the same way.
     * @param which which keyset to alter the items in
     * @param index a position in the ordering to change; must be at least 0 and less than {@link #size()}
     * @param future a key, that cannot currently exist in the keyset specified by which, but will if this succeeds
     * @return this for chaining
     */
    public MultiKey alterAt(int which, int index, Object future)
    {
        if(which >= 0 && which < keyCount && !keys[which].containsKey(future) && index >= 0 && index < keys[which].size)
            keys[which].alter(keys[which].keyAt(index), future);
        return this;
    }

    /**
     * Adds a key to each keyset at the same point in the ordering (the end) of this MultiKey. The length of k must
     * match the keyCount of this MultiKey, and the nth item in k will go into the nth keyset. No item in k can be
     * present in the matching keyset in this before this is called. If you want to change or update an existing key,
     * use {@link #alter(int, Object, Object)} or {@link #alterAt(int, int, Object)}.
     * @param k an array or varargs of keys to add after the last index of this MultiKey; length must equal keyCount
     * @return true if this collection changed as a result of this call
     */
    public boolean put(Object... k)
    {
        if(k != null && keyCount > 0 && k.length == keyCount) {
            for (int i = 0; i < keyCount; i++) {
                if(keys[i].containsKey(k[i]))
                    return false;
            }
            for (int i = 0; i < keyCount; i++) {
                keys[i].add(k[i]);
            }
            return true;
        }
        return false;
    }

    /**
     * Goes through all Iterable items in {@code k} and adds their unique items into their corresponding keyset at the
     * end. If an item from the nth Iterable is already present in the nth keyset in this when this would add one, this
     * will not put any keys at that point in the iteration order, and will place the next unique group of items it
     * finds in the arguments at that position instead.
     * @param k a Collection of Iterable s of keys to add to their respective keysets; should all be unique (like a Set)
     * @return true if this collection changed as a result of this call
     */
    public boolean putAll(Collection<Iterable> k)
    {
        if(k == null || k.size() != keyCount) return false;
        boolean changed = false;
        Iterator[] its = new Iterator[keyCount];
        int idx = 0;
        for (Iterable it : k) {
            its[idx++] = it.iterator();
        }
        Object[] os = new Object[keyCount];
        while (true)
        {
            for (int i = 0; i < keyCount; i++) {
                if(!its[i].hasNext())
                    return changed;
                os[i] = its[i].next();
            }
            changed = put(os) || changed;
        }
    }
    /**
     * Puts all unique keys in {@code other} into this MultiKey, respecting other's ordering. If a key in other is
     * already present when this would add one, this will not put the keys at that point in the iteration
     * order, and will place the next unique items it finds in other at that position instead.
     * @param other another MultiKey collection with the same keyCount
     * @return true if this collection changed as a result of this call
     */
    public boolean putAll(MultiKey other)
    {
        if(other == null || other.keyCount != keyCount) return false;
        boolean changed = false;
        int sz = other.size();
        Object[] os = new Object[keyCount];
        for (int i = 0; i < sz; i++) {
            changed = put(other.getAllAt(i, os)) || changed;
        }
        return changed;
    }

    /**
     * Adds a key to each keyset at the given index in the ordering of this MultiKey. The length of k must
     * match the keyCount of this MultiKey, and the nth item in k will go into the nth keyset. No item in k can be
     * present in the matching keyset in this before this is called. If you want to change or update an existing key,
     * use {@link #alter(int, Object, Object)} or {@link #alterAt(int, int, Object)}.
     * @param k an array or varargs of keys to add after the last index of this MultiKey; length must equal keyCount
     * @return true if this collection changed as a result of this call
     */
    public boolean putAt(int index, Object... k)
    {
        if(k != null && keyCount > 0 && k.length == keyCount) {
            for (int i = 0; i < keyCount; i++) {
                if(keys[i].containsKey(k[i]))
                    return false;
            }
            for (int i = 0; i < keyCount; i++) {
                keys[i].addAt(index, k[i]);
            }
            return true;
        }
        return false;
    }

    /**
     * Removes a given Object key from the keyset specified by which, if {@code removing} exists in that keyset, and
     * also removes any keys associated with its point in the ordering.
     * @param which which keyset to remove the item from; if {@code removing} isn't in that keyset, this does nothing
     * @param removing the key to remove
     * @return this for chaining
     */
    public MultiKey remove(int which, Object removing)
    {
        if(which >= 0 && which < keyCount) {
            int i = keys[which].removeInt(removing);
            if(i >= 0) {
                for (int j = 0; j < keyCount; j++) {
                    if(j != which)
                        keys[j].removeAt(i);
                }
            }
        }
        return this;
    }

    /**
     * Removes a given point in the ordering, if {@code index} is at least 0 and less than {@link #size()}.
     * @param index the position in the ordering to remove
     * @return this for chaining
     */
    public MultiKey removeAt(int index)
    {
        if(index >= 0 && keyCount > 0 && index < keys[0].size) {
            for (int i = 0; i < keyCount; i++) {
                keys[i].removeAt(index);
            }
        }
        return this;
    }

    /**
     * Reorders this MultiKey using {@code ordering}, which have the same length as this MultiKey's {@link #size()}
     * and can be generated with {@link ArrayTools#range(int)} (which, if applied, would produce no
     * change to the current ordering), {@link RNG#randomOrdering(int)} (which gives a random ordering, and if
     * applied immediately would be the same as calling {@link #shuffle(RNG)}), or made in some other way. If you
     * already have an ordering and want to make a different ordering that can undo the change, you can use
     * {@link ArrayTools#invertOrdering(int[])} called on the original ordering.
     * @param ordering an int array or vararg that should contain each int from 0 to {@link #size()} (or less)
     * @return this for chaining
     */
    public MultiKey reorder(int... ordering)
    {
        if(ordering != null) {
            for (int i = 0; i < keyCount; i++) {
                keys[i].reorder(ordering);
            }
        }
        return this;
    }

    /**
     * Generates a random ordering with rng and applies the same ordering to all kinds of keys this has; they will
     * maintain their current association to other keys but their ordering/indices will change.
     * @param rng an RNG to produce the random ordering this will use
     * @return this for chaining
     */
    public MultiKey shuffle(RNG rng)
    {
        if(keyCount > 0) {
            int[] ordering = rng.randomOrdering(keys[0].size);
            for (int i = 0; i < keyCount; i++) {
                keys[i].reorder(ordering);
            }
        }
        return this;
    }

    /**
     * Creates a new iterator over the keys this holds in the keyset specified by which. This can be problematic for
     * garbage collection if called very frequently; it may be better to access items by index (which also lets you
     * access other keys associated with that index) using {@link #getAt(int, int)} in a for(int i=0...) loop.
     * @return a newly-created iterator over this MultiKey's keys in the specified keyset
     */
    public Iterator iterator(int which)
    {
        if(which >= 0 && which < keyCount)
            return keys[which].iterator();
        return null;
    }

    /**
     * Gets and caches the keys in the keyset specified by which as a Collection that implements SortedSet (and so also
     * implements Set).
     * @param which which keyset to get as a separate value
     * @return the keys from the keyset specified by which, as a SortedSet
     */
    public SortedSet getSet(int which) {
        if(which >= 0 && which < keyCount)
            return keys[which].keySet();
        return null;
    }

    /**
     * To be called sparingly, since this allocates a new OrderedSet instead of reusing one.
     * @param which which keyset to get as a separate value
     * @return the keys from the keyset specified by which, as an OrderedSet
     */
    public OrderedSet getOrderedSet(int which) {
        if(which >= 0 && which < keyCount)
            return keys[which].keysAsOrderedSet();
        return null;

    }

    public int keyCount() {
        return keyCount;
    }
    public int valueCount() {
        return 0;
    }

    public int size() {
        return (keyCount > 0) ? keys[0].size : 0;
    }

    public boolean isEmpty()
    {
        return keyCount > 0 && keys[0].size > 0;
    }

}

redpajama_set_name: RedPajamaGithub


If you're still using Internet Explorer, you're exposing yourself to unnecessary danger when you surf the web. Malicious websites can install spyware, adware, and viruses without your knowledge or consent by exploiting IE's subpar security architecture. If you've got some spyware on your computer and don't know where it came from, there is a good chance IE invited it in.
If you have been following this blog, you have so far installed a firewall, spyware and adware detectors, and a secure browser to keep you feeling safe and warm at night. And the best part is that it hasn't cost you a single gold nugget to do so. Now it's time for the final piece of software that is absolutely vital if you wish to protect your computer. As always, it's free.
Avast! is a simple and clean, but ever swashbuckling, antivirus program that will have viruses walking the plank and begging for mercy. But there will be no mercy. Download it, update it often, scan often, and live a long, fully-toothed life on the high seas of security.
In an upcoming post I will map out how to use your new virus scanner most effectively. Here's the gist of it: it's easier to prevent viruses from boarding your ship in the first place than it is to fight them off once they've ransacked your rum rations and gorged a hole in the hull of your once mighty vessel.


text:
Q: WIF: How to specify which claims to return upon authentication? Similar to this question, except I need to get additional claims at the moment of authentication, not later.
I'm implementing my RP as an authentication plugin to another website, so I can't (or rather would like to avoid if at all possible) do such things as alter the web.config file or add FederationMetadata.xml to my RP.
I've managed to sucessfully authenticate against the STS, now I need to get some more claims besides the very basics that it sends me. The STS is public (or near it), out of my control, and there will be many different RP's authenticating against it, so I don't expect that every RP will receive special treatment. I thus assume that the STS doesn't know anything about my RP until I perform an authentication, and that it will forget all about it after the authentication is complete.
As stated, I'm using WIF and I'm doing everything in code. Where do I specify which claims to send? Here's my code so far:
// Init configuration
var config = new ServiceConfiguration();
config.AudienceRestriction.AllowedAudienceUris.Add(new Uri("https://MyAudienceURI/"));
config.CertificateValidator = System.IdentityModel.Selectors.X509CertificateValidator.None;
var issuers = new ConfigurationBasedIssuerNameRegistry();
issuers.AddTrustedIssuer("08F81147C44D95CDA617963AFF0650EF26578E4A", "http://STSIssuer/trust");
config.IssuerNameRegistry = issuers;

// Create the FAM
var fam = new WSFederationAuthenticationModule();
fam.ServiceConfiguration = config;
fam.PassiveRedirectEnabled = true;
fam.Issuer = "https://STSUrl/Default.aspx";
fam.Realm = "https://MyAudienceURI/";
fam.Reply = Request.Url.ToString();
fam.RequireHttps = false;

// Check the current request
var req = System.Web.HttpContext.Current.Request;
if (!fam.CanReadSignInResponse(req, true))
{
    fam.RedirectToIdentityProvider("Nop.Plugin.ExternalAuth.WIF", Request.Url.ToString(), false);
    Response.End();
}

var principal = ClaimsPrincipal.CreateFromIdentities(config.SecurityTokenHandlers.ValidateToken(fam.GetSecurityToken(fam.GetSignInResponseMessage(req))));

A: Normally, the STS is configured to provide the claims. The configuration is on a per RP basis so different RP can get different claims.
You can augment this using WIF.
Use the ClaimsAuthenticationManager and override Authenticate.
and then something like:
((IClaimsIdentity)incomingPrincipal.Identity).Claims.Add(new Claim(...))
If the claims are external, you have to get them yourself e.g. accessing AD?

redpajama_set_name: RedPajamaStackExchange


I found a page at the National Center on Secondary Education and Transition (NCSET) Web site I thought may interest you. You can find it at http://www.ncset.org/browseold.asp?overflow=0&camefrom=enews&format=enews&format2=ff&title=Funding+Forecast&c1=Additional+Funding+and+Award+Opportunities&c2=¤t=501 (click on this link, or copy and paste it into your web browser). Enjoy.


text:
Why you'd want to live in Orange County
Orange County is in southeastern New York State, directly north of the New Jersey-New York border, west of the Hudson River, east of the Delaware River and northwest of New York City. It borders the New York counties of Dutchess, Putnam, Rockland, Sullivan, Ulster, and Westchester, as well as Passaic and Sussex counties in New Jersey and Pike County in Pennsylvania. Orange County is the only county in New York State which borders both the Hudson and Delaware Rivers. Orange County is where the Great Valley of the Appalachians finally opens up and ends. The western corner is set off by the Shawangunk Ridge. The area along the Rockland County border (within Harriman and Bear Mountain state parks) and south of Newburgh is part of the Hudson Highlands. The land in between is the valley of the Wallkill River. In the southern portion of the county the Wallkill valley expands into a wide glacial lake bed known as the Black Dirt Region for its fertility.
Orange County Market Report
AVERAGE PRICE OF 2,000 HOMES
AVERAGE PRICE OF 251 NEWLY BUILT HOMES
AVERAGE PRICE OF 327 HOMES WITH A POOL
AVERAGE PRICE OF 124 MULTI-MILLION DOLLAR HOMES
AVERAGE PRICE OF 94 REDUCED PRICE HOMES
AVERAGE PRICE OF 48 DISTRESSED HOMES
Home Price by High School
Avg Days on Site
M.W.H.S 280 $447,422 84 days
Nfa 205 $333,760 123 days
Warwick Valley High School 186 $551,734 108 days
Washingtonville Sh 176 $515,031 127 days
Valley Central High School 133 $446,768 140 days
Home Price by House Size
All Homes 2,000 $554,335 140 days
Newly Built Homes 251 $498,870 193 days
Homes with a Pool 327 $550,571 88 days
Multi-Million Dollar Homes 124 $2,588,620 241 days
Reduced Price Homes 94 $406,706 78 days
Distressed Homes 48 $353,809 124 days
Highly Rated Orange County Schools
CORNWALL ON HUDSON ELEMENTARY SCHOOL
FOSTERTOWN ETC MAGNET SCHOOL
LEE ROAD SCHOOL
PARK AVENUE ELEMENTARY SCHOOL
CORNWALL MIDDLE SCHOOL
GEORGE GRANT MASON ELEMENTARY SCHOOL
GREENWOOD LAKE MIDDLE SCHOOL
WARWICK VALLEY MIDDLE SCHOOL

redpajama_set_name: RedPajamaCommonCrawl


The opportunities in space exploration, tourism and colonization are vast, if you know where to look.
History will remember Musk as one of our generation's greatest inventors. And yet we're doing everything we can to shoot him down.


text:
Prevalence of hepatitis B and anti-hepatitis C virus antibody among people who inject drugs in the Lebanese population
Antoine Abou Rached,1,2 Mary Nakhoul,1 Carine Richa,1 Afif Jreij,1 Pierre Abi Hanna1 and Walid Ammar2
1Faculty of Medical Science, Lebanese University, Hadath, Lebanon (Correspondence to Abou Rached Antoine: This e-mail address is being protected from spambots. You need JavaScript enabled to view it ). 2Ministry of Public Health, Beirut, Lebanon.
Background: People who inject drugs are prone to a number of blood-borne viral infections. Hepatitis B virus (HBV) and hepatitis C virus (HCV) constitute an important public health concern in this high risk group.
Aim: We aimed to determine the prevalence of HBV and HCV antibody among people who inject drugs in Lebanon.
Methods: We conducted a prospective cross-sectional study between June 2015 and June 2016 on PWIDs recruited through Lebanese nongovernmental organizations in collaboration with the Lebanese Ministry of Public Health. The participants were tested for HBs antigen and HCV antibody using rapid test kits. The prevalence of each virus was then calculated. The correlation between both infections and other possible risk factors was also analysed.
Results: A total of 250 people were included in our study, of whom 98% were males. Mean age was 31.9 (standard deviation 8.7) years. The prevalence of HBsAg and anti-HCV among people who inject drugs was 1.2% and 15.6%, respectively. Older age, longer duration of drug use and lack of awareness were significantly correlated with a higher rate of HCV infection (P < 0.01). The high rate of needle sharing among our PWIDs significantly affected the prevalence of anti-HCVAb.
Conclusion: People who inject drugs remain the subpopulation most affected with chronic HCV in Lebanon.
Keywords: HPV, HCV, people who inject drugs, Lebanon
Citation: Abou Rached A; Nakhoul M; Richa C; Jreij A; Abi Hanna P; Ammar W. Prevalence of hepatitis B and anti-hepatitis C virus antibody among people who inject drugs in the Lebanese population. East Mediterr Health J. 2019;25(x):xxx–xxx. https://doi.org/10.26719/emhj.19.094
Copyright © World Health Organization (WHO) 2019. Some rights reserved. This work is available under the CC BY-NC-SA 3.0 IGO license (https://creativecommons.org/licenses/by-nc-sa/3.0/igo)
The World Health Organization (WHO) estimates that in 2015, 257 million persons, 3.5% of the world population, were living with chronic HBV infection. The African and Western Pacific regions accounted for 68% of those infected. Also, it is estimated that 71 million persons were living with HCV infection in 2015, i.e. 1% of the world population (1). In 2015, viral hepatitis was responsible for 1.34 million deaths. Mortality from viral hepatitis has increased by 22% since 2000 (1).
Transmission of HBV and HCV has been causally associated with injection drug use by people who inject drugs (PWIDs) due to sharing of needles and injection equipment contaminated with infected blood. Seroprevalence rates for HBV and HCV vary considerably among PWIDs depending on the geographic region and time period for the PWID populations tested.
Injection drug use, unsafe sex and unsterile tattoos are the main modes of transmission of HBV in patient not vaccinated. Injection drug use remains the main mode of transmission in industrialized countries, whereas unsterile tattoos and piercings in nonprofessional settings might play an increasing role in young populations (2).
Unsafe therapeutic injection practices and blood transfusions are also important routes of infection (3). Unsafe health care practices (including unsafe health care injections) and injection drug use remain the leadings modes of transmission of HCV. Areas with high rates of infection are located in the Eastern Mediterranean Region and the European Region. In the Eastern Mediterranean Region, the most common cause of transmission of infection is unsafe health care injections (4,5). In the European Region, injection drug use accounts for a substantial proportion of infections (6).
According to the latest United Nations Office on Drugs and Crime report, around 16.5 million people (0.4% of the total world population) aged 15–64 years use heroin or opium (7).
Lebanon is ranked among the countries with a low endemicity profile for both viruses having a prevalence of 1.74% for HBV and 0.21% for HCV (8); HCV genotype 3 is the most prevalent genotype in the Lebanese PWID population followed by genotype 1 (9). The prevalence of these infections among PWID in Lebanon has previously been estimated at 2.5–5% for HBV and more than 50% for HCV, based on small scale reports (10).
The aim of this study was to determine the prevalence of both infections in PWIDs in the Lebanese population based on a screening strategy applied by a number of nongovernmental organizations and to establish the correlation between both infections and other possible underlying factors within this high-risk group.
We carried out this cross sectional study between June 2015 and June 2016 on injection drug users recruited through the Middle East and North Africa Harm Reduction Association (MENAHRA) in collaboration with many other nongovernmental organizations throughout Lebanon.
Study conduct and data collection
As part of a strategy to control blood-borne viral infections such as HIV and viral hepatitis in high risk groups by the Lebanese Ministry of Public Health, screening for HCV antibodies and HBs antigen and HIV in the PWID population was carried out followed by a vaccination protocol against HBV in seronegative patients. This work was done in collaboration with nongovernmental organizations throughout Lebanon. These organizations were registered in Beirut and their geographic distribution covered Lebanese territory from north to south, Beqaa and Beirut. They included ESCALE, SIDC, SKOUN, AJEM, the nongovernmental organization platform of SAIDA, Oum el Nour, Jeunesse contre la drogue, Cenacle de la lumiere, Nusroto and Bonheur du ciel. The PWIDs presenting to these organizations were from different regions in Lebanon.
All the PWIDs patients presented to the aforementioned nongovernmental organizations were included in our study, after a clear explanation of the aims of the study, independently of their age, sex or duration of drug use. There were no exclusions.
All participants were able to read, 95% signed a consent form in Arabic. Their agreement was guided by the responsible person in the nongovernmental organization. At the time of the study, participants were not under the effects of drugs. They were tested for HBs Ag and HCV Ab using rapid test kits: RDT HEPATITIS B (SD Bioline HBsAg-01FK10W), HBsAg, RDT HEPATITIS C (SD Bioline HCV-02FK10), HCVAb, which are based on enzyme immune assay. None of the PWIDs included were prisoners but some had a previous history of incarceration that is not reported here.
Data collection included age, sex, nationality, presence of any other predisposing factor for viral hepatitis acquisition, other high risk behaviours such as sharing needles, men who have sex with men, sex working, living with someone infected with HBV and/or HCV, sex with a person infected with HBV/HCV, history of blood transfusion, the presence of piercings and tattoos. Further inquiry included the level of awareness and education, which were assessed by asking participants if they had ever heard about HBV/HCV, viral transmission through contaminated blood and unsafe sexual practices or about the existence of HBV vaccination for prevention. They were also asked about any previous HBV vaccination.
All data were gathered by the responsible person in each nongovernmental organization and were registered in an Excel document.
The prevalence of HBV and anti-HCV antibody among the PWIDs in the study was calculated. The correlation between the age of participants and test positivity was calculated. The impact of viral hepatitis risk factors of on the prevalence of HBV and anti-HCV antibody was also analysed. The prevalence of needle-sharing between the PWIDs as well as the duration of drug injection were specifically addressed in addition to their association with serologic positivity of HBV and HCV. Similarly, we investigated the knowledge of participants about viral hepatitis and mode of transmission and how it could affect their life. The proportion of participants vaccinated for HBV was also calculated to inform a future viral prevention programme.
The statistical analysis on these associations was done using the Chi-squared (χ2) test; P-value < 0.01 was considered the threshold for statistically significant correlation.
A total of 250 people were included in our study, representing 95% of the total number of PWIDs recruited during the period of the study by the different nongovernmental organizations.
Male sex was predominant, representing 98% of the studied population; only 5 women participated (2% of the population). The majority of PWIDs were adolescents and young adults, with 75% aged under 35 (mean = 31.9; standard deviation 8.7) years. There were 9 Palestinians and 1 Afghan participant; the remaining 240 were Lebanese
Only 3 participants were positive for HBs Ag, prevalence 1.2%. All of the HBV-positive PWIDs were male and Lebanese. Their mean age was 29.7 years. Although they appeared to be younger compared to other PWIDs seronegative for HBV (mean age = 31.91 years), the difference in age was not statically significant (P = 0.66).
We found 39 patients were positive for HCV antibody, prevalence 15.6%. One individual was co-infected with HBV. All were males, 3 were Palestinians and the remaining 36 were Lebanese. The mean age was 35.8 years. They were significantly older than the PWID population seronegative for HCV included in this study (P = 0.01).
The association between men who have sex with men, sex working, living with someone infected with HBV/HCV, sex with a person infected with HBV/HCV, history of blood transfusion, history of tattoos or piercings and the frequency of HBV and HCV in our PWIDs population showed that none of these risk factors significantly affected the prevalence of either infection (Table 1).
Among the study population, 83 participants reported sharing needles (33.2%). Two of the 3 HBV positive (66.7%) and 21 of the 39 HCV positive (53.8%) individuals had a history of sharing needles. We noted a significant association between needle sharing and the occurrence of HCV infection (P = 0.0029), but for HBV it was not significant (P = 0.22).
The mean duration of drug use was 125.0 weeks among our PWID population and 240.5 weeks among the HCV-positive participants, with a statistically significant association between longer duration of injection drug use and positive HCV serology (P = 0.001).
Concerning awareness of viral hepatitis, 54 PWIDs (21.6%) had never heard about HBV/HCV and the risk of transmission through contaminated blood or needle stick or unsafe sexual practices. These groups have a significant risk for infection with HCV (P = 0.01). Additionally, 164 PWIDs (65.6%) had never heard that HBV can be prevented by vaccination.
Only 45 PWIDs (18%) had received the HBV vaccine prior to our study. None of them tested positive for HBV.
Our study has provided an updated evaluation for HBV and HCV prevalence among PWIDs in Lebanon, i.e. 1.2% and 15.6%, respectively.
The prevalence of hepatitis B in this group of the population is lower than among the general population overall (1.74%) (8), but when compared to the same age group in the general population it is higher. Data on other high risk groups in Lebanon give a prevalence of 1.6% in haemodialysis patients (11), 0.99% in men who have sex with men (12), 0.28% in thalassaemic patients (13), 2.4% among prisoners secondary to unprotected sexual intercourse and tattooing as well as PWIDs (14), and 6.9% in HIV patients (15). A previous study on PWIDs in Lebanon found a prevalence of 0–5% for HBV infection (10).
This prevalence of HBV in the PWID population was lower than figures reported in the surrounding Middle Eastern countries (10). The prevalence of surface HBV antigen in a European review for PWIDs was available for 21 of the 34 countries; this ranged from 0% to 21.3% (16). In 10 countries it exceeded 10% (10). The HBs Ag prevalence in PWIDs was on average 9 times higher than in the general population (in 6 of the 8 countries that had both estimates available). In Romania and Ireland, HBs Ag estimate among the general population was higher (5.6% vs 4.7%, 0.1% vs 0.0%, respectively) (16).
In our study, only 18% of PWIDs were actually vaccinated against HBV while 65% did not know that HBV can be prevented by vaccination. Knowing the importance of vaccination in HBV prevention, these findings reflect a significant lack of education and awareness programmes for PWIDs in our country as well as an inefficient strategy for reaching and vaccinating this group.
The prevalence of anti-HCV antibody in our PWIDs was significantly higher than among the general Lebanese population and among haemodialysis patients and prisoners, making injection drug users the population group most affected. Mahfoud et al. reported a higher anti-HCV antibody prevalence reaching 52.8% in 106 Lebanese PWIDs (17). These individuals appeared to be older than our participants (mean age 40 years); more than 75% of the infected subjects had tattoos and almost all of them had a history of imprisonment. These factors may explain the higher results. Another study found that 27.6% of 309 PWIDs in Lebanon were anti-HCV positive and this was associated with incarceration, sharing/reusing needles and a history of sexually transmitted disease in the previous year. Both of these studies were conducted using the respondent driven sampling method, which can reach hidden populations such as PWIDs but at the expense of a somehow lower data accuracy in comparison with population based-surveys.
Seroprevalence rates for HCV among most PWID populations worldwide have often been reported to be higher than 50% (18); PWIDs are at high risk of HCV infection and are the key affected community globally. Prevalence and incidence of HCV up to 95% and 45/100 person-years respectively have been reported in PWIDs (19–23).
In a European review, an estimate of HCV Ab prevalence in PWIDs was available for 29 of the 34 countries covered, and ranged from 5.3% to 90%, on average 47 times higher than in the general population (in 13 countries that had both estimates available) (16). In 26 countries, there was a 60–80% prevalence of antibodies for HCV (anti-HCV) in PWIDs, while in 12 countries it was > 80% (10).
Based on our results, Lebanon is among the areas with the lowest prevalence for HBV and HCV in PWIDs compared with the surrounding countries in the Middle East and North Africa, where the rate of HBV and HCV infection has reached extremely high levels, e.g. in Libya and Egypt (10). Although it may reflect the low baseline endemicity in the general Lebanese population, other factors may be related to such a low rate such as the current drug and harm reduction policies. Lebanon is one of the 5 Arab countries providing a needle and syringe exchange programme along with Egypt, Morocco, Palestine and Tunisia (24). On the other hand, what characterizes Lebanon from the majority of Arab countries is that the Lebanese court imposes dependence treatment besides sanction for incarcerated drug users, thus, reducing their future risk of viral exposure (25). Furthermore, opioid substitution therapy (OST) was implemented in Lebanon in 2011 along with only 4 other Middle Eastern countries, Bahrain, Islamic Republic of Iran, Morocco and the United Arab Emirates. According to Lebanese Ministry of Public Health reports, the prevalence of HCV was reduced from 27% to 16% in 2014, although a clear causal correlation could not be confirmed between the reduction and OST implementation (24). Harm reduction strategies for PWIDs such as needle and syringe programmes and OST had limited impact on HCV prevention; a combination of interventions is often needed (26).
Studies of the effects of exposure to preventive interventions, including drug treatment (27), needle and syringe distribution (28), harm reduction and education programmes (29), and bleach disinfection (30), have failed to provide conclusive evidence of efficacy. While a recent Dutch study showed significant protective effects of comprehensive harm reduction (needle and syringe distribution and methadone treatment) on HIV and HCV incidence (31), a peer education intervention randomized controlled trial found reductions in risk behaviour but no difference in HCV incidence (18.4/100 person-years) between the intervention and control groups (32). These data suggest that further decreases in incidence are unlikely to be achieved without large scale and effective biomedical interventions, notably preventive vaccines (33).
In our study, sharing needles was significantly associated with a higher rate of infection. In a review and meta-analysis of the association between self-reported sharing of needles/syringes and hepatitis C virus prevalence and incidence among people who inject drugs, pooled prevalence and incidence of HCV was 59% and 11% among PWIDs who reported never and not recently sharing needles/syringes, respectively, with odds ratio 3.3 (95% CI: 2.4–4.6), comparing HCV infection among those who ever (or recently) shared needles/syringes relative to those who reported never (or not recently) sharing (34).
Programmes to provide PWIDs with access to sterile needles and syringes (NSPs) are generally considered to be among the most effective means of reducing HIV and HCV transmission among PWIDs (35).
A minimum of 20 to 30 syringes per PWID annually may be needed to affect HIV and/or HCV transmission in a population of PWIDs. Reaching high coverage levels (20–30 syringes per PWID per year and at least 50% of the PWIDs population) for NSP is very likely to be followed by reductions in HIV and/or HCV infection in the local population of PWIDs (36).
In this study, HCV positive PWIDs were found to be significantly older than the general PWID population. Similarly, we noted a strong correlation between the duration of their drug injection practices and anti-HCV positivity. Backmund et al. reported a correlation between older age, longer duration of drug use and positivity of HCV serology among drug users (37).
Further analysis of the study population has showed that a low index of awareness of HCV and mode of transmission was associated with a higher prevalence of infection. As limiting exposure to HCV is the only way of preventing viral transmission, it is of extreme importance to implement targeted educational programmes for all PWIDs in Lebanon and to inform them about the different modes of transmission as well as the possible methods of prevention.
Our study has some limitations. As the estimated drug user population in Lebanon is about 10 000–15 000 individuals (38), of whom 35% are PWIDs (39); our study population provides an estimation of HCV and HBV serology in this population group followed by the nongovernmental organizations and it could result in an underestimate of the exact prevalence of HCV and HBV in this population. Furthermore, illicit drug users are a hard to reach population as they tend to deny and hide their practices, which may be a basis for contempt in Lebanese society. Nor did we report on whether our PWIDs had a history of imprisonment, where viral spread may occur more frequently.
Global hepatitis report 2017. Geneva: World Health Organization; 2017:83 (http://www.who.int/iris/handle/10665/255016, accesed 25 August 2019).
Tohme RA, Holmberg SD. Transmission of hepatitis C virus infection through tattooing and piercing: a critical review. Clin Infect Dis. 2012;54(8):1167–78. doi:10.1093/cid/cir991
Shepard CW, Finelli L, Alter MJ. Global epidemiology of hepatitis C virus infection. Lancet Infect Dis. 2005;5(9):558–67. doi:10.1093/cid/cir991
Mohsen A, Bernier A, LeFouler L, Delarocque-Astagneau E, El-Daly M, El-Kafrawy S, et al. Hepatitis C virus acquisition among Egyptians: analysis of a 10-year surveillance of acute hepatitis C. Trop Med Int Health. 2015;20(1):89–97. doi:10.1111/tmi.12410
Khan AJ, Luby SP, Fikree F, Karim A, Obaid S, Dellawala S, et al. Unsafe injections and the transmission of hepatitis B and C in a periurban community in Pakistan. Bull World Health Organ. 2000;78(8):956–63. PMID:10994278
Mitruka K, Tsertsvadze T, Butsashvili M, Gamkrelidze A, Sabelashvili P, Adamia E, et al. Launch of a nationwide hepatitis C elimination program--Georgia, April 2015. MMWR Morb Mortal Wkly Rep. 2015;64(28):753–7. PMID:26203628
United Nations Office on Drugs and Crime. World Drug Report 2013. New York: United Nations; 2013 (Sales No. E.13.XI.6).
Abou Rached A, Abou Kheir S, Saba J, Ammar W. Epidemiology of hepatitis B and hepatitis C in Lebanon. Arab J Gastroenterol. 2016;17(1):29–33. doi:10.1016/j.ajg.2016.01.002
Abou Rached A, Yaghi C, Khalil L, Saba J, Ammar W. Prevalence of hepatitis C virus genotypes and subtypes in Lebanese population and major high risk groups. Arab J Gastroenterol. 2017;18(2):114–7. doi:10.1016/j.ajg.2017.05.001
Nelson PK, Mathers BM, Cowie B, Hagan H, Des Jarlais D, Horyniak D, et al. Global epidemiology of hepatitis B and hepatitis C in people who inject drugs: results of systematic reviews. Lancet. 2011;378(9791):571–83. doi:10.1016/S0140-6736(11)61097-0
Abou Rached A, El Khoury L, El Imad T, Geara AS, Jreijiry J, Ammar W. Incidence and prevalence of hepatitis B and hepatitis C viruses in hemodialysis patients in Lebanon. World J Nephrol. 2016;5(1):101–7. doi:10.5527/wjn.v5.i1.101
Kassak K, Mahfoud Z, Kreidieh K, Shamra S, Afifi R, Ramia S. Hepatitis B virus and hepatitis C virus infections among female sex workers and men who have sex with men in Lebanon: prevalence, risk behaviour and immune status. Sex Health. 2011;8(2):229–33. doi:10.1071/SH10080
Othman AA, Eissa AA, Markous RD, Ahmed BD, Al-Allawi NA. Hepatitis C virus genotypes among multiply transfused hemoglobinopathy patients from Northern Iraq. Asian J Transfus Sci. 2014;8(1):32–4. doi:10.4103/0973-6247.126687
Mahfoud Z, Kassak K, Kreidieh K, Shamra S, Ramia S. Prevalence of antibodies to human immunodeficiency virus (HIV), hepatitis B and hepatitis C and risk factors in prisoners in Lebanon. J Infect Dev Ctries. 2010;4(3):144–9. PMID:20351454
Ramia S, Mokhbat J, Ramlawi F, El-Zaatari M. Occult hepatitis B virus infection in HIV-infected Lebanese patients with isolated antibodies to hepatitis B core antigen. Int J STD AIDS. 2008;19(3):197–9. doi:10.1258/ijsa.2007.007200
Hahne SJ, Veldhuijzen IK, Wiessing L, Lim TA, Salminen M, Laar M. Infection with hepatitis B and C virus in Europe: a systematic review of prevalence and cost-effectiveness of screening. BMC Infect Dis. 2013;13:181. doi:10.1186/1471-2334-13-181
Mahfoud Z, Kassak K, Kreidieh K, Shamra S, Ramia S. Distribution of hepatitis C virus genotypes among injecting drug users in Lebanon. Virol J. 2010;7:96. doi:10.1186/1743-422X-7-96
Malekinejad M, Navadeh S, Lotfizadeh A, Rahimi-Movaghar A, Amin-Esmaeili M, Noroozi A. High hepatitis C virus prevalence among drug users in Iran: systematic review and meta-analysis of epidemiological evidence (2001–2012). Int J Infect Dis. 2015;40:116-30. doi:10.1016/j.ijid.2015.09.022
Hagan H, Pouget ER, Des Jarlais DC, Lelutiu-Weinberger C. Meta-regression of hepatitis C virus infection in relation to time since onset of illicit drug injection: the influence of time and place. Am J Epidemiol. 2008;168(10):1099–109. doi:10.1093/aje/kwn237
Maher L, Jalaludin B, Chant KG, Jayasuriya R, Sladden T, Kaldor JM, et al. Incidence and risk factors for hepatitis C seroconversion in injecting drug users in Australia. Addiction. 2006;101(10):1499–508. doi:10.1111/j.1360-0443.2006.01543.x
Thorpe LE, Ouellet LJ, Hershow R, Bailey SL, Williams IT, Williamson J, et al. Risk of hepatitis C virus infection among young adult injection drug users who share injection equipment. Am J Epidemiol. 2002;155(7):645–53. doi:10.1093/aje/155.7.645
Hahn JA, Page-Shafer K, Lum PJ, Bourgois P, Stein E, Evans JL, et al. Hepatitis C virus seroconversion among young injection drug users: relationships and risks. J Infect Dis. 2002;186(11):1558–64. doi:10.1086/345554
Page K, Hahn JA, Evans J, Shiboski S, Lum P, Delwart E, et al. Acute hepatitis C virus infection in young adult injection drug users: a prospective study of incident infection, resolution, and reinfection. J Infect Dis. 2009;200(8):1216–26. doi:10.1086/605947
El-Khoury J, Abbas Z, Nakhle PE, Matar MT. Implementing opioid substitution in Lebanon: inception and challenges. Int J Drug Policy. 2016;31:178–83. doi:10.1016/j.drugpo.2016.02.015
Al-Shazly F, Tinasti K. Incarceration or mandatory treatment: Drug use and the law in the Middle East and North Africa. Int J Drug Policy. 2016;31:172–7. doi:10.1016/j.drugpo.2016.02.012
Hagan H, Pouget ER, Des Jarlais DC. A systematic review and meta-analysis of interventions to prevent hepatitis C virus infection in people who inject drugs. J Infect Dis. 2011;204(1):74–83. PMID:21628661
Havinga P, van der Velden C, de Gee A, van der Poel A. Differences in sociodemographic, drug use and health characteristics between never, former and current injecting, problematic hard-drug users in the Netherlands. Harm Reduct J. 2014;11:6. doi:10.1186/1477-7517-11-6
Palmateer N, Kimber J, Hickman M, Hutchinson S, Rhodes T, Goldberg D. Evidence for the effectiveness of sterile injecting equipment provision in preventing hepatitis C and human immunodeficiency virus transmission among injecting drug users: a review of reviews. Addiction. 2010;105(5):844–59. doi:10.1111/j.1360-0443.2009.02888.x
Wright NM, Tompkins CN. A review of the evidence for the effectiveness of primary prevention interventions for hepatitis C among injecting drug users. Harm Reduct J. 2006;3:27. doi:10.1186/1477-7517-3-27
Kapadia F, Vlahov D, Des Jarlais DC, Strathdee SA, Ouellet L, Kerndt P, et al. Does bleach disinfection of syringes protect against hepatitis C infection among young adult injection drug users? Epidemiology. 2002;13(6):738–41. doi:10.1097/01.EDE.0000032363.40442.1
Van Den Berg C, Smit C, Van Brussel G, Coutinho R, Prins M, Amsterdam C. Full participation in harm reduction programmes is associated with decreased risk for human immunodeficiency virus and hepatitis C virus: evidence from the Amsterdam Cohort Studies among drug users. Addiction. 2007;102(9):1454–62. doi:10.1111/j.1360-0443.2007.01912.x
Garfein RS, Golub ET, Greenberg AE, Hagan H, Hanson DL, Hudson SM, et al. A peer-education intervention to reduce injection risk behaviors for HIV and hepatitis C virus infection in young injection drug users. AIDS. 2007;21(14):1923–32. doi:10.1097/QAD.0b013e32823f9066
Hahn JA, Wylie D, Dill J, Sanchez MS, Lloyd-Smith JO, Page-Shafer K, et al. Potential impact of vaccination on the hepatitis C virus epidemic in injection drug users. Epidemics. 2009;1(1):47–57. doi:10.1016/j.epidem.2008.10.002
Palmateer NE, Hutchinson SJ, Innes H, Schnier C, Wu O, Goldberg DJ, et al. Review and meta-analysis of the association between self-reported sharing of needles/syringes and hepatitis C virus prevalence and incidence among people who inject drugs in Europe. Int J Drug Policy. 2013;24(2):85–100. doi:10.1016/j.drugpo.2012.08.006
WHO, UNODC, UNAIDS technical guide for countries to set targets for universal access to HIV prevention, treatment and care for injecting drug users. 2009, Geneva: World Health Organization; 2009.
Vickerman P, Hickman M, Rhodes T, Watts C. Model projections on the required coverage of syringe distribution to prevent HIV epidemics among injecting drug users. J Acquir Immune Defic Syndr. 2006;42(3):355–61. doi:10.1097/01.qai.0000219788.73539.47
Backmund M, Reimer J, Meyer K, Gerlach JT, Zachoval R. Hepatitis C virus infection and injection drug users: prevention, risk factors, and treatment. Clin Infect Dis. 2005;40(Suppl. 5):S330–5. doi:10.1086/427475
National health statistics report. Beirut: Ministry of Public Health; 2012.-
Karam EG, Ghandour LA, Maalouf WE, Yamout K, Salamoun MM. A rapid situation assessment (RSA) study of alcohol and drug use in Lebanon. J Med Liban. 2010;58(2):76-85.


Clinical databases, properly used, have the potential to contribute to quality improvement.
Over the last decade there has been increasing pressure to make health care more accountable and to identify variations suggesting poor quality care which can be improved. While special studies can be conducted with these aims in mind, quality improvement activity will only become part of the fabric of health services if it can draw on data that are routinely collected. In North America extensive hospital data have been available; however, because they are generated as byproducts of administrative systems collected for other (usually financial) purposes, they are severely limited. Without the ability to adjust for patient case mix, for example, incorrect inferences about the cause of variations in patient outcomes are likely.1 The sort of detailed clinical data needed to make sensible analyses of patient outcomes are rarely generated from routine systems, and it may not be feasible or cost effective for this to be a core administrative function. Instead, bespoke clinical databases have been developed in parallel, often as the result of the cooperative efforts of clinicians seeking reliable data on their practice and ways in which quality might be monitored and improved. However, as one finds with other sources of data collection, the validity and reliability of clinical databases are variable. As the number of such databases grows, it is important to ensure that we have enough information to be able to interpret the results of studies based on them and to decide if they are fit for the purpose. As with the conduct and reporting of trials2 and systematic reviews,3 we need common high standards for establishing, running and reporting clinical databases, an appraisal tool to assess the degree to which these standards are being applied, and an accessible source of information on clinical databases and their quality.
The Directory of Clinical Databases (DoCDAT) described by Black and Payne4 in this issue of QSHC is the first important step in providing such a resource in the UK. By providing key information on and critical appraisals of clinical databases which provide individual data, it will help people to find databases suitable to their needs and, more importantly, it will act as a pressure to improve standards. Inevitably there are ways in which this resource will need to mature. The methods of development and validation of the assessment instrument are probably not as robust or as explicit as that developed for the reporting of trials or systematic reviews.2,3 Ideally there should be double checking of the appraisals and independent verification of the claims of the database custodians. There is also room for further conceptual development, possibly including a clearer separation of information and criteria about the internal validity of the data (accuracy and susceptibility to bias), usefulness for comparative work, and national representativeness. With sufficient investment this directory could develop into an important national and possibly international resource.
While the development and proliferation of clinical databases will inevitably contribute to audit and research, there is a danger that they will be misused. In England, for example, the Department of Health has made a commitment to publish cardiac surgeon specific mortality data based on the UK Cardiac Surgical register developed by the Society of Cardiac Surgeons. Sampling of this database revealed it to be both incomplete and unreliable in its ability to yield accurate, risk adjusted outcomes data.5 Thus, publication is likely to result in misleading information about individual performance entering the public domain, with potentially damaging results. Even if the data were accurate and risk adjustment sufficient, it is still not obvious that the individual surgeon is the right unit of analysis or that publishing the data is the optimal way to promote quality improvement. Clinical databases, if properly used, have the potential to contribute to quality improvement. However, if they are used by those who lack sufficient scientific intelligence or are exploited for political ends, then clinicians will become cynical, data quality will fall, and the public interest will not be well served.
Sowden A, Sheldon TA. Does volume really affect outcome? Lessons from the evidence. J Health Serv Res Policy1998;3:187–90.
Moher D, Schulz K, Altman D. The Consort statement: revised recommendations for improving the quality of reports of parallel group randomised trials. JAMA2001;285:1987–91.
Moher D, Cook DJ, Eastwood S, et al. Improving the quality of reports of meta-analyses of randomised controlled trials: the QUORUM statement. Quality of reporting meta-analysis. Lancet1999;354:1896–900.
Black N, Payne M. Directory of clinical databases: improving and promoting their use. Qual Saf Health Care2003;12:348–52.
Fine L, Keogh BE, Cretin S, et al. How to evaluate and improve the quality and credibility of an outcomes database: validation and feedback study on the UK cardiac surgery experience. BMJ2003;326:25–8.


Behold! The TCG has been transmuted to the DS!
A painstakingly accurate translation of the popular Fullmetal Alchemist trading card series by Press Pass, Inc (formerly JoyRide Entertainment), the Fullmetal Alchemist Trading Card game brings the collectible strategy game to the Nintendo DS with nearly 500 cards, a variety of play modes and extensive touch screen support.
Featuring the most popular characters from one of the top-rated anime programs on Adult Swim, the Fullmetal Alchemist Trading Card Game allows you to battle against both AI-controlled opponents and friends via the Nintendo Wi-Fi Connection.
• Extensive Touch Screen support: Shuffle and move cards with the DS stylus. You can even tear open booster packs!
Fullmetal Alchemist Trading Card Game has a simple goal: Beat your opponent to the Philospher's Stone. How you do that is by marching slowly through a complex but gorgeous trading card game converted for play on the Nintendo DS. Both extremely deep and extremely challenging, this game is definitely not for the casual fan.
Those who are familiar with the trading card game will feel very much at home on this DS game. The gilt-edged graphics evoke the atmosphere of the Fullmetal Alchemist world very well. The card game itself definitely makes you feel as though you're on the quest for the stone with the Elric brothers.
If you like Fullmetal Alchemist but aren't familiar with the trading card game you're in for a demanding learning process that's no doubt as difficult as learning how to become an alchemist would be in real life! Your goal: Be the first to find nine clues that lead to the Philosopher's Stone.
Get clues by winning locations, which are randomly drawn cards with varying victory conditions, effects, and amount of clue points. Depending on which location is drawn, your hand could have a distinct advantage or disadvantage. Win locations by attacking your opponent with your leader and additional characters you recruit. Also, you can "attach" special equipment and abilities to your characters for a bewildering array of deck-building strategies.
The exhaustive support includes pages upon pages of online instructions, a step-by-step tutorial, and even a hint system when you're playing actual matches. But all of this just blunts the effect of having to play a game with seemingly endless phases and subphases that often feel redundant.
The mechanics of card viewing and playing and viewing your opponent's table takes a lot of getting used to. Each card is represented with a tiny unreadable picture of itself. Loading a card's details takes longer than it should.
Once you learn how to play, you can join opponents online and play fantasy matches in which you have access to every card in the game. No doubt this is the easiest way to experience the game at its fullest since you don't have to collect any cards on your own to play them in this mode.
If you already enjoy the trading card game, then you'll love this game. If not, then prepare yourself for a steep learning curve or -- better yet -- get a buddy to show you the ropes. The reward for learning how to play the game is an enormously engrossing trading-card game experience that's steeped in Fullmetal Alchemist goodness.


text:
Home TV Show
Blue Bloods Season 13 Part 2: Is It Coming In January 2023?
"Blue Bloods" is a police procedural television series that was created by Robin Green and Mitchell Burgess.
Showbiz Junkies
Blue Bloods Season 13 Part 2/ Episode 9 is all set to be released next year in January 2023, and here are the latest updates of the series you need to know.
"Blue Bloods" is a police procedural television series that was created by Robin Green and Mitchell Burgess. The story focuses on the Reagan family and their life in New York City.
With Frank Reagan, the father of the Irish-American Catholic family, serving as the NYPD Commissioner, the family has a long history of involvement in the city's law enforcement.
Other members of his family, notably his eldest son Danny Reagan, who works as a detective, is also employed by the system in a variety of positions.
As the series goes on, Jamie, Frank's youngest son, progresses to the rank of sergeant. Erin, the only child of the Police Commissioner, has the position of associate district attorney.
Since it was initially made available to the public on September 24, 2010, the show has amassed a significant number of viewers. Fans of the show are hungry for more of the family-focused drama as Season 13 Part 1 of the series, comes to an end. So, here's everything we know so far about "Blue Blood Season 13 Part 2".
Blue Bloods Season 13 Part 2 Release Date: Is It Coming In January 2023?
Yes, Blue Bloods Season 13 Part 2/ Episode 9 will debut in January 2023. On October 7, 2022, the first episode of the thirteenth season of the police procedural drama series Blue Bloods, which was produced by Robin Green and Mitchell Burgess, debuted on CBS.
Part 2 of the show "Blue Bloods Season 13" is scheduled to premiere on January 6, 2023. This will be episode 9 of the show and is titled "Nothing Sacred." The upcoming season of the show has piqued the interest of the show's fans.
Also Read: East New York Part 2 Release Date, Cast, Plot, Trailer, and More
Major Cast Members In The Show Blue Bloods Season 13 Part 2
The major casts members who are expected to reprise their roles in the upcoming part of "Blue Bloods Season 13 Part 2" includes the following:
1. Tom Selleck will portray the role of Frank Reagan
2. Donnie Wahlberg will portray the role of Danny Reagan
3. Bridget Moynahan will portray the role of Erin Reagan
4. Will Estes will portray the role of Jamie Reagan
5. Len Cariou will portray the role of Henry Reagan
6. Marisa Ramirez will portray the role of Marisa Baez
7. Vanessa Ray will portray the role of Eddie Janko
Also Read: Anne Rice's Mayfair Witches: Release Date, Cast, Plot, And More!
Official Synopsis Of The Series Blue Bloods
According to the official description of the show on the CBS website, Blue Bloods is a drama about a multi-generational family of police officers who are committed to New York City law enforcement.
The head of the Reagan family, as well as the New York Police Department, is Frank Reagan. Even while dealing with the politics that plagued his unabashedly forthright father, Henry, throughout his tenure as Chief, he managed his department with the same level of tact and diplomacy that he used to manage his family.
Also Read: BattleBots Season 8: Release Date, Cast, Plot, And More!
A Brief Recap Of Season 12
The audience has always been captivated by the police show's compelling plot. Season 12 depicts Frank and Mayor Chase engaged in a power struggle that results in unethical decisions on both sides, with the season finale focusing on a dubious piece of legislation.
The other Reagans, particularly Jamie, must balance their personal and professional life while maintaining a delicate balance.
Also Read: Call Me Kat Season 3 Part 2 Release Date, Cast, Plot, Trailer, and Everything you need to know
Expected Plotline For Blue Bloods Season 13 Part 2
As the members of the Reagan family attempt to deal with the obstacles that have been thrown at them, the next part of the show will most likely feature more of the same and offer the audience new tales that are also similar to past events.
Each character, from Danny's investigation to Frank's bureaucratic issues, shows the audience a distinct facet of the legal system.
Hopefully, Season 13 Part 2 will continue to depict their diverse work lives as well as the Sunday brunches that highlight the cohesiveness of the family as a whole.
Erin Reagan running for district attorney and how that affects her relationship with Frank and the rest of the family are two major plotlines we can expect to see in Season 13 Part 2. Each episode deals with different cases and family relationships.
Where Can You Watch Blue Bloods Season 13?
Depending on the viewer's preference and the subscription plan they choose, Blue Bloods Season 13 and all past seasons will be accessible to stream on the official website of CBS as well as other streaming services like FuboTV, Paramount+, and Hulu Plus.
Blue Bloods is also available for rental or purchase on Google Play, iTunes, Amazon Prime Video, and Vudu. The series can also be accessed for free, depending on the viewer's location, on either Pluto or CBS.
Tags: Abbott ElemenBlue Bloods Season 13 Part 2Blue Bloods Season 13 Part 2 ArriveBlue Bloods Season 13 Part 2 PlotBlue Bloods Season 13 Part 2 PremiereBlue Bloods Season 13 Part 2 Release DateBlue Bloods Season 13 Part 2 Trailertary Season 2 Part 2 Cast
Om Prakash Kaushal


Summer might be over, but with Thanksgiving and Christmas/New Year coming up, you might be thinking of visiting family or friends or just need to get away from it all. For any holiday or weekend break, your greatest expense will probably be paying for travel to your chosen destination. To help you, we have compiled our top tips to buying the cheapest possible flights. Whether you are planning your trip months in advance or on the lookout for last-minute offers, we have the solution.
You can usually pick up cheaper air fares if you book your air tickets in advance. The optimum time to buy depends on your destination. Generally you should start looking around for plane tickets 70 days beforehand for domestic flights and 21-121 days before your desired travel date for international destinations.
Most people know how to use the search engine on a flight map or travel site. However, don't forget to use more than one because some don't consider international air carriers or budget airlines. Using several sites will give you an overview of everything that's available and increase your chances of finding affordable tickets.
Some passengers aren't big fans of budget airlines because they've cut down their service to the bare essentials, but they can be the cheapest. If you go for a budget airline, don't forget to check their extra charges.
Some charge for everything from printing your boarding pass to extra fees for carry-ons or checked-in luggage. Make sure you know what you're paying for to avoid an unpleasant shock at the airport which will make your cheap ticket not so cheap after all.
Larger airlines can be as economical as budget airlines if you know how they operate. You should sign up for a mailing list from the major airlines. As they review the capacity of their planes, they often release details of last-minute special offers usually at the beginning of each week. These discounted tickets are often available for a brief window of only 24-36 hours and can be easily missed online. With your advanced warning, you'll be able to snap them up quickly. As well as email notifications, you should follow your favorite airlines on social media to receive information about other last-minute deals.
It might also be worth signing up with airline's reward programs. You may be entitled to free flights, upgrades and even free companion tickets through air miles. Many domestic airlines work in close cooperation with other foreign airlines. Find out who their partners are and you'll be able to use the points you earn for international travel too.
If you have your heart set on a specific destination, you'll find it more difficult to find cheaper flights. However, if you just need to get away and are more flexible, you're sure to find tickets which are more economical.
Even if you have a specific place to go, maybe because you're visiting relatives, all is not lost. You should try to be flexible about the airports you use. When searching online, don't limit yourself to the airport which is nearest your home or your travel destination. If you expand your search, you might find special offers leaving from, or arriving at, airports 50-100 miles away. Although it adds to your journeying times, the potential savings could cover your hire car and still leave you some extra cash in your pocket.
Investigate the possibility of not flying direct and using different airlines for each leg of the journey. It will take longer to research and add to your traveling time, but it will save you money. If you break your journey in this way, don't forget to allow at least 3 hours at your stopover to be sure of making your connecting flight. Also, be flexible about when you travel. If you travel at times and days when no one else is interested, you'll be sure to pick up a bargain. For example, flying on a red eye or at the crack of dawn will give you more options to make savings while it can be much easier to find cheaper seats on mid-week departures (especially Tuesdays and Wednesdays) rather than on the weekends.
If you're a full-time student or under 26, you might be entitled to a student discount. This can cut 20-30% off the price of a standard air fare. You should contact the airlines directly to see if you might be eligible for other discounts. These include discounts for government employees and military personnel, seniors, and passengers traveling in groups.Discounted fares may only be available on certain routes and/or at select times.
Investigate the possibility of not flying direct and using different airlines for each leg of the journey as this will save you money.
Did you know that some airlines still offer bereavement fares if you're traveling to attend a funeral of a loved one? These tickets have to be booked by phone directly with the airline and are only valid for 7-14 days. You might also be asked to supply details of your relative's primary care physician and/or the contact details of the funeral home. You could also use the rewards from your credit card sign-up bonus or from online shopping, surveys or other special deals to reduce the price of your air travel.
Airlines use complicated pricing algorithms to set their air fares which take into consideration such factors as the time of year (including whether there are any major holidays coming up); passenger demand; time of day; the weather and their competitors' prices of air fares. However, there are ways to beat the system and make savings on how much traveling by plane costs you.
Borrowing For Home Improvements – What Are Your Options?


text:
WICHITA INDIANS
The Wichita band of Indians was one of several bands that composed the Wichita confederacy. The name Wichita is first found in the early seventeenth century in historical records of French traders, who used the word Ousitas to identify one band of Indians who lived near the Arkansas River in present Oklahoma. In the nineteenth century the name came to be used to refer to several confederated bands who recognized a common progenitor and had similar traditions and culture. The Wichita called themselves Kitikiti'sh, meaning "raccoon eyes," because the designs of tattoos around the men's eyes resembled the eyes of the raccoon. In central Kansas in 1541 the Coronado expedition visited Indians whom Coronado called Quiviras and who have been identified by archeological and historical studies as Wichitas. By 1719 these people had moved south to Oklahoma and were called Ousitas by the French trader Jean Baptiste Bénard de La Harpe. From the 1750s to 1810 one band of the Wichita Indians was on the Red River north of the site of present Nocona, Texas. The Wichitas, during this period, were prominent middlemen in the trade between the Comanches on the plains and Louisiana merchants and were at the zenith of their power and prestige. Warriors of the band accompanied the Comanches in the attack on the Spanish Santa Cruz de San Sabá Mission in 1758, and the Red River villages withstood a retaliatory strike by the Spanish in 1759. In 1772 Athanase de Mézières, commandant of the Spanish post at Natchitoches, Louisiana, visited a band of Quedsitas on the upper Brazos River; in 1784 Texas Governor Domingo Cabello y Robles reported Guachita depredations in the San Antonio area; and periodically, beginning in 1787, Guichitas or Huichitas regularly visited San Antonio. The America agent at Natchitoches in 1805 identified one of the Red River villages as the Wicheta.
The Wichita as a distinct band declined after the abandonment of the Wicheta village about 1810, although periodically thereafter until the 1850s villages of Wichita, sometimes called Towiach or Tawehash, were located on the Wichita and Brazos rivers. United States dragoons visited a Wichita village on the north fork of the Red River west of the Wichita Mountains in Oklahoma in 1834, and for years afterward the Wichita lived in the vicinity of the mountains, including the site where Fort Sill was later established and Rush Springs, where their village was destroyed in 1858 by a United States military force pursuing hostile Comanches who were camped nearby. Survivors joined remnants of other bands of the Wichita confederacy on the Washita River in 1859 and, when the Civil War broke out, fled with them to Kansas. After the Civil War they were relocated with their kinsmen, the Wacoes, Tawakonis, and Kichais, and other associated tribes on the Wichita Reservation near present Anadarko, Oklahoma. The reservation was opened to allotment in an agreement with the Wichitas and affiliated bands in 1891. In the 1990s the Wichita group still existed as a federally recognized governmental entity.
Significant and continuing influence of the name Wichita is found in North Texas in the name of a river, the name of a county, and the name of a prominent city, Wichita Falls. Wichita, Kansas, owes its name to the early presence of the tribe in that area. The Wichitas were dependent on both agriculture and hunting for subsistence. They lived in villages of dome-shaped grass houses, farmed extensive fields of corn, tobacco, and melons along the streams where they made their homes, and left their villages for annual hunts during which time they cached their stores of agricultural goods in the ground along the banks of streams. Slightly darker in color than other native people of Texas, the Wichitas were distinguished by their elaborate tattoos, the scalp-lock worn by the men, and the custom of the women to remain nude from the waist up. They had little ritualistic religion, but were impressed by the natural forces around them and gave expression to them in an elaborate mythology. Although warriors by tradition, the men, as well as women, tended to be friendly toward strangers, avoided confrontations unless provoked, and were noted for their hospitality. Their villages were landmarks on the southern plains, were well laid out, and were clearly distinguishable by their grass lodges and nearby fields.


This composition explores ambient and rhythmic overtones with a continuous pulse created through improvisations with clarinets, shakuhachi and percussion.
Harmonics are used by the clarinet and shakuhachi playing multiphonics, subtones, pure tones and whistle tones throughout.
The second movement takes the material of these improvisations on clarinets, shakuhachi and percussion and creates its own voice of illuminated sound.


SWEETWATER PLUMBING Heating Contractors - SWEETWATER PLUMBING FALLON, NV Electric Wall & Radiant Heat Systems Online.
Hello! You have successfully navigated through our Heating Contractors section to find SWEETWATER PLUMBING in FALLON, NV heating contractor.
You will find any heating area of specialty for SWEETWATER PLUMBING listed as well as the heating expert's address and phone number. Additional information about SWEETWATER PLUMBING will also be displayed if available.


text:
Action to stop future flooding
Published: 12:56 Monday 31 December 2018
An emergency sandbag storage unit has been installed at Glenburn/Highfield Road in Magherafelt following last summer's flooding.
DUP Mid Ulster MLA Keith Buchanan and Magherafelt Councillor Paul McLean both welcomed the development.
A container has also been requested in the Cookstown area and this is to be progressed in the New Year.
Mr Buchanan and Cllr McLean said they have been working towards getting a storage unit at Glenburn/Highfield Road in order to "relieve pressure" in the event of future flooding.
"Residents in the area also need reassurance that the sandbags are there and accessible if needed," said Mr Buchanan. "Sudden, unpredictable changes in weather can lead to flash flooding.
"Unexpected flooding events like this can cause havoc to homes and businesses and serious amounts of damage can occur very quickly."
Glenburn/Highfield along with Westland Road/Rainey Street and Sandy Braes have been prone to flash flooding in recent times.
Last June the Meadowlane shopping centre was flooded at Moneymore Road.
At least nine businesses were flooded during a sudden downpour, which forced an evacuation of the centre. An underground car park became flooded before water poured through the doors into the shopping mall.
Most business owners worked through the night to get back up and running for trade the next day.
But the event brought demands for action to prevent future floods from engulfing the shopping complex.
Both politicians have since been working to have the drainage system upgraded on Moneymore and Westland Road.
It is understood that a report is due shortly from Rivers Agency regarding the drainage infrastructure in Magherafelt. It is hoped that this will provide some pointers as to how best to prevent the occurrence of flash floods in the town.
Call for moratorium on precious mineral mining in Sperrins
Mr Buchanan invited any residents in the Magherafelt area whose home or premises require emergency sandbags to get in contact with Mid Ulster Council, Cllr McLean or himself to see if they can be of assistance.
Magherafelt pledge to follow up public calls for road safety operations


text:
_Nigeria Politics
_#NigeriaDecides
Mate-Match
Exlink Autos
Home / news / politics / Buhari Suspends CJN, Walter Onnoghen, Appoints Justice Tanko Muhammed, States Reasons
Buhari Suspends CJN, Walter Onnoghen, Appoints Justice Tanko Muhammed, States Reasons
Exlink Lodge Saturday, January 26, 2019 news, politics
Nigeria President, Muhammadu Buhari has suspended the embattled Chief Justice of Nigeria (CJN), Justice Walter Onnoghen, pending the completion of his trial at the Code of Conduct Tribunal. The CJN has been battling the executive arm of the government for more than a month now, and president Buhari being an ardent "hater" of democracy and clearly favors tyranny have decided to go against the law to suspend the judicial head.
He announced the suspension at the Council Chamber of the Presidential Villa, Abuja He said the suspension followed the order of the CCT directing him to suspend Onnoghen, pending the completion of his trial. The President however swore in Justice Ibrahim Tanko Mohammed as the acting CJN. Mohammed who hails from Bauchi state is the most senior justice of the Supreme Court.
Below is the full speech Mr. President gave on the reasons necessitating the suspension of Nigeria's judicial head, Onnoghen...
"Fellow Nigerians,
A short while ago, I was served with an Order of the Code of Conduct Tribunal issued on Wednesday 23rd January 2019, directing the suspension of the Chief Justice of Nigeria, Honourable Justice Walter Nkanu Samuel Onnoghen from office pending final determination of the cases against him at the Code of Conduct Tribunal and several other fora relating to his alleged breach of the Code of Conduct for Public Officers.
2. The nation has been gripped by the tragic realities of no less a personality than the Chief Justice of Nigeria himself becoming the accused person in a corruption trial since details of the petition against him by a Civil Society Organization first became public about a fortnight ago.
3. Although the allegations in the petition are grievous enough in themselves, the security agencies have since then traced other suspicious transactions running into millions of dollars to the CJN's personal accounts, all undeclared or improperly declared as required by law.
4. Perhaps more worrisome is the Chief Justice of Nigeria's own written admission to the charges that he indeed failed to follow the spirit and letter of the law in declaring his assets, citing ''mistake'' and ''forgetfulness'' which are totally unknown to our laws as defences in the circumstances of his case.
5. One expected that with his moral authority so wounded, by these serious charges of corruption, more so by his own written admission, Mr. Justice Walter Onnoghen would have acted swiftly to spare our Judicial Arm further disrepute by removing himself from superintending over it while his trial lasted.
6. Unfortunately, he has not done so. Instead, the nation has been treated to the sordid spectacle of a judicial game of wits in which the Chief Justice of Nigeria and his legal team have made nonsense of the efforts of the Code of Conduct Tribunal to hear the allegation on merit and conclude the trial as quickly as possible considering the nature of the times in which we live.
7. Whether deliberately or inadvertently, we have all seen the full weight of the Chief Justice of Nigeria descend on the tender head of one of the organs of justice under his control. There is simply no way the officers of that court, from the Chairman to the bailiffs, can pretend to be unaffected by the influence of the leader of the Judiciary.
8. Not only the trial court, but others have been put on the spot. Practically every other day since his trial commenced, the nation has witnessed various courts granting orders and counter-orders in favour of the Chief Justice of Nigeria, all of them characterised by an unholy alacrity between the time of filing, hearing and delivery of judgment in same.
9. The real effect has been a stalling of the trial of Justice Onnoghen, helped along by lawyers who insist that these orders, whether right or wrong are technically valid, and must be obeyed till an appellate Court says otherwise. No doubt, that it is the proper interpretation, but is it the right disposition for our nation?
10. Nigeria is a constitutional democracy and no one must be, or be seen to be, above the law. Unfortunately, the drama around the trial of the Chief Justice of Nigeria has challenged that pillar of justice in the perception of the ordinary man on the street. For it is certain that no ordinary Nigerian can get the swift and special treatment Justice Onnoghen has enjoyed from his subordinates and privies in our Judicature.
11. In the midst of all these distracting events, the essential question of whether the accused CJN actually has a case to answer has been lost in the squabble over the form and nature of his trial. This should not be so.
12. If Justice cannot be done and clearly seen to be done, society itself is at risk of the most unimaginable chaos. As a Government, we cannot stand by wailing and wringing our hands helplessly but give our full backing and support to those brave elements within the Judiciary who act forthrightly, irrespective of who is involved.
13. As you are all aware, the fight against corruption is one of the tripod of policies promised to Nigerians by this administration. Needless to say that it is an existential Policy which must be given adequate attention and commitment by all the three arms of government. The efforts of the Executive will amount to nothing without the cooperation of the Legislature and especially the Judiciary.
14. It is no secret that this government is dissatisfied with the alarming rate in which the Supreme Court of Nigeria under the oversight of Justice Walter Onnoghen has serially set free, persons accused of the most dire acts of corruption, often on mere technicalities, and after quite a number of them have been convicted by the trial and appellate courts.
15. Since there is nothing the Executive Arm can do after the apex court of the land has spoken on any matter, several of these individuals walk free among us today, enjoying what are clearly the proceeds of the corruption which for so long has defeated the efforts of this nation to develop and prosper.
16. It is against this background that I have received the Order of the Code of Conduct Tribunal directing me to suspend the Chief Justice pending final determination of the cases against him. It also explains why I am not only complying immediately, but with some degree of relief for the battered sensibilities of ordinary Nigerians whose patience must have become severely over-taxed by these anomalies.
17. In line with this administration's avowed respect for the Rule of Law, I have wholeheartedly obeyed the Order of the Code of Conduct Tribunal dated 23rd January 2019.
18. Accordingly, I hereby suspend the Honourable Mr. Justice Walter Nkanu Samuel Onnoghen, GCON as the Chief Justice of Nigeria pending final determination of the case against him at the Code of Conduct Tribunal.
19. In further compliance with the same Order of the Code of Conduct Tribunal, I hereby invite Honourable Justice Ibrahim Tanko Mohammed JSC, being the next most Senior Justice in the Supreme Court, to come forward to take the Judicial Oath as Chief Justice of Nigeria in an Acting Capacity.
20. Fellow Nigerians, we can only stand a chance to win the fight against Corruption, and position our dear nation for accelerated development when we stand together to contend against it.
Thank you and may God bless our country.
The question in every Nigerian citizen's mouth is, does the President have the constitutional right to remove or suspend the chief justice of Nigeria? See what the constitution said about the removal of CJN.
JPEG Saving To JFIF - How To Resolve Windows 10 File Extension Problem
I don't understand what Microsoft Corporation was thinking or what they planned to achieve when they implemented this 'jfif...
How To Stop/Disable Windows 10 Auto Update (Automatic Update) Permanently
If you stumbled upon this post, chances are Windows 10 Auto Update is pissing you off and you are sick of it. The good news is, the s...
Nigerians Now Use Paracetamol To Cook Meet So As Not To Waste Gas - Be Warned
Nigerians can do anything to reduce cost of production and gain more money regardless of the detriment. We have seen this in fake pr...
President Muhammadu Buhari Signs The 2019 Finance Bill Into Law
The finance bill was submitted to the National Assembly alongside the budget but the bill signing is coming 27 days after the 20...
Microsoft Officially Ends Windows 7 Support Today 14th January 2020 - Adieu Windows 7
Let me paraphrase by saying " I will be the one to miss Windows 7 OS more than anybody in this world "....lol. Is indeed unf...
#NigeriaDecides BBNaija2018 Biafra - IPOB Crime Entertainment Exlink Autos Fashion fulani herdsmen jobs news politics Romance Tech
Tweets by @exlinklodge
Follow @exlinklodge
Rebecca More. Powered by Blogger.
Is The Arab Nation Fighting Back? - US Airbase In Iraq Hit By Rockets
ThemeXpose Copyright By Exlink Lodge 2019