Patent ID: 12235110

DETAILED DESCRIPTION

As has been mentioned, the present description is about generating a second location on a surface from a first location. Embodiments are now described in more detail.

FIG.1shows details for a sample computer system190, optionally used locally by a user199. Computer system190may be a desktop computer, a laptop computer, a tablet computer, a mobile phone, and so on. In embodiments, computer system190is a server or part of a server that is not usually accessed locally by a user, as will be seen in examples later in this document.

Computer system190includes a processor114. Computer system190also includes a system bus132that is coupled to processor114. System bus132can be used by processor114to control and/or communicate with other components of computer system190.

Computer system190additionally optionally includes a network interface134that is coupled to system bus132. Network interface134can be used to access a communications network, as will be seen in the example ofFIG.2. Network interface134can be implemented by a hardware network interface, such as a network interface card (NIC), wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components such as Bluetooth® Low Energy, Wi-Fi® components, etc. Of course, such a hardware network interface may have its own software, and so on.

Computer system190further includes a video adapter111, which is also coupled to system bus132. Video adapter111may be able to drive and/or support a screen192that is used by user199together with computer system190.

In addition to screen192, other peripheral input/output (I/O) devices that may be used together with computer system190include a keyboard122, a mouse123, a media tray124and a printer125. Media tray124may include storage devices such as CD-ROM drives, multi-media interfaces, and so on. Computer system190moreover includes an I/O interface128connected to these peripheral I/O devices as shown, for the purpose of communicating with them. In this example these connections are direct. Alternately, one or more of these connections may take place via universal serial bus (USB) ports129of computer system190, to which I/O interface128is also connected.

Computer system190moreover includes a bus bridge116coupled to system bus132, and an input/output (I/O) bus136. I/O bus136is coupled to bus bridge116and to I/O interface128.

Computer system190also includes various memory components. A non-volatile memory component is a hard drive144. Computer system190further includes a hard drive interface142that is coupled to hard drive144and system bus132.

Additional memory components are in a system memory148, which is also coupled to system bus132. System memory includes volatile memory including, but not limited to, cache memory, registers and buffers. In embodiments, data from hard drive144populates registers of the volatile memory of system memory148.

Sample system memory148has a software architecture that uses a stack of layers, with each layer providing a particular functionality. In this example the layers include—starting from the bottom—an operating system (OS)150, libraries160, frameworks/middleware170and application programs180. Other software architectures may include less, more or different layers. For example, a presentation layer may also be included. For another example, some mobile or special purpose operating systems may not provide a frameworks/middleware170.

OS150may manage hardware resources and provide common services. Libraries160provide a common infrastructure that is used by applications180and/or other components and/or layers. Libraries160provide functionality that allows other software components to perform tasks more easily fashion than to interface directly with the specific underlying functionality of OS150. Libraries160may include system libraries161, such as a C standard library. System libraries161may provide functions such as memory allocation functions, string manipulation functions, mathematical functions, and the like.

In addition, libraries160may include API libraries162and other libraries163. API libraries162may include media libraries, such as libraries to support presentation and manipulation of various media formats such as MPREG4, H.264, MP3, AAC, AMR, JPG, and PNG. API libraries162may also include graphics libraries, for instance an OpenGL framework that may be used to render 2D and 3D in a graphic content on screen192. API libraries162may further include database libraries, for instance SQLite, which may support various relational database functions. API libraries162may additionally include web libraries, for instance WebKit, which may support web browsing functionality.

Frameworks/middleware170may provide a higher-level common infrastructure that may be used by applications180and/or other software components/modules. For example, frameworks/middleware170may provide various graphic user interface (GUI) functions, high-level resource management, high-level location services, and so forth. Frameworks/middleware170may provide a broad spectrum of other APIs that may be used by applications180and/or other software components/modules, some of which may be specific to OS150or to a platform.

Application programs180are also known more simply as applications and apps. One such app is a browser181. Browser181is an example of a renderer, which includes program modules and instructions that enable computer system190, to exchange network messages with a network using hypertext transfer protocol (HTTP) messaging.

In embodiments, application programs180include a second location generator184. Optionally, application programs180may further include a first location data converter182and a second location data converter186. These can be made to perform operations as described later in this document.

Other such applications180may include a contacts application, a book reader application, a location application, a media application, a messaging application, and so on. Applications180may be developed using the ANDROID™ or IOS™ software development kit (SDK) by an entity other than the vendor of the particular platform, and may be mobile software running on a mobile operating system such as IOS™, ANDROID™, WINDOWS® Phone, or other mobile operating systems. Applications180may use built-in functions of OS150, libraries160, and frameworks/middleware170to create user interfaces for user199to interact with.

The hardware elements depicted in computer system190are not intended to be exhaustive. Rather, they are representative, for highlighting essential components that can be used with embodiments.

Instructions for performing any of the methods or functions described herein may be stored, completely or partially, within the memory components of computer system190, etc. These memory components include the indicated memory components, plus cache memory within the processors such as processor114. Accordingly, these memory components are examples of machine-readable media.

In this context, “machine-readable medium” refers to a component, device or other tangible media able to store instructions and data temporarily or permanently and may include, but is not be limited to, a portable computer diskette, a thumb drive, a hard disk, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, an Erasable Programmable Read-Only Memory (EPROM), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.

The term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store instructions that a machine such as a processor can store, erase, or read. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, that is capable of storing instructions (e.g., code) for execution by a machine, such that the instructions, when executed by one or more processors of the machine, cause the machine to perform any one or more of the methods described herein. Accordingly, instructions transform a general, non-programmed machine into a particular machine programmed to carry out the described and illustrated functions in the manner described.

A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.

Processor114is a physical circuit that manipulates physical quantities representing data values. The manipulation can be according to control signals, which can be known as commands, op codes, machine code, etc. The manipulation can produce corresponding output signals that are applied to operate a machine. As such, a processor may, for example, be a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), a Field-Programmable Gate Array (FPGA), an Application Specific Integrated Circuit (ASIC), any combination of these, and so on. A processor may further be a multi-core processor having two or more independent processors that execute instructions. Such independent processors are sometimes called “cores”.

A hardware component such as a processor may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware component may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, hardware components become specific machines, or specific components of a machine, uniquely tailored to perform the configured functions and are no longer general-purpose processors. It will be appreciated that the decision to implement a hardware component mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.

