REAL TIME SELFIE SYSTEMS AND METHODS FOR AUTOMATING USER IDENTIFY VERIFICATION

According to various embodiments of the disclosed technology, a system and method for validating the identity of an online account user in real time is disclosed. The system may include a processor; a memory attached to the processor; a computer readable medium having instruction embedded therein, the instructions configured to cause the processor to perform the operations of: creating a user profile for an online account for a first user, where the user profile may include a picture of a first user's face; receiving a request from a second user requesting to verify the picture of the first user as being an authentic representation of the first user's face; presenting through a computing device instructions of a specified pose for the first user to pose in a verification photo; and submitting the verification photo of the first user with the specified pose to the second user for verification.

TECHNICAL FIELD

The disclosed technology relates generally to biometric identification for online security purposes. More specifically, the disclosed technology relates to biometric identification for online security purposes using real time picture verification to confirm the identity of the user.

BACKGROUND

With the accessibility and mainstream nature of social media, the social media platform has become a convenient and accessible way for people to meet new people and expand their network of friends and personal relationships. While social media allows people to become introduced a wider network of people, the obvious downside is that all first interactions with such people on social media must be initiated online behind electronic screens rather than face-to-face interactions. As such, users must trust and assume that the person represented in his or her profile picture on the social media account is an accurate physical representation of that person in real life.

However, often, the profile picture of a person's social media account is often modified, outdated, or completely false. This phenomenon of deceiving people with faulty profile pictures has led to the coining of the term “catfish,” which is now a common term used to describe such online scenarios where someone fabricates an online identity to deceive others on social media. As a result, there is a need for authenticating social media users or other online users in real time for security and verification purposes.

BRIEF SUMMARY OF EMBODIMENTS

According to various embodiments of the disclosed technology, a system for validating the identity of an online account user in real time is disclosed. The system may include a processor; a memory attached to the processor; a computer readable medium having instruction embedded therein, the instructions configured to cause the processor to perform the operations of: creating a user profile for an online account for a first user, where the user profile includes a picture of a first user's face; receiving a request from a second user requesting to verify the picture of the first user as being an authentic representation of the first user's face; presenting through a computing device instructions of a specified pose for the first user to pose in a verification photo; and submitting the verification photo of the first user with the specified pose to the second user for verification.

Also disclosed are methods for validating the identity of an online account user in real time. The method may include at least creating a user profile for an online account for a first user, wherein the user profile comprises a picture of a first user's face; receiving a request from a second user requesting to verify the picture of the first user as being an authentic representation of the first user's face; receiving instructions of a specified pose for the first user to pose in a verification photo; and submitting the verification photo of the first user posing as instructed to the second user for verification.

The figures are not intended to be exhaustive or to limit the invention to the precise form disclosed. It should be understood that the invention can be practiced with modification and alteration, and that the disclosed technology be limited only bythe claims and the equivalents thereof.

DETAILED DESCRIPTION OF THE EMBODIMENTS

Described herein are systems and methods for automating the process of user verification. The details of some example embodiments of the systems and methods of the present disclosure are set forth in the description below. Other features, objects, and advantages of the disclosure will be apparent to one of skill in the art upon examination of the following description, drawings, examples and claims. It is intended that all such additional systems, methods, features, and advantages be included within this description, be within the scope of the present disclosure, and be protected by the accompanying claims.

As alluded to above, social media is often used by people pretending to be someone else by using images and information from accounts of others. Commonly, this is done for some illicit purpose and takes advantage of inability to verify identity. That is, is often impossible to spot a fake account, leading the users willingly sharing information and even transferring funds to people whose identity is unknown. While there are services that allow reverse image searches to help verify if particular image is associated with other accounts, such verification requires first recognizing that a user may be posing as someone else. Secondly, such verification is tedious and time consuming and often provides incomplete results.

Embodiments of the disclosed technology provide a tool for automating the process of account verification and identify confirmation. An individual user account or profile may be associated with any various online platforms. For example, platforms may include social media platforms, online gaming platforms, online messaging platforms, and transactional business platforms, such as online banking platforms, e-commerce platforms, and the like.

In some embodiments, the user profile may include personal information associated with the user's identity, such as name, age, gender, birthday, occupation, contact information, educational background, and the like. Personal information may include both public information (e.g., open for viewing to some or all users of the platform) and private information (e.g., information hidden from public view). Additionally, personal information may include a recent or accurate photo of the user to be publicly displayed as the user's profile image, as required by the user platform.

