Hex, Bugs and More Physics | Emre S. Tasci

a blog about physics, computation, computational physics and materials…

Suppose that I have a web server which consists of two identical computers behind a splitter that distributes the incoming requests made to a shared ip. Furthermore, the central repository is being kept on a different computer and as a final thing, assume that I sometimes use the computer located in my office, and sometimes the computer at my home as indicated in the following diagram:
mercurial_scheme

The red arrows indicate the mercurial transfers. You can see that, the changes are only applied to the servers, i.e., nobody codes directly there (no push, only pulls and ups). My two computers can also be thought of two different developers but that part actually isn’t very relevant to this entry’s message. The thing I want to happen is: whenever I push a change into the central repository, I would like to see that it is applied on the servers. In other words I want the following procedures to be automated after the PC@wherever: hg push operation:

  1. PC@wherever: hg com
  2. PC@wherever: hg push
  3. PC@wherever: ssh CentralRepo
  4. CentralRepo: hg up
  5. CentralRepo: ssh Server#1
  6. Server#1: hg pull
  7. Server#1: hg up
  8. Server#1: ssh Server#2
  9. Server#2: hg pull
  10. Server#2: hg up

Even though I’ll be using Mercurial in this entry, SVN implementation is pretty much similar. After all, we’ll be using the so-called hooks, i.e. the procedures that takes place upon a triggered event such as push.

Since we will be automating (and I’ll be using SSH for the communication between the nodes), it is essential that the nodes can communicate freely via the help of the ssh-keys (all the relevant information including the usage of “hg-ssh” can be found in a previous entry titled ‘Accessing Mercurial with limited SSH access using key and hg-ssh’).

The trigger event is the incoming data to the central repository, so we edit the .hg/hgrc file of the project on the central repository and type:

[hooks]
incoming = .hg/incominghook.sh > /dev/null

This hook just tells the mercurial to execute the ‘incominghook.sh’ script in the .hg directory (relative to the project’s root dir) whenever there’s an incoming data (i.e., “a push to this -central- repository). So what it should do? It should ‘hg up’ the central repository, for starters. Then, it should ‘ping’ the two servers so that they also pull and update from the -now up-to-date- central repository. This is what the incoming.sh script looks like:

#!/bin/sh
# Go to the project's dir no matter where you are
cd /path/to/the/project/repository/  
 
# Update it (since this is the central repo, there is no need to 'pull',
#                everybody is pushing to here)
hg up  
 
# Connect to the servers using the id files specifically generated for this purpose
# so that, upon connection, filtered by the command option
ssh -i ~/.ssh/id_rsa_specific_id_for_the_project__central_repo server1
ssh -i ~/.ssh/id_rsa_specific_id_for_the_project__central_repo server2

Again, if it is not very clear how will the servers get into action by a mere SSH connection, I do urge you to check the aforementioned entry.

The ~/.ssh/authorized_keys file on server1 contains the following related entry corresponding to the supplied id being used in the connection made from central repo:

command="/home/sururi/bin/hgpull_project_x.sh",
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnq.....==sururi@centralRepo (project X)

So that, when “somebody” connects with the relevant key_id file, the server executes the ‘hgpull_project_x.sh’ (located at /home/sururi/bin/) and returns the output, if any. You can guess that this script actually goes to the project’s location, pulls the changes and then ups it. As is evident from the contents of the ‘hgpull_project_x.sh’ script:

cd /path/to/the/project/on/server1
hg pull --ssh "ssh -i ~/.ssh/id_rsa_specific_id_for_the_project__server1" ssh://sururi@centralrepo//path/to/project
hg up

As you can learn from the strongly referred previous entry, the corresponding line on central repo’s authorized_keys file is something like:

command="hg-ssh /path/to/project/",no-port-forwarding,
no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB...

and we’re done.

Accessing Mercurial with limited SSH access using key and hg-ssh

August 28, 2011 Posted by Emre S. Tasci

Today, I wondered about (actually needed) the possibility to be able to limit (and hence connect afterwards) the access to the repository center of mercurial, using SSH.

To limit an SSH connection, you use ssh-keys: you create a pair of keys, private and public, using the ’ssh-keygen’ command and then adding the public one to the ~/.ssh/authorized_keys. As an example, consider two computers ‘local’ and ‘remote’ and we want to connect to remote from local without having to enter password every time. So, from the console of local, first I create the key pair:

sururi@local:/tmp/tmp$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sururi/.ssh/id_rsa): ./id_rsa_example
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ./id_rsa_example.
Your public key has been saved in ./id_rsa_example.pub.
The key fingerprint is:
84:59:8d:8c:43:4a:bc:31:ff:5a:12:23:34:45:56:67 sururi@remote
The key's randomart image is:
+--[ RSA 2048]----+
|   oAE*=A+o      |
|  .o.=..+=..     |
|   .o...         |
|                 |
|        XXX      |
+-----------------+