As used herein, a “component” may refer to a device, physical entity or logic having boundaries defined by function or subroutine calls, branch points, application programming interfaces (APIs), or other technologies that provide for the partitioning or modularization of particular processing or control functions. Components may be combined via their interfaces with other components to carry out a machine process. A component may be a packaged functional hardware unit designed for use with other components and a part of a program that usually performs a particular function of related functions. Components may constitute either software components (e.g., code embodied on a machine-readable medium) or hardware components.

FIG.2presents a first upper diagram201and a second lower diagram202that are separated by a separator line203. The diagrams201and202are linked by arrows that cross the separator line203, and show salient conceptual connections between these two diagrams.

The first diagram201shows aspects of a sample computer system290according to embodiments. In terms of context, in some embodiments the computer system290is part of an online service293, which can be a software as a service (SaaS). A customer295who uses a customer computer296may access the computer system290via a communications network280, such as the internet. Such accessing can be for example, by transmitting a request281, and then receiving a response282in response to the request281, and so on.

The computer system290may be made in a number of ways including, for example as was described for the computer system190. In some embodiments, the computer system290is provided with a screen292, although not necessarily if the computer system290is a server and/or part of online service293.

In embodiments, as also indicated with slanted dashed lines, the computer system290includes a second location generator284. Optionally, the computer system290may further include a first location data converter282and a second location data converter286. First location data converter282, second location generator284, and second location data converter286may be implemented in a number of ways, for example as shown inFIG.1by applications182,184,186respectively.

The second diagram202shows a surface207. The surface207may be flat, or even curved. The surface207may even be substantially spherical; if the underlying radius is large enough, then at certain small areas the surface207may be considered as flat.

A first location AL211is shown on the surface207. The first location AL211is also known as the initial location. Locations such as first location AL211can be defined on the surface207as data that uses a system suitable for describing places on the surface207. For example, such data may use a system of rectangular coordinates, or spherical coordinates, etc. In this particular case, a system of rectangular axes X208and Y209is shown. These axes X208and Y209intersect at an origin O. And, if first location AL211is a single point, it can be defined by data that are coordinate values of points218,219on axes X208and Y209, respectively. Other coordinate systems may also be used, and first location AL211need not be a single point, as will be described later in more detail.

The surface207has a plurality of domains defined thereon. In this example the following sample domains are shown: domain A221, domain B222, domain C223, domain D224, and domain E225. As can be seen, some of these domains are supersets or subsets of each other, some exclude each other, and some overlap with others.

The extent of these domains221, . . . ,226on the surface207can be described as data of boundaries of the domains. For example the data for the boundaries can use a coordinate system, such as the same coordinate system used for the locations, although that is not necessary. And that boundaries data can be stored in a computer system such as computer system290of diagram201.

Additional sample locations are shown on the surface207. For reasons that will be understood later, many of these locations are candidate locations, and are indicated as “CL”. These additional locations include CL1231, CL2232, CL3233, CL4234, CL5235and CL6236. The relationship between these additional locations and the domains is now described in more detail.

FIG.3shows a table300, which has rows and columns. Some of the rows and columns define cells that show relationships between the domains A221, . . . , E225with the locations AL211, CL1231, . . . , CL6236of diagram202inFIG.2. Additional rows and additional columns are also described later.

Most of the cells of table300have checkmarks (V) or crossed-out marks (X). The checkmarks are for when one of the locations belongs in the corresponding domain, while the crossed-out marks are for when that location does not belong in the corresponding domain. For example, from diagram202it will be seen that location AL211belongs in domains A and B, but not in domains C, D or E. Accordingly, the row of table300for location AL211has two checkmarks followed by three crossed-out marks. And so, according to an additional row340, domains A, B, are a first subset341of the domains, while domains C, D and E are a second subset342of the domains.

From the entries of table300, therefore, it can be determined which of candidate locations CL1231, . . . , CL6236belong in the same domains as first location AL211, and which do not. In particular, it can be seen from table300that only candidate locations CL1231and CL3233belong in exactly the same domains as first location AL211, which is a condition called matching. This matching could also be determined by inspection of the surface207ofFIG.2. Returning toFIG.3, this matching is reflected in table300in an additional column351, which shows checkmarks for matching and crossed-out marks for not matching. These marks of column351for individual locations are also repeated on the corresponding locations of diagram202.

Returning toFIG.3, according to an additional column352, a best choice is made among only the matching candidate locations CL1, CL3. The best choice can be made according to one or more criteria. In this example, the best choice was CL3, which is why it can also be called the selected location (SL). And, yes, as will be seen later in this document, in some instances the best choice is the one farthest away from the first location AL211.

FIG.4shows a flowchart400for describing methods according to embodiments. According to a first operation410, first location data can be received by a computer system. For instance, the computer system may be computer system290ofFIG.2, receiving first location data251. First location data251is shown formatted as a document in the example of diagram201, but this kind of formatting is not necessary for embodiments. First location data251may define first location AL211on the surface207, hence a solid arrow crossing line203from diagram202to diagram201.

As also mentioned, the surface of operation410may have domains defined thereon, as does the surface207. According to another operation420, stored data about the extent of the domains may be looked up by the computer system. This could be the above-mentioned domain boundary data.

According to another operation430, it may be queried, by the computer system, whether or not the first location belongs in at least some of the domains. Of course, the querying may be performed by using the first location data input at operation410, and also optionally per the boundary data looked up at operation420. In the example of diagram201, the querying may be one of the functions performed by second location generator284.

In some embodiments, the received first location data uses a first coordinate system, and the querying is performed from the first location data in the first coordinate system. In other embodiments, conversion is required, for example to a different coordinate system than the one that the first location data was received in. In particular, the received first location data may use a first coordinate system and, according to one more operation, the received first location data may be converted, by the computer system, so that the received first location data uses a second coordinate system that is distinct from the first coordinate system. Such a conversion can be performed, for example, by first location data converter282, to generate converted first location data253. In such embodiments, then, the querying of operation430can be performed using the converted first location data, which would be better useable by second location generator284.

Then, according to another operation440, it may be discerned, by the computer system, that the first location belongs in a first one of the domains but does not belong in a second one of the domains. The discerning of operation440can be performed in response to the querying of operation430. For example, it may be discerned that the first location belongs in a first domain A but does not belong in a second domain E. As was seen from the coverage of table300, the requirement can be extended to query with respect to additional domains, and even all the domains.