The tool utilizes machine learning models to determine whether a particular user account requires verification based on a particular protocol or threshold. For example, the tool may flag new accounts opened by users without existing connections, or accounts that send communications to users without any common connections or “friends.” Additionally, the tool may identify “suspicious” accounts based on the content of the profile and/or communication. Finally, the tool may use geolocation data and request identify confirmation for users whose devices have been associated with previously unused locations in particular period of time.

In some embodiments, the tool may request identify confirmation from accounts it determines that requires such verification, as alluded to above. For example, the tool may request the user to send images and/or videos depicting the user in a particular pose, performing a particular gesture, and/or with particular facial expressions. Finally, the tool may use machine learning models to determine whether the user submitted image or video meets the request. For example, the tool may use facial recognition algorithms to determine if the user depicted in the verification image is indeed the same user depicted in other available images of the user. Additionally, the tool may confirm that the user depicted in the verification image has not been associated with accounts of other users and/or platforms. In yet other embodiments, the tool may request to verify identity through images or videos that include poses or gestures which have not been previously identified among user's images.

System

FIG. 1illustrates an automated user identity verification system100according to some embodiments of the disclosed technology. In some embodiments, system100may include a likelihood determination server120, an identity verification server150, a one or more external resources server(s)140, a network103, and a user computing device104associated with a user (e.g., a social media user160). Additionally, system100may include other network devices such as one or more routers and/or switches.

In some embodiments, computing device104may include a variety of electronic computing devices, for example, a smartphone, a tablet, a laptop, a display, a mobile phone, a computer wearable device, such as smart glasses, or any other head mounted display device, or a combination of any two or more of these data processing devices, and/or other devices.

Likelihood of False Account Determination and Identify Verification Servers

In some embodiments, likelihood determination server120and identity verification server150may each include a processor, a memory, and network communication capabilities. In some embodiments, likelihood determination server120and identity verification server150may each be a hardware server. In some implementations, likelihood determination server120and identity verification server150may each be provided in a virtualized environment, e.g., likelihood determination server120and/or identity verification server150may be a virtual machine that is executed on a hardware server that may include one or more other virtual machines. Additionally, in one or more embodiments of this technology, virtual machine(s) running on likelihood determination server120and/or identity verification server150may be managed or supervised by a hypervisor. Likelihood determination server120and identity verification server150may be communicatively coupled to network103.

In some embodiments, the memory of likelihood determination server120may include likelihood database134. The likelihood database134may include one or more database, which may store association data related to determining the likelihood of use profile being falsified (e.g., profile information, including biographical information, location information, such as previously visited locations, connections or friends associated with the user, communications sent to other user contacts, communications public ally shared, other accounts linked to the user).

In some embodiments, the memory of likelihood determination server120may store application(s) that can include executable instructions that, when executed by likelihood determination server120, cause likelihood determination server120to perform actions or other operations as described and illustrated below with reference toFIGS. 2-3. For example, likelihood determination server120may include a likelihood tool126configured to determine whether the identity of a user associated with an account profile requires is likely to be fake and requires verification. In some embodiments, likelihood tool126may utilize data stored in likelihood database134, identify verification database152, and/or external resources database146, as will be described in detail below.

In some embodiments, system100may employ one or more machine learning models128, which may execute on likelihood determination server120.

In some embodiments, the memory of identity verification server150may store application(s) that can include executable instructions that, when executed by identity verification server150, cause identity verification server150to perform actions or other operations as described and illustrated below with reference toFIGS. 2 and 4. For example, identity verification server150may include an identity verification tool156. For example, identity verification tool156may be configured to use one or more verification techniques to confirm that the user in a user account is indeed real and is not using stolen identity. In some embodiments, verification techniques may include using biometric identification (i.e., metrics related to human characteristics). Such human characteristics may include fingerprints, palm veins, facial recognition, retina, body type, body behavior, and the like.

In some embodiments, identity verification tool156may include a software module for allowing a user to manually confirm the identity of another account user via biometric identification using real-time submission of photos. For example, identity verification tool156may be configured to assist user160with verifying identity of another user.

In some embodiments, identity verification database152may include one or more databases, which may store data transmitted by users in response to requests to verify identity, data related to results of identity verification performed manually (i.e., machine learning training data), and results of automatic identity verification process, and such similar data.

In some embodiments, likelihood of verification tool126and identity verification tool156, may be each implemented as one or more software packages executing on one or more likelihood determination server120and identity verification server150computers, respectively. For example, a client application implemented on one or user computing device104, as client identification verification application.

