0x60806040523480156200001157600080fd5b506040518060400160405280600581526020017f41636556320000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4e6577416365000000000000000000000000000000000000000000000000000081525081600390816200008f91906200042d565b508060049081620000a191906200042d565b505050620000c4620000b8620000e560201b60201c565b620000ed60201b60201c565b6000600960146101000a81548160ff02191690831515021790555062000514565b600033905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200023557607f821691505b6020821081036200024b576200024a620001ed565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002b57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000276565b620002c1868362000276565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200030e620003086200030284620002d9565b620002e3565b620002d9565b9050919050565b6000819050919050565b6200032a83620002ed565b62000342620003398262000315565b84845462000283565b825550505050565b600090565b620003596200034a565b620003668184846200031f565b505050565b5b818110156200038e57620003826000826200034f565b6001810190506200036c565b5050565b601f821115620003dd57620003a78162000251565b620003b28462000266565b81016020851015620003c2578190505b620003da620003d18562000266565b8301826200036b565b50505b505050565b600082821c905092915050565b60006200040260001984600802620003e2565b1980831691505092915050565b60006200041d8383620003ef565b9150826002028217905092915050565b6200043882620001b3565b67ffffffffffffffff811115620004545762000453620001be565b5b6200046082546200021c565b6200046d82828562000392565b600060209050601f831160018114620004a5576000841562000490578287015190505b6200049c85826200040f565b8655506200050c565b601f198416620004b58662000251565b60005b82811015620004df57848901518255600182019150602085019450602081019050620004b8565b86831015620004ff5784890151620004fb601f891682620003ef565b8355505b6001600288020188555050505b505050505050565b6125a280620005246000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c35780639711715a1161007c5780639711715a14610368578063981b24d014610372578063a457c2d7146103a2578063a9059cbb146103d2578063dd62ed3e14610402578063f2fde38b146104325761014d565b806370a08231146102cc578063715018a6146102fc57806379cc6790146103065780638456cb59146103225780638da5cb5b1461032c57806395d89b411461034a5761014d565b80633950935111610115578063395093511461020c5780633f4ba83a1461023c57806340c10f191461024657806342966c68146102625780634ee2cd7e1461027e5780635c975abb146102ae5761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd146101a057806323b872dd146101be578063313ce567146101ee575b600080fd5b61015a61044e565b6040516101679190611927565b60405180910390f35b61018a600480360381019061018591906119e2565b6104e0565b6040516101979190611a3d565b60405180910390f35b6101a8610503565b6040516101b59190611a67565b60405180910390f35b6101d860048036038101906101d39190611a82565b61050d565b6040516101e59190611a3d565b60405180910390f35b6101f661053c565b6040516102039190611af1565b60405180910390f35b610226600480360381019061022191906119e2565b610545565b6040516102339190611a3d565b60405180910390f35b61024461057c565b005b610260600480360381019061025b91906119e2565b61058e565b005b61027c60048036038101906102779190611b0c565b6105a4565b005b610298600480360381019061029391906119e2565b6105b8565b6040516102a59190611a67565b60405180910390f35b6102b6610628565b6040516102c39190611a3d565b60405180910390f35b6102e660048036038101906102e19190611b39565b61063f565b6040516102f39190611a67565b60405180910390f35b610304610687565b005b610320600480360381019061031b91906119e2565b61069b565b005b61032a6106bb565b005b6103346106cd565b6040516103419190611b75565b60405180910390f35b6103526106f7565b60405161035f9190611927565b60405180910390f35b610370610789565b005b61038c60048036038101906103879190611b0c565b61079c565b6040516103999190611a67565b60405180910390f35b6103bc60048036038101906103b791906119e2565b6107cd565b6040516103c99190611a3d565b60405180910390f35b6103ec60048036038101906103e791906119e2565b610844565b6040516103f99190611a3d565b60405180910390f35b61041c60048036038101906104179190611b90565b610867565b6040516104299190611a67565b60405180910390f35b61044c60048036038101906104479190611b39565b6108ee565b005b60606003805461045d90611bff565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611bff565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000806104eb610971565b90506104f8818585610979565b600191505092915050565b6000600254905090565b600080610518610971565b9050610525858285610b42565b610530858585610bce565b60019150509392505050565b60006012905090565b600080610550610971565b90506105718185856105628589610867565b61056c9190611c5f565b610979565b600191505092915050565b610584610e44565b61058c610ec2565b565b610596610e44565b6105a08282610f25565b5050565b6105b56105af610971565b8261107b565b50565b600080600061060584600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611248565b915091508161061c576106178561063f565b61061e565b805b9250505092915050565b6000600960149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61068f610e44565b610699600061133d565b565b6106ad826106a7610971565b83610b42565b6106b7828261107b565b5050565b6106c3610e44565b6106cb611403565b565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461070690611bff565b80601f016020809104026020016040519081016040528092919081815260200182805461073290611bff565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905090565b610791610e44565b610799611466565b50565b60008060006107ac846006611248565b91509150816107c2576107bd610503565b6107c4565b805b92505050919050565b6000806107d8610971565b905060006107e68286610867565b90508381101561082b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082290611d05565b60405180910390fd5b6108388286868403610979565b60019250505092915050565b60008061084f610971565b905061085c818585610bce565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108f6610e44565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c90611d97565b60405180910390fd5b61096e8161133d565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90611e29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e90611ebb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b359190611a67565b60405180910390a3505050565b6000610b4e8484610867565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bc85781811015610bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb190611f27565b60405180910390fd5b610bc78484848403610979565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490611fb9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca39061204b565b60405180910390fd5b610cb78383836114bc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d34906120dd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e2b9190611a67565b60405180910390a3610e3e8484846114d4565b50505050565b610e4c610971565b73ffffffffffffffffffffffffffffffffffffffff16610e6a6106cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790612149565b60405180910390fd5b565b610eca6114d9565b6000600960146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610f0e610971565b604051610f1b9190611b75565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8b906121b5565b60405180910390fd5b610fa0600083836114bc565b8060026000828254610fb29190611c5f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110639190611a67565b60405180910390a3611077600083836114d4565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e190612247565b60405180910390fd5b6110f6826000836114bc565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561117c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611173906122d9565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161122f9190611a67565b60405180910390a3611243836000846114d4565b505050565b6000806000841161128e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128590612345565b60405180910390fd5b611296611522565b8411156112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf906123b1565b60405180910390fd5b60006112f0858560000161153390919063ffffffff16565b90508360000180549050810361130d576000809250925050611336565b6001846001018281548110611325576113246123d1565b5b906000526020600020015492509250505b9250929050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61140b6115ec565b6001600960146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861144f610971565b60405161145c9190611b75565b60405180910390a1565b60006114726008611636565b600061147c611522565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb67816040516114ad9190611a67565b60405180910390a18091505090565b6114c46115ec565b6114cf83838361164c565b505050565b505050565b6114e1610628565b611520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115179061244c565b60405180910390fd5b565b600061152e6008611704565b905090565b60008083805490500361154957600090506115e6565b600080848054905090505b8082101561159d5760006115688383611712565b9050846115758783611738565b60000154111561158757809150611597565b6001816115949190611c5f565b92505b50611554565b6000821180156115c55750836115bf866001856115ba919061246c565b611738565b60000154145b156115e0576001826115d7919061246c565b925050506115e6565b81925050505b92915050565b6115f4610628565b15611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b906124ec565b60405180910390fd5b565b6001816000016000828254019250508190555050565b61165783838361175a565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116a1576116948261175f565b61169c6117b2565b6116ff565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116eb576116de8361175f565b6116e66117b2565b6116fe565b6116f48361175f565b6116fd8261175f565b5b5b505050565b600081600001549050919050565b60006002828418611723919061253b565b8284166117309190611c5f565b905092915050565b60008083600052826020600020019050611751816117c6565b91505092915050565b505050565b6117af600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206117aa8361063f565b6117d0565b50565b6117c460066117bf610503565b6117d0565b565b6000819050919050565b60006117da611522565b9050806117e98460000161184b565b10156118465782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b6000808280549050036118615760009050611892565b8160018380549050611873919061246c565b81548110611884576118836123d1565b5b906000526020600020015490505b919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118d15780820151818401526020810190506118b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006118f982611897565b61190381856118a2565b93506119138185602086016118b3565b61191c816118dd565b840191505092915050565b6000602082019050818103600083015261194181846118ee565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119798261194e565b9050919050565b6119898161196e565b811461199457600080fd5b50565b6000813590506119a681611980565b92915050565b6000819050919050565b6119bf816119ac565b81146119ca57600080fd5b50565b6000813590506119dc816119b6565b92915050565b600080604083850312156119f9576119f8611949565b5b6000611a0785828601611997565b9250506020611a18858286016119cd565b9150509250929050565b60008115159050919050565b611a3781611a22565b82525050565b6000602082019050611a526000830184611a2e565b92915050565b611a61816119ac565b82525050565b6000602082019050611a7c6000830184611a58565b92915050565b600080600060608486031215611a9b57611a9a611949565b5b6000611aa986828701611997565b9350506020611aba86828701611997565b9250506040611acb868287016119cd565b9150509250925092565b600060ff82169050919050565b611aeb81611ad5565b82525050565b6000602082019050611b066000830184611ae2565b92915050565b600060208284031215611b2257611b21611949565b5b6000611b30848285016119cd565b91505092915050565b600060208284031215611b4f57611b4e611949565b5b6000611b5d84828501611997565b91505092915050565b611b6f8161196e565b82525050565b6000602082019050611b8a6000830184611b66565b92915050565b60008060408385031215611ba757611ba6611949565b5b6000611bb585828601611997565b9250506020611bc685828601611997565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c1757607f821691505b602082108103611c2a57611c29611bd0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c6a826119ac565b9150611c75836119ac565b9250828201905080821115611c8d57611c8c611c30565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611cef6025836118a2565b9150611cfa82611c93565b604082019050919050565b60006020820190508181036000830152611d1e81611ce2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611d816026836118a2565b9150611d8c82611d25565b604082019050919050565b60006020820190508181036000830152611db081611d74565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e136024836118a2565b9150611e1e82611db7565b604082019050919050565b60006020820190508181036000830152611e4281611e06565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ea56022836118a2565b9150611eb082611e49565b604082019050919050565b60006020820190508181036000830152611ed481611e98565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611f11601d836118a2565b9150611f1c82611edb565b602082019050919050565b60006020820190508181036000830152611f4081611f04565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611fa36025836118a2565b9150611fae82611f47565b604082019050919050565b60006020820190508181036000830152611fd281611f96565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006120356023836118a2565b915061204082611fd9565b604082019050919050565b6000602082019050818103600083015261206481612028565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006120c76026836118a2565b91506120d28261206b565b604082019050919050565b600060208201905081810360008301526120f6816120ba565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006121336020836118a2565b915061213e826120fd565b602082019050919050565b6000602082019050818103600083015261216281612126565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061219f601f836118a2565b91506121aa82612169565b602082019050919050565b600060208201905081810360008301526121ce81612192565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006122316021836118a2565b915061223c826121d5565b604082019050919050565b6000602082019050818103600083015261226081612224565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006122c36022836118a2565b91506122ce82612267565b604082019050919050565b600060208201905081810360008301526122f2816122b6565b9050919050565b7f4552433230536e617073686f743a206964206973203000000000000000000000600082015250565b600061232f6016836118a2565b915061233a826122f9565b602082019050919050565b6000602082019050818103600083015261235e81612322565b9050919050565b7f4552433230536e617073686f743a206e6f6e6578697374656e74206964000000600082015250565b600061239b601d836118a2565b91506123a682612365565b602082019050919050565b600060208201905081810360008301526123ca8161238e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006124366014836118a2565b915061244182612400565b602082019050919050565b6000602082019050818103600083015261246581612429565b9050919050565b6000612477826119ac565b9150612482836119ac565b925082820390508181111561249a57612499611c30565b5b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006124d66010836118a2565b91506124e1826124a0565b602082019050919050565b60006020820190508181036000830152612505816124c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612546826119ac565b9150612551836119ac565b9250826125615761256061250c565b5b82820490509291505056fea2646970667358221220d6390229e4569491ff01086f1ee57e087d54a1f8ea5e98e4bca36af6bb0366a164736f6c63430008120033