Operations430and440may be performed in a number of ways. For example, in view ofFIG.2, a test line may be traced on surface207that passes through point AL211. Then it may be queried which domain boundaries are crossed by the test line and, if so, where point AL211is with respect to them. If point AL211is between two crossed boundaries of a domain, then point AL211is within that domain, and belongs in it. Else point AL211does not belong in that domain. To simplify the computation, it may be preferred to use as a test line one that will produce a lot of zeroes. One choice is to extend the vertical line segment between point AL211and intercept218, or the horizontal line segment between point AL211and intercept219.

Returning toFIG.4, according to another operation450, second location data can be generated by the computer system. The second location data may define a second location on the surface. In diagram201, the second location is generated by second location generator284, and the generated second location data is indicated as255. In embodiments, the second location is selected so as to not overlap with the first location, as will be explained later in this document. In embodiments, the second location is selected so as to belong in the first domain but to not belong in the second domain of operation440, just as the first location.

As was seen from the coverage of table300, in some embodiments a first subset341of all of the domains that the first location belongs in may be discerned by the computer system. This first subset could include the first domain of operation440. In such embodiments, the second location may be further selected so as to belong in all the domains of the first subset341.

Moreover, in some embodiments a second subset342of all of the domains that the first location does not belongs in may be discerned by the computer system. This second subset could include the second domain of operation440. In such embodiments, the second location may be further selected so as to not belong in any the domains of the second subset342. In the example ofFIG.3, the second subset342includes at least three domains C, D, E.

In some embodiments, the generated second location data uses a first coordinate system. In such embodiments, the method further includes: converting, by the computer system, the generated second location data so that it uses a second coordinate system, which is distinct from the first coordinate system. This conversion may be performed, for example, by second location data converter286ofFIG.2. This component generates the converted second location data257, which is output per the next operation.

None, one or both of converters282,286may be used. As such, the first location data may use a first coordinate system, and the outputted second location data may also use the first coordinate system, or a second coordinate system that is distinct from the first coordinate system.

Returning toFIG.4, according to another operation460, the second location data may be output by the computer system. In some embodiments, outputting may be by a user interface to a user. In some embodiments, the first data is received by the computer system290via network280as a payload of a request281. In such embodiments, the second location data255or257is output by the computer system290via network280as a payload of a response282that is transmitted responsive to the request281.

In some embodiments, the first location data that has been received at operation410becomes temporarily stored in a memory of the computer system. In such embodiments, according to another, optional operation490, the first location data is rendered irretrievable from the memory, by the computer system. This may be accomplished in a number of ways. For example, this data can be erased specifically from the memory, or the memory locations may be made available for overwriting or themselves erased from a memory, and so on. The operation of flowchart400may be performed many times, and so on.

More about the nature of the locations is now described. Returning toFIG.2, locations211,231,232, . . . ,236are designated by small circles or dots, but that is only for convenience. In some embodiments, the locations are single points. In such embodiments, the location data, such as the first location data and/or the second location data, may use a certain coordinate system. That location data may also define a single point on the surface according to the certain coordinate system, the single point being the entire location. An example was mentioned above for location211, treated as a point.

In other embodiments, the first location and/or the second location is a place. Being a place, it can have a non-zero area on the surface. Moreover, while small circles or dots are used inFIG.2to denote the locations, such places need not be have a circular perimeter. Examples are now described.

FIG.5is a diagram of a sample surface507. A system of coordinate axes X508and Y509intersect at an origin point P. It is understood that the origin point P is transferable sometimes to other points of surface507, with the axes X508and Y509following accordingly.

A sample first location511is shown, which has pentagonal shape in this example, although any shape is possible. The first location511has a non-zero area on the surface507.

A sample second location533is shown, which also has pentagonal shape. There is no requirement, however, that the second location533have the same shape as the first location511. The second location533also has a non-zero area on the surface507.

In this example, the second location533has been generated with reference to the first location511. In fact, it is an arrow561, which is also known as a vector, that helped generate the second location533with reference to the first location511, as will be further described later in this document. The second location533is shown with a checkmark because it is assumed selected by optionally having met one or more selection criteria, as will be described later in this document.

It will be appreciated that, in this and other examples, the second location533does not overlap with the first location511. In fact, the second location533is at some distance from the first location511. This distance can be quantified in a number of ways. As an example, one could consider the second location533being fitted entirely within an arbitrary adjustable test circle567. The test circle567can be adjusted to be made as small as possible, while still circumscribing the entire second location533. Then the test circle567would have a certain diameter568. In this example, the test circle567, and thus the entire second location533within it, can be farther from any point of the first location511than the certain diameter568.

In some embodiments the surface includes a forbidden zone, and the first location is known to be prohibited from being in the forbidden zone. In such embodiments, the second location is selected to be in the forbidden zone. An example is now described.

FIG.6shows a sample surface607. Two valid zones672and674are defined on the surface607. Between the two valid zones672and674is a prohibited zone673, which does not overlap with either of the two valid zones672and674.

A sample first location611and a sample second location633are shown. In some embodiments, the first location611is known to be prohibited from being in the forbidden zone673. In some embodiments, the first location611is required to be in one of the valid zones672and674.

In this example, the second location633has been generated to be in prohibited zone673. In fact, an arrow661points to forbidden zone673. The second location633is shown with a checkmark because it is assumed selected by optionally having met one or more selection criteria, as will be described later in this document.

In some of these embodiments, stored data can be looked up that defines the valid zones on the surface, with the knowledge that the first location611is required to be in one of the valid zones. In this example, two adjacent ones of the valid zones672,674are thus discovered from the looking up. In such embodiments, as in this example, the second location633can be selected to be between two adjacent ones of the valid zones672,674, to ensure that the second location633is not within either of the valid zones672,674. As such, the second location633is selected to be in prohibited zone673.

The second location may be selected in a number of ways. In some of these ways there can be an effort to thwart someone who might try to determine the first location from knowing the second location. Accordingly, some of these ways involve an element of randomness, while others not. Examples are now described.

In some embodiments, the second location is selected by a generating function. In embodiments, the generating function uses the first location data to point to at least a vicinity for the second location. For example, as seen inFIG.5, the generating function includes a vector561that starts from the first location511, and points at a general vicinity. The second location533is within that vicinity. In some of these embodiments, the generating function uses the first location data to point to the second location more exactly. This does not happen exactly in the example ofFIG.5—but it would if the top point of second location533where aligned with the tip of vector561. In instances, additional criteria may be applied to indicate where in the vicinity the second location533will be selected to be.