In some embodiments, likelihood tool126and identity verification tool156may each be a server application, a server module of a client-server application, or a distributed application. In some embodiments, likelihood tool126and identity verification tool156may each be implemented using a combination of hardware and software. The application(s) can be implemented as modules, engines, or components of other application(s). Further, the application(s) can be implemented as operating system extensions, module, plugins, or the like.

Even further, the application(s) may be operative locally on the device or in a cloud-based computing environment. The application(s) can be executed within or as virtual machine(s) or virtual server(s) that may be managed in a cloud-based computing environment. Also, the application(s), and even the verification analysis computing devices themselves, may be located in virtual server(s) running in a cloud-based computing environment rather than being tied to one or more specific physical network computing devices. Also, the application(s) may be running in one or more virtual machines (VMs) executing on the mapping and analysis computing devices.

In some embodiments, likelihood determination server120and identity verification server150may transmit and receive information to and from user computing device104, one or more external resources servers140, and/or other servers via network103. For example, a communication interface of the likelihood determination server120and identity verification server150may be configured to operatively couple and communicate between likelihood database134, identity verification database152, user computing device, and external resources servers140, which are all coupled together by the communication network(s)103.

In some embodiments, likelihood tool126and identity verification tool156may each access likelihood database134, identity verification database152, and external resources database146over a network130such as the Internet, via direct links, and the like.

In some embodiments, likelihood determination server120and identity verification server150may each be a standalone device or integrated with one or more other devices or apparatuses, such as one or more of the storage devices, for example. For example, likelihood determination server120and identity verification server150may each include or be hosted by one of the storage devices, and other arrangements are also possible.

External Resources Server

In some embodiments, external resources servers140may be configured to store resource data that includes data related to accounts the user may have on other online platforms. In some embodiments, external resources servers140may be configured to communicate with additional disparate third-party services (e.g., public record databases, law enforcement databases, financial, regulatory, and other such similar services) to request and receive data that may be used when determining likelihood of a fake profile.

In some embodiments, external resources server(s)140may include any type of computing device that can be used to interface with likelihood determination server120and/or likelihood tool126, likelihood of acceptance databases134, identity verification database152, other external resources server(s)140, and client computing devices104,105. For example, external resources servers140may include a processor, a memory, and a communication interface, which are coupled together by a bus or other communication link, although other numbers and/or types of network devices could be used. In some embodiments, external resources servers140may also include a database (e.g., external resource database146).

System Architecture

In some embodiments, likelihood determination server120, identity verification server150, external resources servers140, and or other components may be a single device. Alternatively, a plurality of devices may be used. For example, the plurality of devices associated with external resources servers140may be distributed across one or more distinct network computing devices that together comprise one or more external resources servers140.

In some embodiments, likelihood determination server120, identity verification server150, external resources servers140may not be limited to a particular configuration. Thus, in some embodiments, likelihood determination server120, identity verification server150, external resources servers140may contain a plurality of network devices that operate using a master/slave approach, whereby one of the network devices operate to manage and/or otherwise coordinate operations of the other network devices.

Additionally, in some embodiments, likelihood determination server120, identity verification server150, external resources servers140may comprise different types of data at different locations.

In some embodiments, likelihood determination server120, external resources servers140, identity verification server150may operate as a plurality of network devices within a cluster architecture, a peer-to-peer architecture, virtual machines, or within a cloud architecture, for example. Thus, the technology disclosed herein is not to be construed as being limited to a single environment and other configurations and architectures are also envisaged.

Although the exemplary system100with payor computing device104, provider device105, likelihood determination server120, identity verification server150, external resources servers140, and network(s)103are described and illustrated herein, other types and/or numbers of systems, devices, components, and/or elements in other topologies can be used. It is to be understood that the systems of the examples described herein are for exemplary purposes, as many variations of the specific hardware and software used to implement the examples are possible, as will be appreciated by those skilled in the relevant art(s).

One or more of the devices depicted in the network environment, such as payor computing device104, provider device105, likelihood determination server120, identity verification server150, external resources servers140may be configured to operate as virtual instances on the same physical machine. In other words, one or more of payor computing device104, provider device105, likelihood determination server120, identity verification server150, external resources servers140may operate on the same physical device rather than as separate devices communicating through communication network(s). Additionally, there may be more or fewer devices than payor computing device104, provider device105, likelihood determination server120, identity verification server150, and external resources servers140.