I didn’t specified any password because I’m intending to have it used automatically (in the hook procedures) and I specified the location of the pair files as the current directory with the names: id_rsa_example  & id_rsa_example.pub

Now, I should append the contents of the ‘id_rsa_example.pub’ file to the ./ssh/authorized_keys at the remote computer. To do this, of course, I should be able to connect it via SSH by normal means. So I execute (from the local computer):

ssh your_username@remote 'cat >> ~/.ssh/authorized_keys' < ./id_rsa_example.pub

And from this moment on -hopefully- you should be able to connect without the remote asking for your password (since we’re not using the default place & filename for the key, i.e. ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub, this newly generated key should be included with the “-i” (identity file) option as in: ssh -i /tmp/tmp/id_rsa_example yourusername:remote)… but, that wasn’t exactly what we wanted. We are thinking of a scenario where you’d like to (semi-)freely distribute the SSH access to the central repository to your developers while making sure that they wouldn’t (couldn’t) do something nasty while they are connected to the remote computer.

We can limit the things an SSH-connected user can do to a single thing via the authorized keys option. Checking this file on the remote computer’s ~/.ssh/authorized_keys file, you should see something like:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnq5rMLnoab+2F28g/nb58RBENWtX395TuyDFsYkalGaZxrziwDoau/wglkU19DbcAVKgw0p6lMEIuh2iALOppRzxrTgFFhJkL1dxzkugbbPEoSWyfrj9FivzpnxHWgRHQApQeWUBOZhroDTURwfqcyC9SW020CR57jLWfgw+idqwtCu+ZBYmEyHSJcZIH2mWXLrUQ8OalxCFVaLKL50Lpc7V8XJPs+Pg6MPVgfDUqMdjrGkAF7j4viOHTjDWP1h4Ngim70dOeyxWtuqbCbxM4APTShaqET42sj1jHxL2m1dJzXX8s/gEdN0O09hZPhI6rlC+ANWIdJ1vJfODMXWaQ== sururi@local

By adding the “command” option to the beginning of this line would make sure that whenever somebody with the corresponding key connects, that command is run automatically, the results passed back and the connection is terminated afterwards. So, far example. modifying the entry upstairs as:

command="date" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnq5rMLnoab+2F28g/nb58RBENWtX395TuyDFsYkalGaZxrziwDoau/wglkU19DbcAVKgw0p6lMEIuh2iALOppRzxrTgFFhJkL1dxzkugbbPEoSWyfrj9FivzpnxHWgRHQApQeWUBOZhroDTURwfqcyC9SW020CR57jLWfgw+idqwtCu+ZBYmEyHSJcZIH2mWXLrUQ8OalxCFVaLKL50Lpc7V8XJPs+Pg6MPVgfDUqMdjrGkAF7j4viOHTjDWP1h4Ngim70dOeyxWtuqbCbxM4APTShaqET42sj1jHxL2m1dJzXX8s/gEdN0O09hZPhI6rlC+ANWIdJ1vJfODMXWaQ== sururi@local== sururi@vala

would cause the following behaviour from the remote:

sururi@local:~$ ssh -i /tmp/tmp/id_rsa_example sururi@remote
Sun Aug 28 22:05:54 CEST 2011
Connection to remote closed.

I’m a bit tired now writing in full details, so will skip some obvious things from now on. Mercurial has an SSH-wrapper called ‘hg-ssh’ exactly for this purpose, and you can use it by specifying the paths of the repositories as command arguments as in:

command="hg-ssh /path/to/repository" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnq5rMLnoab+2F28g/nb58RBENWtX395TuyDFsYkalGaZxrziwDoau/wglkU19DbcAVKgw0p6lMEIuh2iALOppRzxrTgFFhJkL1dxzkugbbPEoSWyfrj9FivzpnxHWgRHQApQeWUBOZhroDTURwfqcyC9SW020CR57jLWfgw+idqwtCu+ZBYmEyHSJcZIH2mWXLrUQ8OalxCFVaLKL50Lpc7V8XJPs+Pg6MPVgfDUqMdjrGkAF7j4viOHTjDWP1h4Ngim70dOeyxWtuqbCbxM4APTShaqET42sj1jHxL2m1dJzXX8s/gEdN0O09hZPhI6rlC+ANWIdJ1vJfODMXWaQ== sururi@local

(and for more security, I would suggest you include the other options as well, such as:)

command="hg-ssh /path/to/repository",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnq5rMLnoab+2F28g/nb58RBENWtX395TuyDFsYkalGaZxrziwDoau/wglkU19DbcAVKgw0p6lMEIuh2iALOppRzxrTgFFhJkL1dxzkugbbPEoSWyfrj9FivzpnxHWgRHQApQeWUBOZhroDTURwfqcyC9SW020CR57jLWfgw+idqwtCu+ZBYmEyHSJcZIH2mWXLrUQ8OalxCFVaLKL50Lpc7V8XJPs+Pg6MPVgfDUqMdjrGkAF7j4viOHTjDWP1h4Ngim70dOeyxWtuqbCbxM4APTShaqET42sj1jHxL2m1dJzXX8s/gEdN0O09hZPhI6rlC+ANWIdJ1vJfODMXWaQ== sururi@local