In such embodiments, the generating function may use at least one random variable. For one example, the generating function may force the second location to be within a certain range of distances from the first location. In embodiments that use vector561, this can be accomplished by vector561having a range of permitted lengths.

For another example, the generating function may force the second location to be at a certain general direction from the first location. That general direction could be the direction of vector561. That general direction may be always the same, or selected randomly, or quasi-randomly. As an example of such quasi-randomness, the first location data may use a coordinate system that employs the two perpendicular axes X508and Y509. In addition, the generating function may force the second location to be at a certain general direction571from the first location. The certain general direction571is replicated as vector561. In addition, the certain general direction571is at a random angle that is at least 20 degrees away from each of the axes. In other words, each of angles578,579away from axes X508and Y509is at least 20 degrees. In this particular case, angle578is 55 degrees.

As already suggested above, in some embodiments the second location is chosen in more than one operations. For example, generating the second location data may include choosing, by the computer system, candidate location data that defines a candidate location on the surface. For instance, as already suggested above, the candidate location may be selected by a generating function that uses the first location data. The candidate location therefore may become the second location itself if the selection criterion is met. In addition, the candidate location can be in a forbidden zone, as mentioned above. In such embodiments, as a second operation, it may be determined by the computer system, whether or not the candidate location data meets a selection criterion, and the candidate location data can be generated as the second location data responsive to the candidate location meeting the selection criterion. Of course, and as seen inFIGS.2and3, the selection criterion would include that the candidate location belongs in the first domain but does not belong in the second domain. Equivalently, the latter requirement can be enforced at the time that the candidate location data is generated, by choosing candidate location data only from the desired domains.

In some embodiments, it may be identified in advance that certain locations are desirable to use as the second location. Such locations may even be in a prohibited zone. In such embodiments, there can further be storing the candidate location data by the computer system. The storing can be in a memory of the computer system and prior to receiving the first location data.

Moreover, a plurality of candidate locations may be chosen. In particular, and still referring toFIG.2, generating the second location data may include choosing, by the computer system, a plurality of candidate location data231and233that respectively define candidate locations on the surface207. In some embodiments, the candidate locations are selected by a generating function that uses the first location data. Plus, similarly with a single candidate location, the plurality of candidate location data can be stored in advance, and then looked up. In addition, one or more of the candidate locations can be in a forbidden zone, as mentioned above.

In such embodiments, there can be ranking, by the computer system, of the plurality of the candidate locations according to at least one desirability criterion, and the second location may be selected as the one of the candidate locations that has been thus ranked the highest. The result of such a sample ranking is seen inFIG.3, column352. Again, the desirability criterion may already include that the candidate location should belong in the first domain but not in the second domain, which is one way of assigning the checkmarks in match column351.

There are a number of possible criteria for such ranking. For example, a candidate location's distance along the surface from the first location211may be maximized, or kept at certain range. For another example, if default locations are used for the second location, the number of times that such default locations have been used may contribute to the ranking. That number can be to maximize the use of one such default location over others, or to maintain numbers approximately equal among default locations. Plus, there can be combinations of criteria, and so on.

Another example is now described for how prior-stored default locations may be used as candidates available for selecting the second location.FIG.7shows a vertical time axis708with times T0, T1, T2, T3. Also shown are respective snapshots700,701,702,703of a surface707for each of those times.

Time T0may take place before the first location data is received, in other words, before operation410ofFIG.4. Snapshot700shows default locations761,762,763,764stored as candidate locations available for being selected as the second location.

At a subsequent time T1, the first location data has been received, for example according to operation410. As such, snapshot701shows the first location as a dot711. All stored default locations761,762,763,764are still available, and shown as such.

At a subsequent time T2, default location762has been chosen as the selected second location, as an example of operation450. As such, snapshot702shows default location762with a checkmark. In addition, an arrow indicates that, for first location711, second location762is being selected. The remaining default locations761,763,764have not been selected, and therefore are shown with crossed-out marks.

At a subsequent time T3, the second location has been communicated, as an example of operation460. In addition, the data of the first location711has been erased, as an example of operation490actually taking place. In addition, the next first location data is waited for. As such, time T3is similar with time T0, which is why snapshot703is identical to snapshot700. In particular, snapshot703shows default locations761,762,763,764stored as candidate locations available for the next second location.

In the example ofFIG.7there was no updating of the default locations with the eventual second location. That was partly due to the fact one of the default locations themselves was the selected second location.

In other embodiments, a plurality of default location data may be stored by the computer system in a memory of the computer system. The plurality of default location data may define a plurality of default locations on the surface. In such embodiments, when the second location is not any of the default locations, the second location data may be stored as additional default data in the memory of the computer system, for the next time operation400is performed. An example is now described.

FIG.8shows a vertical time axis808with times T0, T1, T2, T3. Also shown are respective snapshots800,801,802,803of a surface807for each of those times.

Time T0may take place before the first location data is received, in other words, before operation410ofFIG.4. Snapshot800shows default locations861,862,863,864stored as candidate locations available for being selected as the second location.

At a subsequent time T1, the first location data has been received, for example according to operation410. As such, snapshot801shows the first location as a dot811. All stored default locations861,862,863,864are still available, and shown as such.

At a subsequent time T2, a location833has been selected as the second location, as an example of operation450. As such, snapshot802shows second location863with a checkmark. In addition, an arrow indicates that, for first location811, second location833is being selected. All the default locations861,862,863,864have not been selected, and therefore are shown with crossed-out marks.

At a subsequent time T3, the second location has been communicated, as an example of operation460. In addition, the data of the first location811has been erased, as an example of operation490actually taking place. Moreover, second location833has been stored as an additional default location, for the next time operation400is performed. Now the next first location data is waited for, with more default locations stored as candidate locations.

NeitherFIG.7norFIG.8show which domains the first location, the second location, and the default locations belong in, and this is done for purposes of maintaining generality of these example. Anyone of the default locations may have been not chosen because it was in the wrong subset of domains. Or, any and all of the default locations may have been chosen initially to already be in the proper subset of domains, but some were not chosen due to unfavorable ranking.

Operational Examples of Embodiments

The above-described embodiments may be used to disguise address data, which can help protect the privacy of an entity at that address, protect its identity, and so on. There are a number of contexts where address data can be disguised for such purposes.