Method

As alluded to earlier, user verification may be performed automatically or manually. In a user-requested verification, a user of a platform may report another user as “suspicious” and request verification. For example, the user may deem another user suspicious upon receiving a friend request or a communication from an unknown user.

During the automatic verification, the system determines whether the identity is likely fake for each new user account created. Upon determining that the identity is likely fake, the system requests verification. By virtue of automatically verifying user identify, the present embodiments ensure a more secure platform. That is, by continuous monitoring of new user accounts allows the system to prevent users with potentially illicit motives from using the platform. Furthermore, by first determining the likelihood of account being fake, the system ensures that users whose accounts are not likely fake are not asked to confirm identify unnecessarily, which potentially may deter users from using the platform. For example,FIG. 2illustrates a process200for determining a likelihood of account being fake according to some embodiments of the disclosed technology.

The process200may begin with obtaining user profile or account information associated with a user on a platform from a content database250(e.g., a user account repository and database). For example, the user account information may include information associated with a user of a social media platform. In some embodiments, the user account information may include user biographical information, user connection information, and user graphical information.

Biographical information may include information specifying user name, age, contact information (e.g., email address, number), user preferences, likes, interests, and other such information. Connection information may include information specifying information related to other accounts on the platform the user is connected (e.g., friends) as well as other platforms user holds an account with, and so on. The graphical information may include images and/or videos uploaded by the user depicting user likeness.

In step201, upon receiving user account information, a determination whether the account is newly created may be made. For example, a new account may be an account created within a particular time period (e.g., last 24 hours). Upon determining that the account has not been newly created, the “No” branch is taken and the result is recorded in a field associated with the user profile stored in user account repository250.

Alternatively, upon determining that the account is newly created, in step201, a “Yes” branch is take to step203, where a determination of a likelihood of an account being fake is made. The likelihood of the account being fake or a spoof may reflect the likelihood that the user is misusing someone else's identity. The likelihood of payment acceptance may be determined based on user account information.

Likelihood of Fake Account Determination

For example, likelihood tool126, illustrated inFIG. 1, may determine a likelihood of a user account being fake or spoofed330for a specific user by analyzing information related to the user account. For example, as illustrated inFIG. 3, likelihood of fake account330may be determined by analyzing user biometric information303, user connection information305, user graphical information307, and related information309obtained by system100.

For example, biometric information303may include user name, age, gender, address, email, phone number, interests, and so on. Connection information307specified by the user account information may include information related to other users that the particular user may be affiliated with (i.e., friends). Graphical information307specified by the user account may include images and/or videos depicting the user.

Related information309may include information related to other accounts associated with the user. Related information309may be obtained by system100from user account information computing device105and/or external resource services140, as illustrated inFIG. 1, and may include information related to other accounts the user may have created on other platforms. In some embodiments, related information309may include public information about the user based on user's biometric information303. For example, such information may include family information (e.g., marriage records, and other familial information), educational records, employment information, property ownership information, and so on. In yet other embodiments, related information309may include information that may negatively affect the user (e.g., criminal records, bankruptcy records, and so on).

Additional information309may be obtained from a variety of sources including public records, social media providers, and other sources of related information about the user. For example, additional information may be obtained from one or more of law enforcement databases, sex offender registries, National Crime Information Center's databases, missing persons registries, FBI most wanted fugitive databases, and other such sources.

In some embodiments, system100may prioritize or rate the obtained biometric information303, connection information305, graphical information307, and related information309based on a number of additional parameters. For example, a number of address associated with the user may be more relevant to a user with a small or non-existent number of connections than a user with a large number of connections.

System100may perform likelihood of facke account or profile determination330by utilizing a variety of analytical techniques to analyze collected sets of biometric information303, connection information305, graphical information307, and related information309, obtained from various sources to generate fake profile indicator340. For example, system100may utilize Bayesian-type statistical analysis to determine the fake profile indicator340. Fake profile indicator340may be a quantified likelihood of acceptance of an account being a spoof. That is, a calculated numerical value associated with fake profile indicator reflects a likelihood of the account being used as a spoof or fraud. For example, a lower fake profile indicator may indicate that the account is most likely real.

In some implementations, fake profile indicator340may be expressed based on a sliding scale of percentage values (e.g., 10%, 15%, . . . n, where a percentage reflects a likelihood of payment acceptance), as a numerical value (e.g., 1, 2, . . . n, where the magnitude of quantity reflects a likelihood of payment acceptance), or as text (e.g., “very low”, “low”, “medium”, “high”, “very high”), and other similar schemes used to represent fake profile indicator340.