and you can pull now on the local computer from the central repository at the remote computer with a command like:

sururi@local:~/project$ hg pull --ssh "ssh -i /tmp/tmp/id_rsa_example" ssh://sururi@remote//path/to/repo
pulling from ssh://sururi@remote//path/to/repo
searching for changes
no changes found

from SVN to Mercurial

August 23, 2011 Posted by Emre S. Tasci

I’ve been using SVN for revision control system for some time. I certainly benefited from it to organize or fall-back to a stable version (”the good old times”) when I was in trouble while I was computing solo but there were two things that always upset me while using it:

  • Commiting meant publishing: This issue might be worked around when you have your trunk (we actually have the trunk for the ‘most recent’ status and a ‘released’ branch for the tested and stable programs of that trunk) and each of the developers play in their branches until it looks OK and hence merge it to trunk (and hopefully eventually make it to the ‘released’ branch), but the problem is, most of the time I’m in the middle of the coding process (in my branch) and it would be nice if I didn’t affect the main repository everytime I made a commit (it’s really not very nice) – in other words, even in my branch I would like to save while not making them available. The answer to this lies of course in distributed revision control systems (dvcs).
  • Merging: Merging is hell in SVN when you have many developers. Been there, suffered that.

I had heard of git and bazaar but -for some reasons I don’t know why- never had taken the step to give them a try. Very recently, in a scientific gathering, one of the participants suggested me to use mercurial. The interesting thing about this is, he was suggesting it as a means to enable an “undo” option for a -scientifing- refinement program which has the tendency to update your files in according to the changes you applied. I know this sounds natural but when you tried some method and it didn’t worked, you couldn’t go just one step back and use a different method – you have to start from scratch with your initial input file and apply the methods so far but the last consecutively over again. So, my friend was actually recommending me to use a revision control system for the work files (which can be done perfectly well via SVN, by the way) and he happened to be using mercurial. He suggested to check this website by Joel Spolsky (http://hginit.com/) to get it going and the website is very intriguing, indeed. So I have been running some tests to get my feet wet and it was going so well until I found that the log command didn’t reveal the list of the changes made upon the files per changeset (’revision’ in terms of SVN). I searched and searched and at the end I found the solution on hg tip (http://hgtip.com/tips/advanced/2010-01-15-styling-mercurials-cli/) website by Steve Losh. His ‘Nice Log’ script was exactly what I was looking for plus some additional effective logging templates.

I don’t think for our big project I can make the switch from SVN to Mercurial, but from now on, I’ll be ‘hg init’ing instead of ’svnadmin create’ing for the projects to come.

    Having a personal wiki has its pros and cons with the pros being obvious but, on the other hand, one doesn’t feel like reposting what he has already committed into the corresponding wikipedia entry (and since reposting means filtering out the sensitive information and generalizing it, it is double the effort). So this fact, more or less, explains my absence of activity in this blog for the last 1.5 years. But then, there is one negative aspect of personal wikipedia “blogging” – it’s like putting everything under the rug : you classify the data/information and then you forget that it is there. That’s when “actual” blogging (like this one) comes handy. So, sorry & welcome back..

    Today, I’ll present a code that I’ve just written to parse out the compatible paths from a tree. In my case, the three is the list of subgroups with indexes that one can acquire using Bilbao Crystallographic Server’s marvelous SUBGROUPGRAPH tool. For low indexes, you can already have SUBGROUPGRAPH do this for you by specifying your supergroup G, subgroup H and the index [G:H]. For example, for G=136, H=14 and [G:H] = 8, you can have the following paths drawn:

    subgroupgraph_tempfile963

    But as I said, things can get rough when you have a high index. In that case, we can (and we will) try to parse and analyze the paths tree which is outputted by SUBGROUPGRAPH when no index is designated, e.g., for G=136, H=14:

    maxsubs_subggraph

    Where you see the maximal subgroups for the involved groups and their corresponding indexes. So, to go from P4_2/mnm (#136) to P2_1/c (#14) with index 8, we can follow the path:

    P4_2/mnm (#136) –[2]–> Cmmm (#65) –[2]–> Pmna (#53) –[2]–> P2_1/c (#14)

    with the related indexes given in the brackets totaling to 2×2x2 = 8.

    The problem I had today was to find possible paths going from G=Fd-3m (#227) to H=Cc (#9) with index [G:H] = 192.

    I first parsed the subgroup list into an array with their indexes, then followed the possible paths.

    <?PHP
    /* Emre S. Tasci <exxx.txxxx@ehu.es>                    *
     * By parsing the possible subgroup paths obtained from 
     * SUBGROUPGRAPH, finds the paths that are compatible 
     * with the given terminal super & sub groups and the 
     * designated index.
     *
     *                                              06/06/11 */
     
    # Input Data === 0 ====================================================
    $start_sup = 227;
    $crit_index = 192;
    $end_sub = 9;
     
    $arr = file("data.txt"); # A sample of data.txt for the case of #227->#9
                             # is included at the end of the code.
    
    # Input Data === 1 ====================================================
    
    $arr_subs = Array();
    $arr_labels = Array();
    foreach($arr as $line)
    {
        $auxarr = preg_split("/[ \t]+/",trim($line));
        #echo $auxarr[2]."\n";
        $sup = $auxarr[1];
        $suplabel = $auxarr[2];
        $arrsubs = split(";",$auxarr[3]);
        $arr_labels[$sup] = $suplabel;
        foreach($arrsubs as $subind)
        {
            $auxarr2 = Array();
            preg_match("/([0-9]+)\[([0-9]+)\]/",$subind,$auxarr2);
            #print_r($auxarr2);
            $sub = $auxarr2[1];
            $index = $auxarr2[2];
            $arr_subs[$sup][$index][] = $sub;
        }
    }
    #print_r($arr_subs);
    
     
    # Start exploring
    $start_sup = sprintf("%03d",$start_sup);
    $end_sub = sprintf("%03d",$end_sub);
    $arr_paths = Array();
    $arr_paths[$start_sup] = 1;
     
    findpath($start_sup);
     
    function findpath($current_sup)
    {
        global $arr_paths,$arr_subs,$crit_index,$end_sub;
        #echo "*".$current_sup."*\n";
        if(strrpos($current_sup,"-") !== FALSE)
        {
            $current_sup_last_sup = substr($current_sup,strrpos($current_sup,"-")+1);
            $current_sup_last_sup = substr($current_sup_last_sup,0,strpos($current_sup_last_sup,"["));
        }
     
        else
            $current_sup_last_sup = $current_sup;
        #echo "*".$current_sup_last_sup."*\n";
        $subindexes = array_keys($arr_subs[$current_sup_last_sup]);
        foreach($subindexes as $subindex)
        {
            $subs = $arr_subs[$current_sup_last_sup][$subindex];
            echo $subindex.": ".join(",",$subs)."\n";
            foreach($subs as $sub)
            {
                echo $current_sup."-".$sub."[".$subindex."]"."\n";
                $arr_paths[$current_sup."-".$sub."[".$subindex."]"] = $arr_paths[$current_sup] * $subindex;
                if($arr_paths[$current_sup."-".$sub."[".$subindex."]"]<$crit_index)
                    findpath($current_sup."-".$sub."[".$subindex."]");
                elseif($arr_paths[$current_sup."-".$sub."[".$subindex."]"] == $crit_index && $sub == $end_sub)
                    echo "\nPath Found: ".$current_sup."-".$sub."[".$subindex."]"."\n\n";
            }
        }
        #print_r($subindexes);
    }
    print_r($arr_paths);
     
     
     
    /*
        data.txt:
    1 	227 	Fd-3m 	141[3];166[4];203[2];216[2]
    2 	220 	I-43d 	122[3];161[4]
    3 	219 	F-43c 	120[3];161[4];218[4]
    4 	218 	P-43n 	112[3];161[4];220[4]
    5 	217 	I-43m 	121[3];160[4];215[2];218[2]
    6 	216 	F-43m 	119[3];160[4];215[4]
    7 	215 	P-43m 	111[3];160[4];216[2];217[4];219[2]
    8 	203 	Fd-3 	070[3]
    9 	167 	R-3c 	015[3];161[2];165[3];167[4];167[5];167[7]
    10 	166 	R-3m 	012[3];160[2];164[3];166[2];166[4];166[5];166[7];167[2]
    11 	165 	P-3c1 	015[3];158[2];163[3];165[3];165[4];165[5];165[7]
    12 	164 	P-3m1 	012[3];156[2];162[3];164[2];164[3];164[4];164[5];164[7];165[2]
    13 	163 	P-31c 	015[3];159[2];163[3];163[4];163[5];163[7];165[3];167[3]
    14 	162 	P-31m 	012[3];157[2];162[2];162[3];162[4];162[5];162[7];163[2];164[3];166[3]
    15 	161 	R3c 	009[3];158[3];161[4];161[5];161[7]
    16 	160 	R3m 	008[3];156[3];160[2];160[4];160[5];160[7];161[2]
    17 	159 	P31c 	009[3];158[3];159[3];159[4];159[5];159[7];161[3]
    18 	158 	P3c1 	009[3];158[3];158[4];158[5];158[7];159[3]
    19 	157 	P31m 	008[3];156[3];157[2];157[3];157[4];157[5];157[7];159[2];160[3]
    20 	156 	P3m1 	008[3];156[2];156[3];156[4];156[5];156[7];157[3];158[2]
    21 	141 	I41/amd 	070[2];074[2];088[2];109[2];119[2];122[2];141[3];141[5];141[7];141[9]
    22 	122 	I-42d 	043[2];122[3];122[5];122[7];122[9]
    23 	121 	I-42m 	042[2];111[2];112[2];113[2];114[2];121[3];121[5];121[7];121[9]
    24 	120 	I-4c2 	045[2];116[2];117[2];120[3];120[5];120[7];120[9]
    25 	119 	I-4m2 	044[2];115[2];118[2];119[3];119[5];119[7];119[9]
    26 	118 	P-4n2 	034[2];118[3];118[5];118[7];118[9];122[2]
    27 	117 	P-4b2 	032[2];117[2];117[3];117[5];117[7];117[9];118[2]
    28 	116 	P-4c2 	027[2];112[2];114[2];116[3];116[5];116[7];116[9]
    29 	115 	P-4m2 	025[2];111[2];113[2];115[2];115[3];115[5];115[7];115[9];116[2];121[2]
    30 	114 	P-421c 	037[2];114[3];114[5];114[7];114[9]
    31 	113 	P-421m 	035[2];113[2];113[3];113[5];113[7];113[9];114[2]
    32 	112 	P-42c 	037[2];112[3];112[5];112[7];112[9];116[2];118[2]
    33 	111 	P-42m 	035[2];111[2];111[3];111[5];111[7];111[9];112[2];115[2];117[2];119[2];120[2]
    34 	109 	I41md 	043[2];044[2];109[3];109[5];109[7];109[9]
    35 	088 	I41/a 	015[2];088[3];088[5];088[7];088[9]
    36 	074 	Imma 	012[2];015[2];044[2];046[2];051[2];052[2];053[2];062[2];074[3];074[5];074[7]
    37 	070 	Fddd 	015[2];043[2];070[3];070[5];070[7]
    38 	064 	Cmce 	012[2];014[2];015[2];036[2];039[2];041[2];053[2];054[2];055[2];056[2];057[2];060[2];061[2];062[2];064[3];064[5];064[7]
    39 	063 	Cmcm 	011[2];012[2];015[2];036[2];038[2];040[2];051[2];052[2];057[2];058[2];059[2];060[2];062[2];063[3];063[5];063[7]
    40 	062 	Pnma 	011[2];014[2];026[2];031[2];033[2];062[3];062[5];062[7]
    41 	061 	Pbca 	014[2];029[2];061[3];061[5];061[7]
    42 	060 	Pbcn 	013[2];014[2];029[2];030[2];033[2];060[3];060[5];060[7]
    43 	059 	Pmmn 	011[2];013[2];025[2];031[2];056[2];059[2];059[3];059[5];059[7];062[2]
    44 	058 	Pnnm 	010[2];014[2];031[2];034[2];058[3];058[5];058[7]
    45 	057 	Pbcm 	011[2];013[2];014[2];026[2];028[2];029[2];057[2];057[3];057[5];057[7];060[2];061[2];062[2]
    46 	056 	Pccn 	013[2];014[2];027[2];033[2];056[3];056[5];056[7]
    47 	055 	Pbam 	010[2];014[2];026[2];032[2];055[2];055[3];055[5];055[7];058[2];062[2]
    48 	054 	Pcca 	013[2];014[2];027[2];029[2];032[2];052[2];054[2];054[3];054[5];054[7];056[2];060[2]
    49 	053 	Pmna 	010[2];013[2];014[2];028[2];030[2];031[2];052[2];053[2];053[3];053[5];053[7];058[2];060[2]
    50 	052 	Pnna 	013[2];014[2];030[2];033[2];034[2];052[3];052[5];052[7]
    51 	051 	Pmma 	010[2];011[2];013[2];025[2];026[2];028[2];051[2];051[3];051[5];051[7];053[2];054[2];055[2];057[2];059[2];063[2];064[2]
    52 	046 	Ima2 	008[2];009[2];026[2];028[2];030[2];033[2];046[3];046[5];046[7]
    53 	045 	Iba2 	009[2];027[2];029[2];032[2];045[3];045[5];045[7]
    54 	044 	Imm2 	008[2];025[2];031[2];034[2];044[3];044[5];044[7]
    55 	043 	Fdd2 	009[2];043[3];043[5];043[7]
    56 	042 	Fmm2 	008[2];035[2];036[2];037[2];038[2];039[2];040[2];041[2];042[3];042[5];042[7]
    57 	041 	Aea2 	007[2];009[2];029[2];030[2];032[2];033[2];041[3];041[5];041[7]
    58 	040 	Ama2 	006[2];009[2];028[2];031[2];033[2];034[2];040[3];040[5];040[7]
    59 	039 	Aem2 	007[2];008[2];026[2];027[2];028[2];029[2];039[2];039[3];039[5];039[7];041[2];045[2];046[2]
    60 	038 	Amm2 	006[2];008[2];025[2];026[2];030[2];031[2];038[2];038[3];038[5];038[7];040[2];044[2];046[2]
    61 	037 	Ccc2 	009[2];027[2];030[2];034[2];037[3];037[5];037[7]
    62 	036 	Cmc21 	008[2];009[2];026[2];029[2];031[2];033[2];036[3];036[5];036[7]
    63 	035 	Cmm2 	008[2];025[2];028[2];032[2];035[2];035[3];035[5];035[7];036[2];037[2];044[2];045[2];046[2]
    64 	034 	Pnn2 	007[2];034[3];034[5];034[7];043[2]
    65 	033 	Pna21 	007[2];033[3];033[5];033[7]
    66 	032 	Pba2 	007[2];032[2];032[3];032[5];032[7];033[2];034[2]
    67 	031 	Pmn21 	006[2];007[2];031[2];031[3];031[5];031[7];033[2]
    68 	030 	Pnc2 	007[2];030[2];030[3];030[5];030[7];034[2]
    69 	029 	Pca21 	007[2];029[2];029[3];029[5];029[7];033[2]
    70 	028 	Pma2 	006[2];007[2];028[2];028[3];028[5];028[7];029[2];030[2];031[2];032[2];040[2];041[2]
    71 	027 	Pcc2 	007[2];027[2];027[3];027[5];027[7];030[2];037[2]
    72 	026 	Pmc21 	006[2];007[2];026[2];026[3];026[5];026[7];029[2];031[2];036[2]
    73 	025 	Pmm2 	006[2];025[2];025[3];025[5];025[7];026[2];027[2];028[2];035[2];038[2];039[2];042[2]
    74 	015 	C2/c 	009[2];013[2];014[2];015[3];015[5];015[7]
    75 	014 	P21/c 	007[2];014[2];014[3];014[5];014[7]
    76 	013 	P2/c 	007[2];013[2];013[3];013[5];013[7];014[2];015[2]
    77 	012 	C2/m 	008[2];010[2];011[2];012[2];012[3];012[5];012[7];013[2];014[2];015[2]
    78 	011 	P21/m 	006[2];011[2];011[3];011[5];011[7];014[2]
    79 	010 	P2/m 	006[2];010[2];010[3];010[5];010[7];011[2];012[2];013[2]
    80 	008 	Cm 	006[2];007[2];008[2];008[3];008[5];008[7];009[2]
    81 	007 	Pc 	007[2];007[3];007[5];007[7];009[2]
    82 	006 	Pm 	006[2];006[3];006[5];006[7];007[2];008[2]
    83 	009 	Cc 	007[2];009[3];009[5];009[7]
     */

    When run, the code lists all the paths with the matching ones preceded by “Path Found”, so if you grep wrt it, you’ll have, for this example:

    sururi@husniya:/xxx$ php find_trpath_for_index.php |grep Path|sed "s:Path Found\: ::"
    227-141[3]-070[2]-015[2]-009[2]-007[2]-007[2]-009[2]
    227-141[3]-070[2]-015[2]-013[2]-007[2]-007[2]-009[2]
    227-141[3]-070[2]-015[2]-013[2]-013[2]-007[2]-009[2]
    227-141[3]-070[2]-015[2]-013[2]-013[2]-015[2]-009[2]
    227-141[3]-070[2]-015[2]-013[2]-014[2]-007[2]-009[2]
    227-141[3]-070[2]-015[2]-014[2]-007[2]-007[2]-009[2]
    227-141[3]-070[2]-015[2]-014[2]-014[2]-007[2]-009[2]
    227-141[3]-070[2]-043[2]-009[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-008[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-008[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-012[2]-008[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-008[2]-008[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-008[2]-008[2]-008[2]-009[2]
    227-141[3]-074[2]-012[2]-008[2]-009[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-010[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-010[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-012[2]-010[2]-012[2]-008[2]-009[2]
    227-141[3]-074[2]-012[2]-010[2]-012[2]-015[2]-009[2]
    227-141[3]-074[2]-012[2]-010[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-010[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-012[2]-011[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-011[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-012[2]-011[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-012[2]-008[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-012[2]-008[2]-008[2]-009[2]
    227-141[3]-074[2]-012[2]-012[2]-012[2]-008[2]-009[2]
    227-141[3]-074[2]-012[2]-012[2]-012[2]-015[2]-009[2]
    227-141[3]-074[2]-012[2]-012[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-012[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-012[2]-012[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-013[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-013[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-013[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-012[2]-013[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-014[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-014[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-015[2]-009[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-015[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-012[2]-015[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-012[2]-015[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-015[2]-009[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-015[2]-013[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-015[2]-013[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-015[2]-013[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-015[2]-013[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-015[2]-014[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-015[2]-014[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-008[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-008[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-044[2]-008[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-008[2]-008[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-008[2]-008[2]-008[2]-009[2]
    227-141[3]-074[2]-044[2]-008[2]-009[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-026[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-026[2]-036[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-027[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-027[2]-037[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-028[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-028[2]-040[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-028[2]-041[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-035[2]-008[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-035[2]-036[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-035[2]-037[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-035[2]-045[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-035[2]-046[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-038[2]-008[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-038[2]-040[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-038[2]-046[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-039[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-039[2]-008[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-039[2]-041[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-039[2]-045[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-039[2]-046[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-042[2]-008[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-042[2]-036[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-042[2]-037[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-042[2]-040[2]-009[2]
    227-141[3]-074[2]-044[2]-025[2]-042[2]-041[2]-009[2]
    227-141[3]-074[2]-044[2]-031[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-031[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-044[2]-031[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-031[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-031[2]-033[2]-007[2]-009[2]
    227-141[3]-074[2]-044[2]-034[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-008[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-008[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-046[2]-008[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-008[2]-008[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-008[2]-008[2]-008[2]-009[2]
    227-141[3]-074[2]-046[2]-008[2]-009[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-009[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-026[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-026[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-046[2]-026[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-026[2]-026[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-026[2]-026[2]-036[2]-009[2]
    227-141[3]-074[2]-046[2]-026[2]-029[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-026[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-026[2]-036[2]-008[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-028[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-028[2]-040[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-028[2]-041[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-029[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-030[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-032[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-028[2]-041[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-030[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-030[2]-030[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-030[2]-034[2]-007[2]-009[2]
    227-141[3]-074[2]-046[2]-030[2]-034[2]-043[2]-009[2]
    227-141[3]-074[2]-046[2]-033[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-010[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-010[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-010[2]-012[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-010[2]-012[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-010[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-010[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-011[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-011[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-011[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-013[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-013[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-013[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-013[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-026[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-026[2]-036[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-027[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-027[2]-037[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-028[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-028[2]-040[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-028[2]-041[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-035[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-035[2]-036[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-035[2]-037[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-035[2]-045[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-035[2]-046[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-038[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-038[2]-040[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-038[2]-046[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-039[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-039[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-039[2]-041[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-039[2]-045[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-039[2]-046[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-042[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-042[2]-036[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-042[2]-037[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-042[2]-040[2]-009[2]
    227-141[3]-074[2]-051[2]-025[2]-042[2]-041[2]-009[2]
    227-141[3]-074[2]-051[2]-026[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-026[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-026[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-026[2]-026[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-026[2]-026[2]-036[2]-009[2]
    227-141[3]-074[2]-051[2]-026[2]-029[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-026[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-026[2]-036[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-028[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-028[2]-040[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-028[2]-041[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-029[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-030[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-032[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-028[2]-041[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-026[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-026[2]-036[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-028[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-028[2]-040[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-028[2]-041[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-063[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-063[2]-036[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-063[2]-040[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-064[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-064[2]-036[2]-009[2]
    227-141[3]-074[2]-051[2]-051[2]-064[2]-041[2]-009[2]
    227-141[3]-074[2]-051[2]-053[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-053[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-053[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-053[2]-028[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-053[2]-028[2]-040[2]-009[2]
    227-141[3]-074[2]-051[2]-053[2]-028[2]-041[2]-009[2]
    227-141[3]-074[2]-051[2]-053[2]-030[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-053[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-054[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-054[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-054[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-054[2]-027[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-054[2]-027[2]-037[2]-009[2]
    227-141[3]-074[2]-051[2]-054[2]-029[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-054[2]-032[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-055[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-055[2]-026[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-055[2]-026[2]-036[2]-009[2]
    227-141[3]-074[2]-051[2]-055[2]-032[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-057[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-057[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-057[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-057[2]-026[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-057[2]-026[2]-036[2]-009[2]
    227-141[3]-074[2]-051[2]-057[2]-028[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-057[2]-028[2]-040[2]-009[2]
    227-141[3]-074[2]-051[2]-057[2]-028[2]-041[2]-009[2]
    227-141[3]-074[2]-051[2]-057[2]-029[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-059[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-059[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-059[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-063[2]-012[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-063[2]-012[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-063[2]-036[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-063[2]-038[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-063[2]-038[2]-040[2]-009[2]
    227-141[3]-074[2]-051[2]-063[2]-038[2]-046[2]-009[2]
    227-141[3]-074[2]-051[2]-064[2]-012[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-064[2]-012[2]-015[2]-009[2]
    227-141[3]-074[2]-051[2]-064[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-064[2]-036[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-064[2]-039[2]-007[2]-009[2]
    227-141[3]-074[2]-051[2]-064[2]-039[2]-008[2]-009[2]
    227-141[3]-074[2]-051[2]-064[2]-039[2]-041[2]-009[2]
    227-141[3]-074[2]-051[2]-064[2]-039[2]-045[2]-009[2]
    227-141[3]-074[2]-051[2]-064[2]-039[2]-046[2]-009[2]
    227-141[3]-074[2]-051[2]-064[2]-041[2]-007[2]-009[2]
    227-141[3]-074[2]-052[2]-013[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-052[2]-013[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-052[2]-013[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-052[2]-013[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-052[2]-014[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-052[2]-014[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-052[2]-030[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-052[2]-030[2]-030[2]-007[2]-009[2]
    227-141[3]-074[2]-052[2]-030[2]-034[2]-007[2]-009[2]
    227-141[3]-074[2]-052[2]-030[2]-034[2]-043[2]-009[2]
    227-141[3]-074[2]-052[2]-033[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-052[2]-034[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-010[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-010[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-053[2]-010[2]-012[2]-008[2]-009[2]
    227-141[3]-074[2]-053[2]-010[2]-012[2]-015[2]-009[2]
    227-141[3]-074[2]-053[2]-010[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-010[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-053[2]-013[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-013[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-013[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-053[2]-013[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-014[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-014[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-028[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-028[2]-040[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-028[2]-041[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-029[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-030[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-032[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-028[2]-041[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-030[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-030[2]-030[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-030[2]-034[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-030[2]-034[2]-043[2]-009[2]
    227-141[3]-074[2]-053[2]-031[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-031[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-053[2]-031[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-031[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-031[2]-033[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-052[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-052[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-053[2]-052[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-052[2]-030[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-052[2]-033[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-052[2]-034[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-052[2]-034[2]-043[2]-009[2]
    227-141[3]-074[2]-053[2]-053[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-053[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-053[2]-053[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-053[2]-028[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-053[2]-028[2]-040[2]-009[2]
    227-141[3]-074[2]-053[2]-053[2]-028[2]-041[2]-009[2]
    227-141[3]-074[2]-053[2]-053[2]-030[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-053[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-058[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-058[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-058[2]-034[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-058[2]-034[2]-043[2]-009[2]
    227-141[3]-074[2]-053[2]-060[2]-013[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-060[2]-013[2]-015[2]-009[2]
    227-141[3]-074[2]-053[2]-060[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-060[2]-029[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-060[2]-030[2]-007[2]-009[2]
    227-141[3]-074[2]-053[2]-060[2]-033[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-011[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-011[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-062[2]-011[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-014[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-014[2]-014[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-026[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-026[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-062[2]-026[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-026[2]-026[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-026[2]-026[2]-036[2]-009[2]
    227-141[3]-074[2]-062[2]-026[2]-029[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-026[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-026[2]-036[2]-008[2]-009[2]
    227-141[3]-074[2]-062[2]-031[2]-006[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-031[2]-006[2]-008[2]-009[2]
    227-141[3]-074[2]-062[2]-031[2]-007[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-031[2]-031[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-031[2]-033[2]-007[2]-009[2]
    227-141[3]-074[2]-062[2]-033[2]-007[2]-007[2]-009[2]
    227-141[3]-088[2]-015[2]-009[2]-007[2]-007[2]-009[2]
    227-141[3]-088[2]-015[2]-013[2]-007[2]-007[2]-009[2]
    227-141[3]-088[2]-015[2]-013[2]-013[2]-007[2]-009[2]
    227-141[3]-088[2]-015[2]-013[2]-013[2]-015[2]-009[2]
    227-141[3]-088[2]-015[2]-013[2]-014[2]-007[2]-009[2]
    227-141[3]-088[2]-015[2]-014[2]-007[2]-007[2]-009[2]
    227-141[3]-088[2]-015[2]-014[2]-014[2]-007[2]-009[2]
    227-141[3]-109[2]-043[2]-009[2]-007[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-008[2]-006[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-008[2]-006[2]-008[2]-009[2]
    227-141[3]-109[2]-044[2]-008[2]-007[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-008[2]-008[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-008[2]-008[2]-008[2]-009[2]
    227-141[3]-109[2]-044[2]-008[2]-009[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-006[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-006[2]-008[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-026[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-026[2]-036[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-027[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-027[2]-037[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-028[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-028[2]-040[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-028[2]-041[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-035[2]-008[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-035[2]-036[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-035[2]-037[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-035[2]-045[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-035[2]-046[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-038[2]-008[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-038[2]-040[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-038[2]-046[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-039[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-039[2]-008[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-039[2]-041[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-039[2]-045[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-039[2]-046[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-042[2]-008[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-042[2]-036[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-042[2]-037[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-042[2]-040[2]-009[2]
    227-141[3]-109[2]-044[2]-025[2]-042[2]-041[2]-009[2]
    227-141[3]-109[2]-044[2]-031[2]-006[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-031[2]-006[2]-008[2]-009[2]
    227-141[3]-109[2]-044[2]-031[2]-007[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-031[2]-031[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-031[2]-033[2]-007[2]-009[2]
    227-141[3]-109[2]-044[2]-034[2]-007[2]-007[2]-009[2]
    227-141[3]-119[2]-044[2]-008[2]-006[2]-007[2]-009[2]
    227-141[3]-119[2]-044[2]-008[2]-006[2]-008[2]-009[2]
    227-141[3]-119[2]-044[2]-008[2]-007[2]-007[2]-009[2]
    227-141[3]-119[2]-044[2]-008[2]-008[2]-007[2]-009[2]
    227-141[3]-119[2]-044[2]-008[2]-008[2]-008[2]-009[2]
    227-141[3]-119[2]-044[2]-008[2]-009[2]-007[2]-009[2