One such context is when it is desirable to determine accurately a tax due by an entity, in situations where the determination depends on the address of the entity. The context is applicable where the entity must provide its address, but there is the concern that then this address could be used to identify the entity, while the entity desires privacy, wants to protect its identity, and so on. The entity's address would be needed, because such a tax determination is very complex, as every location belongs in a web of tax jurisdictions, each of which may be imposing a tax on the entity. For example, for a single purchase by the entity, a sales tax and/or a use tax, an excise tax, and so on, may be imposed by a state, a county, a municipality, a city, and so on. This tax determination can be performed by highly specialized Software As A Service (“SaaS”) providers, such as Avalara, Inc. For this tax determination to be performed in the prior art, a real, actual location (“first location”) might have to be communicated to the SaaS provider. This communication may have even been across borders through which such information is not permitted to be transmitted or exported. Embodiments, however, can first generate an alternate but equivalent location (“second location”) from the entity's actual location (“first location”). That second location can be tax-equivalent to the first location, in that it belongs to the exact same set of tax jurisdictions (“domains”) as the first location, for example per the match column351ofFIG.3. Accordingly, instead of communicating the first location data of the entity's actual location, now one can communicate to the SaaS the second location data. The tax determination will thus be performed on the basis of the second location data instead of the first location data, and it will still be correct, because the second location is tax-equivalent to the first location. In addition, while performing the service of determining tax, the SaaS provider will never learn the first location, or the actual location of the entity, whose privacy will be thus protected better.

Such operational examples of embodiments are now described in more detail.FIG.9presents a first upper diagram901and a second lower diagram902that are separated by a separator line903. The diagrams901and902are linked by arrows that cross the separator line903, and show salient conceptual connections between these two diagrams.

It will be recognized that the first diagram901has many components that can be implemented by analogous components of diagram201ofFIG.2. In particular, a computer system990has a screen992, and components982,984,986, similarly to what was described for computer system290having a screen292, and components282,284,286. The computer system990may be part of a service993, and be accessible via a network980. In particular, a customer995who uses a customer computer996may transmit a request981, receive a response982, and so on, similarly with what was described for service293, network280, customer295, customer computer296, request281, and response282. Customer995can be a vendor of items, or a functionality used by a vendor such as a Point of Sale (POS) functionality, an Enterprise Resource Planning (ERP) functionality, or a partner of a vendor such as an Electronic Market Place (EMP), and so on.

In this operational example, surface907is the earth as seen in the diagram902. The surface907is substantially spherical, and the underlying radius of the earth is large enough so that certain small, local areas may be considered as flat.

A first location AL911is shown on the surface907. The first location AL911is also known as the initial location and an entity's actual location. Locations such as first location AL911can be defined on the surface907as data that uses a system suitable for describing places on the surface907. A suitable such system is addresses, such as the ones used to deliver mail by the country's Postal Service. Another such system is made from an axis908that points East-West, which can indicate geographic longitude, and an axis909that points North-South, which can indicate geographic latitude. These axes intersect at a point Q that is transferable to various locations. The geographic coordinate system (latitude, longitude) is, strictly speaking, a type of spherical coordinates. When taken locally, however, it can be thought of as a type of rectangular coordinates. As such, if first location AL911is a single point, it can be defined by data that are coordinate values of points918,919on axes908and909, respectively, and so on.

The surface907has a plurality of domains defined thereon. For this example, these domains correspond to tax jurisdictions. In this example the following sample domains are shown: State A921, County B922, City C923, State D924, and Tax Jurisdiction E925. As can be seen, some of these domains are supersets or subsets of each other, some exclude each other, and some overlap with others. Not all possible domains are shown. For example, the country domain may include all of the domains shown in diagram902, and so on.

Referring toFIG.10, an operational example is shown of how an entity's actual address can be disguised.FIG.10is a diagram of a portion1007of a street map of sample city, which is an example of a surface. The map portion1007shows buildings around the intersection of Main Street that lies along an East-West direction1008, and 3rd Avenue that lies along a North-South direction1009. Along Main street, buildings are indicated by their doors1030,1025,1040,1035,1010,1005,1020,1015. Each of these doors has an indicated Main street address. In particular, door1030has address 230 Main St., door1025has address 225 Main St., door1040has address 240 Main St., door1035has address 235 Main St., door1010has address 310 Main St., door1005has address 305 Main St., door1020has address 320 Main St., and door1015has address 315 Main St. Of course, all these designations are for a US version of this document. If rendered for a different country, the street and addresses of street map portion1007might have different names. For example, in a German version of this document, Main Street might be rendered instead as “Hauptstrasse”, “Third Avenue” as “Drittenstrasse”, and the addresses accordingly.

For the operational example ofFIG.10, a dot1011AL indicates the actual location of an entity. As such, the first location data is1051is the mailing address: “230 Main St.”, which can be the first location data951inFIG.9. Then the converted first location data953may be a latitude and a longitude of dot1011AL, which may be generated from prior knowledge of latitudes and longitudes of addresses.

Computer system990, and it second location generator984, may then generate the second location shown by a dot1033SL. In this example, this second location may be in terms of a latitude-longitude, or a street address. Even if not a street address directly, it can be the second converted location data957ofFIG.9. In the example ofFIG.10, the second converted location data1057could be the mailing address: “299 Main St.”

A few things are immediately apparent about the example ofFIG.10specifically. First, this is an example where the selected second location is further in a forbidden zone, namely in the street! That can further accentuate the notion that the actual location, i.e. the first location, is and should remain private. Second, it will be apparent that the map portion1007indicates the downtown of a city, and therefore is a different example than in diagram902where the actual location AL911is outside the City C923.

Third, inFIG.10the second location is in the same street as the first location. That is generally not preferred when there is an effort to disguise the first location, as both addresses are on Main Street. For example, and using a coordinate system of streets, the second location could have been selected to be three streets to the north and two intersections to the east of the first location, approximately as may have been generated if one of vectors561,571were used from the start at the actual location point AL1011. And, the size of these vectors may depend on the local population density, less if the latter is larger, and so on. Regardless, inFIG.10the second location1033SL is close to the first location1011AL for two reasons. First, for purposes of fitting everything clearly into a single drawing. Second, to indicate that this may happen anyway as inFIG.10in certain circumstances. Such circumstances include where only a few default locations are provided for all possible first locations that are tax equivalent to this second location1033SL. For example, in cases where all default locations761, . . . ,764ofFIG.7further belong in the same domains as each other and do not belong in the same domains as each other, they would all be tax-equivalent to each other. And any one of them could be used as a default location, and therefore also as a default address, for all possible first locations that are tax equivalent to it. Of course, in such cases further optimizations maybe implemented, where a farther default location may have a higher ranking due to better desirability than one close to the original location, and so on.