In some implementations, biometric information303, connection information305, graphical information307, and related information309may be analyzed during likelihood of fake profile determination330in conjunction with one or more predictive models. The predictive models, may include one or more of neural networks, Bayesian networks (e.g., Hidden Markov models), expert systems, decision trees, collections of decision trees, support vector machines, or other systems known in the art for addressing problems with large numbers of variables. Specific information analyzed during the likelihood of fake account determination may vary depending on the desired functionality of the particular predictive model.

In some embodiments, a dynamic weight may be assigned to each biometric information303, connection information305, graphical information307, and related information309when determining the likelihood of fake profile330.

In some implementations, specificity, relevance, confidence and/or weight may be assigned to at least one of biometric information303, connection information305, graphical information307, and related information309, based on the relevance and relationship between various data points. The assignment of these weight factors may be used in determination of user-specific profile determination results.

In some embodiments, the system may use one or more thresholds when determining the likelihood of a profile being fake. For example, fake profile indicator340determined during the likelihood of a fake profile determination330may be compared to a threshold specified by the system. For example, in step205illustrated inFIG. 2, a determination whether the fake profile indicator340exceeds the threshold is made. If fake profile indicator340is below the threshold value, then the “No” branch is taken and the result is recorded in a field associated with the user profile stored in user account repository250.

Alternatively, if the fake profile indicator340is above the threshold value, then the “Yes” branch is taken and system will request the user to verify their identity in step207.

In some embodiments, individual user may identify one or more thresholds associated with the fake profile determinations as a setting the system will use. For example, accounts associated with users without mutual connections that generate communications (e.g., messages or requests to become friends) may include a lower fake profile indicator threshold. Similarly, accounts that include geolocation information indicating multiple geographic locations from which accounts were accessed may include a lower fake profile indicator threshold.

Referring back toFIG. 2, as alluded to above, in step207, the above the threshold false profile indicator may be used to request identity verification.

If the user in question accepts the verification request, the account verification system may send a notification with a specific set of pose instructions. This ensures that the user in question is verified by in real time and that the user cannot merely send an old photo in an attempt to deceive others. As such, the user must then take a photo themselves successfully executing these instructed poses and submit them. The account verification system may access the camera already integrated on the mobile or electronic computing device. By accessing the camera, the user may be able to take a selfie through the verification system.

By way of example only, the specific pose instructions may require that the user take a selfie with a specified hand motion, facial expression, body motion or combinations thereof. Such pose instructions may include saluting, waving, making a peace sign, mimicking round eyeglasses by placing rounded hands over each eyes, sticking out the tongue, making a wide rounded “o” shape with the mouth or other shapes, twirling, performing jumping jacks, and the like. The pose instructions may can include any wide range of poses and gestures that that can be recognized by various facial and gesture recognition software installed in the account verification system.

By way of example only, the account verification system may transmit verification instructions which may instruct the user to take an image of themselves (i.e., a verification selfie) within a set time frame of accepting the verification request and the set of pose instructions. By doing so, this may allow real-time verification of the user's online account. Once the user has taken the selfie with the instructed pose, the account verification system may validate the identity of the account user. In some embodiments, the account verification system may validate only the user's facial feature while in other embodiments, the account verification system may validate only the satisfaction of the pose requirements. In other instances, the account verification system may require that the system confirms both the user's facial features and instructional poses before validating the user's account.

Identity Verification

FIG. 4illustrates example process of validating user identity according to an implementation of the disclosure using a machine learning model. Other artificial intelligence techniques may be used instead of, or in addition to, using a machine learning model. By virtue of utilizing a machine learning approach enhances the automated validation process described herein. In particular, by using machine learning model, allows the system to determine if the image is real and/or if it belongs to another user as well as confirm if the identity validation requirements have been satisfied.

The process404may include applying a machine learning model, at410. The machine learning model may be any machine learning mode, algorithm, or an Artificial Intelligence (AI) technique, capable of the functions described herein. The process402may include training the machine learning model, at413. For example, verification images including specific facial features, gestures, poses, and actions of the users along with information included in the verification request and/or other data elements, for the previously verified users (i.e., users whose verification images correspond to verification instructions) may be applied as inputs to the machine learning model. Training the machine learning model may include supervised learning, unsupervised learning, or combinations thereof. During the training stage, process402may include the machine learning model storing the values related to the decisions made during the training stage in a decision model database420.

