0x60806040523480156200001157600080fd5b50604051620015d5380380620015d583398181016040528101906200003791906200026c565b620000576200004b6200012260201b60201c565b6200012a60201b60201c565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620002b3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200022082620001f3565b9050919050565b6000620002348262000213565b9050919050565b620002468162000227565b81146200025257600080fd5b50565b60008151905062000266816200023b565b92915050565b60008060408385031215620002865762000285620001ee565b5b6000620002968582860162000255565b9250506020620002a98582860162000255565b9150509250929050565b61131280620002c36000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80637fc27803116100715780637fc2780314610165578063886a5e21146101835780638da5cb5b146101a1578063defe1141146101bf578063f2fde38b146101db578063f9ce733b146101f7576100b4565b8063150b7a02146100b957806329db8558146100e95780635b995bc9146101055780636ba4c138146101235780636d1d8d491461013f578063715018a61461015b575b600080fd5b6100d360048036038101906100ce9190610b0c565b610215565b6040516100e09190610bcf565b60405180910390f35b61010360048036038101906100fe9190610c28565b610243565b005b61010d610345565b60405161011a9190610c77565b60405180910390f35b61013d60048036038101906101389190610de1565b61036b565b005b61015960048036038101906101549190610e2a565b6105d3565b005b610163610693565b005b61016d61071b565b60405161017a9190610e72565b60405180910390f35b61018b61072e565b6040516101989190610eec565b60405180910390f35b6101a9610754565b6040516101b69190610c77565b60405180910390f35b6101d960048036038101906101d49190610f33565b61077d565b005b6101f560048036038101906101f09190610e2a565b610816565b005b6101ff61090d565b60405161020c9190610eec565b60405180910390f35b60007f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f905095945050505050565b61024b610933565b73ffffffffffffffffffffffffffffffffffffffff16610269610754565b73ffffffffffffffffffffffffffffffffffffffff16146102bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b690610fbd565b60405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff166103ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b19061104f565b60405180910390fd5b60005b81518110156105cf576000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8484815181106104195761041861106f565b5b60200260200101516040518263ffffffff1660e01b815260040161043d91906110ad565b602060405180830381865afa15801561045a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047e91906110dd565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146104ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e59061117c565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16338686815181106105635761056261106f565b5b60200260200101516040518463ffffffff1660e01b81526004016105899392919061119c565b600060405180830381600087803b1580156105a357600080fd5b505af11580156105b7573d6000803e3d6000fd5b505050505080806105c790611202565b9150506103bd565b5050565b6105db610933565b73ffffffffffffffffffffffffffffffffffffffff166105f9610754565b73ffffffffffffffffffffffffffffffffffffffff161461064f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064690610fbd565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61069b610933565b73ffffffffffffffffffffffffffffffffffffffff166106b9610754565b73ffffffffffffffffffffffffffffffffffffffff161461070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690610fbd565b60405180910390fd5b610719600061093b565b565b600260149054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610785610933565b73ffffffffffffffffffffffffffffffffffffffff166107a3610754565b73ffffffffffffffffffffffffffffffffffffffff16146107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f090610fbd565b60405180910390fd5b80600260146101000a81548160ff02191690831515021790555050565b61081e610933565b73ffffffffffffffffffffffffffffffffffffffff1661083c610754565b73ffffffffffffffffffffffffffffffffffffffff1614610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088990610fbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f8906112bc565b60405180910390fd5b61090a8161093b565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a3e82610a13565b9050919050565b610a4e81610a33565b8114610a5957600080fd5b50565b600081359050610a6b81610a45565b92915050565b6000819050919050565b610a8481610a71565b8114610a8f57600080fd5b50565b600081359050610aa181610a7b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610acc57610acb610aa7565b5b8235905067ffffffffffffffff811115610ae957610ae8610aac565b5b602083019150836001820283011115610b0557610b04610ab1565b5b9250929050565b600080600080600060808688031215610b2857610b27610a09565b5b6000610b3688828901610a5c565b9550506020610b4788828901610a5c565b9450506040610b5888828901610a92565b935050606086013567ffffffffffffffff811115610b7957610b78610a0e565b5b610b8588828901610ab6565b92509250509295509295909350565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610bc981610b94565b82525050565b6000602082019050610be46000830184610bc0565b92915050565b6000610bf582610a33565b9050919050565b610c0581610bea565b8114610c1057600080fd5b50565b600081359050610c2281610bfc565b92915050565b60008060408385031215610c3f57610c3e610a09565b5b6000610c4d85828601610c13565b9250506020610c5e85828601610c13565b9150509250929050565b610c7181610a33565b82525050565b6000602082019050610c8c6000830184610c68565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610cdb82610c92565b810181811067ffffffffffffffff82111715610cfa57610cf9610ca3565b5b80604052505050565b6000610d0d6109ff565b9050610d198282610cd2565b919050565b600067ffffffffffffffff821115610d3957610d38610ca3565b5b602082029050602081019050919050565b6000610d5d610d5884610d1e565b610d03565b90508083825260208201905060208402830185811115610d8057610d7f610ab1565b5b835b81811015610da95780610d958882610a92565b845260208401935050602081019050610d82565b5050509392505050565b600082601f830112610dc857610dc7610aa7565b5b8135610dd8848260208601610d4a565b91505092915050565b600060208284031215610df757610df6610a09565b5b600082013567ffffffffffffffff811115610e1557610e14610a0e565b5b610e2184828501610db3565b91505092915050565b600060208284031215610e4057610e3f610a09565b5b6000610e4e84828501610a5c565b91505092915050565b60008115159050919050565b610e6c81610e57565b82525050565b6000602082019050610e876000830184610e63565b92915050565b6000819050919050565b6000610eb2610ead610ea884610a13565b610e8d565b610a13565b9050919050565b6000610ec482610e97565b9050919050565b6000610ed682610eb9565b9050919050565b610ee681610ecb565b82525050565b6000602082019050610f016000830184610edd565b92915050565b610f1081610e57565b8114610f1b57600080fd5b50565b600081359050610f2d81610f07565b92915050565b600060208284031215610f4957610f48610a09565b5b6000610f5784828501610f1e565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610fa7602083610f60565b9150610fb282610f71565b602082019050919050565b60006020820190508181036000830152610fd681610f9a565b9050919050565b7f50657473436c61696d4d616e616765723a20436c61696d696e6720697320637560008201527f7272656e746c792064697361626c656400000000000000000000000000000000602082015250565b6000611039603083610f60565b915061104482610fdd565b604082019050919050565b600060208201905081810360008301526110688161102c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6110a781610a71565b82525050565b60006020820190506110c2600083018461109e565b92915050565b6000815190506110d781610a45565b92915050565b6000602082840312156110f3576110f2610a09565b5b6000611101848285016110c8565b91505092915050565b7f50657473436c61696d4d616e616765723a20796f752063616e206f6e6c79206360008201527f6c61696d207065747320666f7220636865667320796f75206f776e0000000000602082015250565b6000611166603b83610f60565b91506111718261110a565b604082019050919050565b6000602082019050818103600083015261119581611159565b9050919050565b60006060820190506111b16000830186610c68565b6111be6020830185610c68565b6111cb604083018461109e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061120d82610a71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361123f5761123e6111d3565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006112a6602683610f60565b91506112b18261124a565b604082019050919050565b600060208201905081810360008301526112d581611299565b905091905056fea26469706673582212205118c68297fa8261a486926776531795c891b776befec30335676cbf0980d98964736f6c634300080d003300000000000000000000000094a8e24f22ea5700f9fe56d2719cd1a12341fb4a000000000000000000000000152cc0b640fa85fecff43d2a417fa9b369661b97