Returning to the use case of computing sales tax for a transaction, an example is now described with reference toFIG.11. The transaction includes data of a buyer, a seller, an item and so on. This data is shown in successive sample snapshots1131,1132,1133of a document, for which sales tax is eventually computed per comment A1191. The data here is shown each time as aggregated and formatted in a document, but that is only for convenience of this example; the data could instead have been be presented and/or formatted otherwise, such as rows in a spreadsheet, etc.

In this particular example, in snapshot1131the transaction data is a transaction id number (ID), the buyer name (BAN), the buyer address (BAL), the seller name (SAN), the seller address (SAL), item information (ITM), a sales price (SP) and optional other data (OD). Other data could have included date of order, currency designation for the sales price, id number for any permit, and so on.

Per embodiments, snapshot1132is generated from snapshot1131. It will be appreciated that snapshot1132is a de-identified version of snapshot1131. Indeed, per comment B1192, the buyer address (BAL) and the seller address (SAL) have been replaced with the buyer's tax-equivalent location (BEL), and the seller's tax-equivalent location (SEL) for example as per the above. As such, snapshot1132disguises the addresses of the buyer and the seller, and does not reveal them downstream in the process.

Furthermore, per comment C1193, the buyer name (BAN) and the seller name (SAN) have been replaced with the buyer's code name (BCN) and the seller's code name (SCN), which can be arbitrary text strings. Names can be thus concealed according to embodiments by being replaced by code names that are generated for the actual names. Generation of one of the code name may include a random or quasi-random process. A code name may be used consistently for a client, or different code names may be used for different transactions of the same client. As such, snapshot1132conceals the names of the buyer and the seller, and does not reveal them downstream in the process.

Snapshot1132can be sent across a communications network1160, which can be the internet. Snapshot1132can be thus sent to a remote destination, which can even be across a border1166through which, for example, transmission of sensitive information is restricted somehow. The restrictions could vary, ranging from total prohibition to permitting to sending data that makes no sense without context and/or is erased afterwards.

Then snapshot1133can be returned in response, even across border1166, with sales tax ST having been added. It is noteworthy that the sales tax ST has been computed on the basis of addresses that are tax-equivalent to the actual addresses of the buyer and the seller, and therefore is accurate. At the same time, the service that computed the tax never learned the actual addresses of the buyer and the seller, nor their names for that matter.

What is not shown inFIG.11is the final reconstructed data. Such might be the data of snapshot1131, along with the tax of snapshot1133, provided as a document or otherwise.

It will be further recognized that snapshot1132need not have included anything for the names of the buyer and the seller, as long as the recipient across network1160is prepared for that. For example, the API call across network1160may have a variable like NO_NAMES that is normally set to zero. If, however, it is set to 1, no names are provided in the API call. Another variable may indicate whether the names are concealed, as in the example ofFIG.11. And, of course, concealing the name runs the risk that the one of the buyer and the seller is exempt from paying tax, but that will not be recognized.

Disguising addresses can be performed in a number of instances. In some embodiments, this can be performed according to prior rules, and/or if requested by settings. An example is now described.

FIG.12is a diagram of a screen1296of a customer computer. Screen1296displays a sample Graphical User Interface (GUI)1200, which has four sections1210,1220,1230,1240.

Section1210further gives the user of screen1296the option to choose if and when names would be concealed. Four options are presented, “always”, “only when required by the jurisdiction”, e.g. from privacy rules of the applicable jurisdiction, “never” and “only when customer has requested”. These could be the options of an intermediary, who deals with transactions of a vendor, and so on.

Section1220gives the user of screen1296the option to choose if and when addresses would be disguised. Four options are presented, similarly with the above. Section1230is a button for going back, and Section1240is a button for pressing when done with the choices of sections1210,1220.

FIG.13is a sequence diagram1300of a sample sequence according to embodiments for generating the snapshots ofFIG.11. Diagram1300shows a customer entity1399that can be as was described above for customer995, together with computer functionality such as servers, etc. that support the customer995. Customer entity1399may use a name encoding function1353, a tax-equivalent location generator platform1393, and a tax-assisting platform1363. For purposes ofFIG.13alone, it does not matter where the latter three functions are hosted with reference to customer entity1399, but different examples of that are described later in this document.

For obtaining a sales tax on a transaction, customer entity1399may start with the transaction data. In this example, the transaction data is shown organized and formatted as a document1331, although that formatting is not necessary. In practice, the transaction data of document1331can be the variables in snapshot1131. Customer entity1399can store all elements of document1331in a memory1394of a computer of customer entity1399, also for later reconstruction.

For ultimately concealing the names of the buyer (BAN) and the seller (SAN) in the transaction, customer entity1399may transmit a request1351to name encoding function1353. The payload of request1351may be the variables BAN, SAN, and also optionally the transaction ID or another code number specially for the code name query of request1351. In response to request1351, name encoding function1353may transmit a response1352. The payload of response1352can be the BCN, SCN, and also optionally also the ID or the other code number for confirmation and matching by the querying customer entity1399. The learned BCN, SCN can be stored in memory1394, also for later reconstruction.

For ultimately disguising the addresses of the buyer (BAL) and the seller (SAL) in the transaction, customer entity1399may transmit a request1381to tax-equivalent location generator platform1393. The payload of request1381may be the variables BAL, SAL, and also optionally the transaction ID or another code number specially for the query of request1381. In response to request1381, tax-equivalent location generator platform1393may generate alternate addresses or locations BEL, SEL, for example as described earlier in this document. In addition, tax-equivalent location generator platform1393may transmit a response1382. The payload of response1382can be the BEL, SEL, and also optionally also the ID or the other code number for confirmation and matching by the querying customer entity1399. The learned BEL, SEL can be stored in memory1394, also for later reconstruction.

For learning the tax due, customer entity1399may transmit a request1361to tax-assisting platform1363. The payload of request1361is a tax query, and may include the variables of a document1332, which can be as in snapshot1132. It will be appreciated that document1332thus includes de-identified transaction data. Again, request1361may be transmitted via a network1360, even across border1166, without revealing names or true addresses. In response to request1361, tax-assisting platform1363may transmit a response1362. The payload of response1362can be the variables of document1333, which can be as for snapshot1133. The variable added is tax data, such as ST. It will be appreciated that document1333thus includes de-identified transaction data plus the tax.