After training, the machine learning model may be used to validate “unlabeled” data, i.e., any verification image transmitted by the user. The machine learning model may utilize the decision data values that are determined to be related to data in the verification image from decision model database420when determining identity confirmation, at430. For example, the machine learning model may identify facial features and gestures in the verification images and determine if matches exist between the values stored in decision model database420when making the identity confirmation determination. Depending on match reliability, the machine learning model may create accurate verification for unlabeled repair documents.

In other embodiments, facial recognition algorithms may be used in step410to verify whether the person depicted in the verification image may be identified as the user depicted in the images and/or videos specified by the graphical information associated with the user account.

In yet other embodiments, facial recognition algorithms may be used in step410to verify whether the person depicted in the verification image may be associated with any other user. In other words, the system may determine if the verification image includes information obtained from another source. For example, the system may obtain images of users from other platforms accessed through external resource services140, illustrated inFIG. 1, to determine whether the person in the verification image is associated with another profile. Furthermore, the system may use biographical information (e.g., user name, age, gender, and so on) as a secondary layer of verification. That is, if the person in the verification image matches the person depicted in an image in another platform, the name of that user may be used to verify the identity of the user (i.e., if the names are the same then it is likely that the user simply has another account rather than using someone else's identity).

In some embodiments, user whose identity is being verified may disagree with identity verification determinations generated by process402. In those cases, the quality assurance process441may request another user (e.g., friend user216) to confirm the identity of the user that is being verified. Upon receiving this third-party confirmation, the rejected the identity verification may in turn be fed back to the model for further relearning and as re-tuning the machine learning model for enhanced accuracy of future predictions. The relearned model may then be redeployed and utilized again to update and complete the identity verification process with enhanced precision.

Referring back toFIG. 2, in step209, a determination whether user identity is verified, as illustrated inFIG. 4, may be made. Upon determining that the verification image does not provide sufficient verification, the “No” branch is taken back to step207, where a new request to verify identity may be generated, as described earlier.

Alternatively, upon determining that the verification image provides sufficient verification, the “Yes” branch is taken and the result is recorded in a field associated with the user profile stored in user account repository250.

System

Where circuits are implemented in whole or in part using software, in one embodiment, these software elements can be implemented to operate with a computing or processing system capable of carrying out the functionality described with respect thereto. One such example computing system is shown inFIG. 5. Various embodiments are described in terms of this example-computing system500. After reading this description, it will become apparent to a person skilled in the relevant art how to implement the technology using other computing systems or architectures.

FIG. 5depicts a block diagram of an example computer system500in which various of the embodiments described herein may be implemented. The computer system500includes a bus502or other communication mechanism for communicating information, one or more hardware processors504coupled with bus502for processing information. Hardware processor(s)504may be, for example, one or more general purpose microprocessors and/or specialized graphical processors.

The computer system500further includes a read only memory (ROM)508or other static storage device coupled to bus502for storing static information and instructions for processor504. A storage device510, such a SSD, magnetic disk, optical disk, or USB thumb drive (Flash drive), etc., is provided and coupled to bus502for storing information and instructions.

The computer system500may be coupled via bus502to a display512, such as a transparent heads-up display (HUD) or an optical head-mounted display (OHMD), for displaying information to a computer user. An input device514, including a microphone, is coupled to bus502for communicating information and command selections to processor504. An output device516, including a speaker, is coupled to bus502for communicating instructions and messages to processor504.

The computer system500may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system500to be a special-purpose machine. According to one embodiment, the techniques herein are performed by computer system500in response to processor(s)504executing one or more sequences of one or more instructions contained in main memory505. Such instructions may be read into main memory505from another storage medium, such as storage device510. Execution of the sequences of instructions contained in main memory505causes processor(s)504to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions.

Terms and phrases used in this document, and variations thereof, unless otherwise expressly stated, should be construed as open ended as opposed to limiting. As examples of the foregoing, the term “including” should be read as meaning “including, without limitation” or the like. The term “example” is used to provide exemplary instances of the item in discussion, not an exhaustive or limiting list thereof. The terms “a” or “an” should be read as meaning “at least one,” “one or more” or the like. The presence of broadening words and phrases such as “one or more,” “at least,” “but not limited to” or other like phrases in some instances shall not be read to mean that the narrower case is intended or required in instances where such broadening phrases may be absent.