Afterwards customer entity1399may reconstruct the data on its side, correcting for the concealment of the name and for the disguising of the address by retrieving the true data from memory1394. For example, it can use the transaction data of document1331, and add to it the tax learned from document1333, to create a new document1334with proper data, and so on.

Different possible hosting arrangements of functionalities ofFIG.13are now presented.

FIG.14is a diagram of a sample arrangement1400of the functionalities ofFIG.13. A customer entity1499can be as described for customer entity1399. Each of a name encoding platform1453, a tax-equivalent location generator platform1493, and a tax service platform1463are hosted separately from the customer entity1499.

The customer entity1499has a connector A1421that can communicate with the name encoding platform1453, for example over a network (not shown). In particular, connector A1421can send a request1451to an NE API1455that communicates with a name encoder1454. Here “NE” is an acronym for Name Encoder, and “API” stands for Application Programming Interface. Similarly with request1351, request1451can carry real names like the BAN and the SAN, and name encoder1454may generate the BCN and the SCN. Then name encoder1454may cause the NE API1455to transmit to the customer entity1499a response1452that communicates the BCN and the SCN, similarly with response1352. It should be noted that the actual names alone would be out of context, and therefore it might be permissible for request1451to cross border1166. Regardless, if such is impermissible, then name encoding platform1453should be within the same borders as customer entity1499.

The customer entity1499also has a connector B1422that can communicate with the tax-equivalent location generator platform1493, for example over a network (not shown). In particular, connector B1422can send a request1481to a TELG API1495that communicates with a tax-equivalent location generator1494. Here “TELG” is an acronym for Tax-Equivalent Location Generator. Similarly with request1381, request1481can carry real addresses like the BAL and the SAL, and tax-equivalent location generator1494may generate the BEL and the SEL. Then tax-equivalent location generator1494may cause the TELG API1495to transmit to the customer entity1499a response1482that communicates the BEL and the SEL, similarly with response1382. It should be noted that the actual addresses alone would be out of context, and therefore it might be permissible for request1481to cross border1166. Regardless, if such is impermissible, then tax-equivalent location generator platform1493should be within the same borders as customer entity1499.

The customer entity1499further has a connector C1423that can communicate with the tax service platform1463, for example over a network1460that can be as network1360. In particular, connector C1423can send a request1461to a TCE API1465that communicates with a tax computation engine1464. Here “TCE” is an acronym for Tax Computation Engine. Similarly with request1381, request1461can carry concealed names and disguised addresses, and tax computation engine1464may determine the sales tax (ST) due, and/or other tax information. Then the tax computation engine1464may cause the TCE API1465to transmit to the customer entity1499a response1462that communicates the ST, similarly with response1362.

FIG.15is a diagram of a sample arrangement1500of the functionalities ofFIG.13. A customer entity1599can be as described for customer entity1399. Each of a tax-equivalent location generator platform1593, and a tax service platform1563are hosted separately from the customer entity1599.

The customer entity1599has a connector B1522that can communicate with the tax-equivalent location generator platform1593, for example over a network (not shown). In particular, connector B1522can send a request1581to a TELG API1595that communicates with a tax-equivalent location generator1594. Similarly with request1381, request1581can carry real addresses like the BAL and the SAL, and tax-equivalent location generator1594may generate the BEL and the SEL. Then tax-equivalent location generator1594may cause the TELG API1595to transmit to the customer entity1599a response1582that communicates the BEL and the SEL, similarly with response1382.

The customer entity1599also has a connector C1523, and a name encoder1554, which can operate as name encoder1454, but locally to the customer entity1599. As such, name encoder1554can generate the BCN and the SCN. In embodiments, name encoder1554is part of a software development kit (SDK)1524that can be configured by a user of the customer entity1599, as also possibly assisted and/or supported by an operator of either the tax-equivalent location generator platform1593or the tax service platform1563.

The connector C1523can further communicate with the tax service platform1563across border1166, for example over a network1560that can be as network1360. In particular, connector C1523can send a request1561to a TCE API1565that communicates with a tax computation engine1564. Similarly with request1381, request1561can carry concealed names and disguised addresses, and tax computation engine1564may determine the sales tax (ST) due, and/or other tax information. Then the tax computation engine1564may cause the TCE API1565to transmit to the customer entity1599a response1562that communicates the ST, similarly with response1362.

FIG.16is a diagram of a sample arrangement1600of the functionalities ofFIG.13. A customer entity1699can be as described for customer entity1399. A tax service platform1663is hosted separately from the customer entity1699. A TELG API1695and a tax-equivalent location generator1694are hosted by the tax service platform1663, albeit behind a firewall1692.

The customer entity1699has a connector1623, and a name encoder1654, which can operate as name encoder1454, but locally to the customer entity1699. As such, name encoder1654can generate the BCN and the SCN. In embodiments, name encoder1654is part of a software development kit (SDK)1624that can be configured by a user of the customer entity1699, as also possibly assisted and/or supported by an operator of the tax service platform1663.

The connector1623can communicate with the tax service platform1663, for example across border1166over a network1660that can be as network1360. First, the connector1623can send a request1681to the TELG API1695that communicates with the tax-equivalent location generator1694. Similarly with request1381, request1681can carry real addresses like the BAL and the SAL, and tax-equivalent location generator1694may generate the BEL and the SEL. Then tax-equivalent location generator1694may cause the TELG API1695to transmit to the customer entity1699a response1682that communicates the BEL and the SEL, similarly with response1382.

Second, connector1623can communicate for computing the tax. It can be optionally further arranged to wait for this communication to happen for enough time, until the BAL and the SAL has been erased from all memories within firewall1692.

When ready, connector1623may send a request1661to a TCE API1665that communicates with a tax computation engine1664. Similarly with request1361, request1661can carry concealed names and disguised addresses, and tax computation engine1664may determine the sales tax (ST) due, and/or other tax information. Then the tax computation engine1664may cause the TCE API1665to transmit to the customer entity1699a response1662that communicates the ST, similarly with response1362.

FIG.17is a diagram of a sample arrangement1700of the functionalities ofFIG.13. A customer entity1799can be as described for customer entity1399. A tax service platform1763is hosted separately from the customer entity1799. An NE API1755and a name encoder1754are hosted by the tax service platform1763, albeit behind a firewall1791. A TELG API1795and a tax-equivalent location generator1794are hosted by the tax service platform1763, albeit behind a firewall1792.

The customer entity1799has a connector1723. The connector1723can communicate with the tax service platform1763, for example across border1166over a network1760that can be as network1360.

First, the connector1723can send a request1751to the NE API1755that communicates with the name encoder1754. Similarly with request1351, request1751can carry real names like the BAN and the SAN, and name encoder1754may generate the BCN and the SCN. Then name encoder1754may cause the NE API1755to transmit to the customer entity1799a response1752that communicates the BCN and the SCN, similarly with response1352.

Second, connector1723can communicate for obtaining disguised addresses. It can be optionally further arranged to wait for this communication to happen for enough time, until the BAN and the SAN has been erased from all memories within firewall1791.

When ready, connector1723may send a request1781to the TELG API1795that communicates with the tax-equivalent location generator1794. Similarly with request1381, request1781can carry real addresses like the BAL and the SAL, and tax-equivalent location generator1794may generate the BEL and the SEL. Then tax-equivalent location generator1794may cause the TELG API1795to transmit to the customer entity1799a response1782that communicates the BEL and the SEL, similarly with response1382.

Third, connector1723can communicate for computing the tax. It can be optionally further arranged to wait for this communication to happen for enough time, until the BEL and the SEL has been erased from all memories within firewall1792. The above two operations may be interchanged.

When ready, connector1723may send a request1761to a TCE API1765that communicates with a tax computation engine1764. Similarly with request1361, request1761can carry concealed names and disguised addresses, and tax computation engine1764may determine the sales tax (ST) due, and/or other tax information. Then the tax computation engine1764may cause the TCE API1765to transmit to the customer entity1799a response1762that communicates the ST, similarly with response1362.

In the methods described above, each operation can be performed as an affirmative act or operation of doing, or causing to happen, what is written that can take place. Such doing or causing to happen can be by the whole system or device, or just one or more components of it. It will be recognized that the methods and the operations may be implemented in a number of ways, including using systems, devices and implementations described above. In addition, the order of operations is not constrained to what is shown, and different orders may be possible according to different embodiments. Examples of such alternate orderings may include overlapping, interleaved, interrupted, reordered, incremental, preparatory, supplemental, simultaneous, reverse, or other variant orderings, unless context dictates otherwise. Moreover, in certain embodiments, new operations may be added, or individual operations may be modified or deleted. The added operations can be, for example, from what is mentioned while primarily describing a different system, apparatus, device or method.

A person skilled in the art will be able to practice the present invention in view of this description, which is to be taken as a whole. Details have been included to provide a thorough understanding. In other instances, well-known aspects have not been described, in order to not obscure unnecessarily this description.

Some technologies or techniques described in this document may be known. Even then, however, it does not necessarily follow that it is known to apply such technologies or techniques as described in this document, or for the purposes described in this document.

This description includes one or more examples, but this fact does not limit how the invention may be practiced. Indeed, examples, instances, versions or embodiments of the invention may be practiced according to what is described, or yet differently, and also in conjunction with other present or future technologies. Other such embodiments include combinations and sub-combinations of features described herein, including for example, embodiments that are equivalent to the following: providing or applying a feature in a different order than in a described embodiment; extracting an individual feature from one embodiment and inserting such feature into another embodiment; removing one or more features from an embodiment; or both removing a feature from an embodiment and adding a feature extracted from another embodiment, while providing the features incorporated in such combinations and sub-combinations.

In general, the present disclosure reflects preferred embodiments of the invention. The attentive reader will note, however, that some aspects of the disclosed embodiments extend beyond the scope of the claims. To the respect that the disclosed embodiments indeed extend beyond the scope of the claims, the disclosed embodiments are to be considered supplementary background information and do not constitute definitions of the claimed invention.

In this document, the phrases “constructed to”, “adapted to” and/or “configured to” denote one or more actual states of construction, adaptation and/or configuration that is fundamentally tied to physical characteristics of the element or feature preceding these phrases and, as such, reach well beyond merely describing an intended use. Any such elements or features can be implemented in a number of ways, as will be apparent to a person skilled in the art after reviewing the present disclosure, beyond any examples shown in this document.

Incorporation by reference: References and citations to other documents, such as patents, patent applications, patent publications, journals, books, papers, web contents, have been made throughout this disclosure. All such documents are hereby incorporated herein by reference in their entirety for all purposes.

Parent patent applications: Any and all parent, grandparent, great-grandparent, etc. patent applications, whether mentioned in this document or in an Application Data Sheet (“ADS”) of this patent application, are hereby incorporated by reference herein as originally disclosed, including any priority claims made in those applications and any material incorporated by reference, to the extent such subject matter is not inconsistent herewith.

Reference numerals: In this description a single reference numeral may be used consistently to denote a single item, aspect, component, or process. Moreover, a further effort may have been made in the preparation of this description to use similar though not identical reference numerals to denote other versions or embodiments of an item, aspect, component or process that are identical or at least similar or related. Where made, such a further effort was not required, but was nevertheless made gratuitously so as to accelerate comprehension by the reader. Even where made in this document, such a further effort might not have been made completely consistently for all of the versions or embodiments that are made possible by this description. Accordingly, the description controls in defining an item, aspect, component or process, rather than its reference numeral. Any similarity in reference numerals may be used to infer a similarity in the text, but not to confuse aspects where the text or other context indicates otherwise.

The claims of this document define certain combinations and subcombinations of elements, features and acts or operations, which are regarded as novel and non-obvious. The claims also include elements, features and acts or operations that are equivalent to what is explicitly mentioned. Additional claims for other such combinations and subcombinations may be presented in this or a related document. These claims are intended to encompass within their scope all changes and modifications that are within the true spirit and scope of the subject matter described herein. The terms used herein, including in the claims, are generally intended as “open” terms. For example, the term “including” should be interpreted as “including but not limited to,” the term “having” should be interpreted as “having at least,” etc. If a specific number is ascribed to a claim recitation, this number is a minimum but not a maximum unless stated otherwise. For example, where a claim recites “a” component or “an” item, it means that the claim can have one or more of this component or this item.

In construing the claims of this document, the inventor(s) invoke 35 U.S.C. § 112(f) only when the words “means for” or “steps for” are expressly used in the claims. Accordingly, if these words are not used in a claim, then that claim is not intended to be construed by the inventor(s) in accordance with 35 U.S.C. § 112(f).