60e0604052602b600f5534801562000015575f80fd5b506040516200536c3803806200536c83398101604081905262000038916200041a565b806040518060400160405280601a81526020017f43727970746f2056616c6c65797320416476656e7475726572730000000000008152506040518060400160405280600381526020016243564160e81b815250815f90816200009b9190620005b2565b506001620000aa8282620005b2565b5050506001600160a01b03166080528151600e556020820151600d805460408501516001600160401b0390811668010000000000000000026001600160801b03199092169316929092179190911790556060820151600c906200010e9082620005b2565b5060408051808201909152600781526670726f66696c6560c81b6020820152620001389062000234565b6001600160a01b031660a0526040805180820190915260058152641e5a595b1960da1b60208201526200016b9062000234565b6001600160a01b031660c052620001835f33620002ae565b6200019d5f805160206200532c83398151915233620002ae565b620001b75f805160206200534c83398151915233620002ae565b5f620001e960405180604001604052806008815260200167747265617375727960c01b8152506200023460201b60201c565b9050620001f75f82620002ae565b620002115f805160206200532c83398151915282620002ae565b6200022b5f805160206200534c83398151915282620002ae565b505050620006d1565b60805160405163bf40fac160e01b81525f916001600160a01b03169063bf40fac190620002669085906004016200067a565b602060405180830381865afa15801562000282573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a89190620006ae565b92915050565b5f828152600a602090815260408083206001600160a01b038516845290915290205460ff166200034d575f828152600a602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200030c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156200038a576200038a62000351565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620003bb57620003bb62000351565b604052919050565b80516001600160401b0381168114620003da575f80fd5b919050565b5f5b83811015620003fb578181015183820152602001620003e1565b50505f910152565b80516001600160a01b0381168114620003da575f80fd5b5f80604083850312156200042c575f80fd5b82516001600160401b038082111562000443575f80fd5b908401906080828703121562000457575f80fd5b6200046162000365565b82518152602062000474818501620003c3565b818301526200048660408501620003c3565b60408301526060840151838111156200049d575f80fd5b80850194505087601f850112620004b2575f80fd5b835183811115620004c757620004c762000351565b620004db601f8201601f1916830162000390565b93508084528882828701011115620004f1575f80fd5b6200050281838601848801620003df565b508260608301528195506200051981880162000403565b9450505050509250929050565b600181811c908216806200053b57607f821691505b6020821081036200055a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005ad575f81815260208120601f850160051c81016020861015620005885750805b601f850160051c820191505b81811015620005a95782815560010162000594565b5050505b505050565b81516001600160401b03811115620005ce57620005ce62000351565b620005e681620005df845462000526565b8462000560565b602080601f8311600181146200061c575f8415620006045750858301515b5f19600386901b1c1916600185901b178555620005a9565b5f85815260208120601f198616915b828110156200064c578886015182559484019460019091019084016200062b565b50858210156200066a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b602081525f82518060208401526200069a816040850160208701620003df565b601f01601f19169190910160400192915050565b5f60208284031215620006bf575f80fd5b620006ca8262000403565b9392505050565b60805160a05160c051614c30620006fc5f395f6137b301525f61372901525f6107ae0152614c305ff3fe60806040526004361061037c575f3560e01c80638406c079116101d3578063b6bde534116100fd578063dc36f6691161009d578063ec0d75571161006d578063ec0d755714610ce9578063f5aa406d14610cfd578063f8e6f95e14610d1c578063ffc9896b14610d3b575f80fd5b8063dc36f66914610c57578063e1c29fb514610c76578063e8656fcc14610c89578063e985e9c514610ca2575f80fd5b8063c2ca0ac5116100d8578063c2ca0ac514610bc7578063c87b56dd14610be6578063d539139314610c05578063d547741f14610c38575f80fd5b8063b6bde53414610b77578063b88d4fde14610b8b578063ba1c621714610baa575f80fd5b8063a1bd5fc711610173578063a500cb6511610143578063a500cb65146108f9578063a853211a14610918578063b09afec114610938578063b38a45b914610b58575f80fd5b8063a1bd5fc71461089d578063a217fddf146108b2578063a22cb465146108c5578063a329e1db146108e4575f80fd5b806395d89b41116101ae57806395d89b411461080e5780639769dc0e146108395780639a0a508314610858578063a0bcfc7f1461087e575f80fd5b80638406c0791461079d57806391d14854146107d057806391d3e5a7146107ef575f80fd5b806336568abe116102b4578063611f3f10116102545780637894505e116102245780637894505e146107095780637a95f5bf146107285780637b7d7411146107475780637db3aecc14610766575f80fd5b8063611f3f10146106795780636352211e146106955780636dc92b65146106b457806370a08231146106ea575f80fd5b8063477c4f931161028f578063477c4f93146105f25780634e6ecc4e146106115780634f6ccce71461062e5780635de6dc551461064d575f80fd5b806336568abe1461059f578063386bfc98146105be57806342842e0e146105d3575f80fd5b8063214806141161031f5780632d8d6a81116102fa5780632d8d6a81146105235780632f2ff15d146105425780632f745c5914610561578063327fbb9a14610580575f80fd5b806321480614146104b757806323b872dd146104d6578063248a9ca3146104f5575f80fd5b8063095ea7b31161035a578063095ea7b3146104395780630ff26ccb1461045a57806317e7f2951461047957806318160ddd146104a3575f80fd5b806301ffc9a71461038057806306fdde03146103b4578063081812fc14610402575b5f80fd5b34801561038b575f80fd5b5061039f61039a366004613e88565b610da5565b60405190151581526020015b60405180910390f35b3480156103bf575f80fd5b5060408051808201909152601a81527f43727970746f2056616c6c65797320416476656e74757265727300000000000060208201525b6040516103ab9190613ef0565b34801561040d575f80fd5b5061042161041c366004613f02565b610dc4565b6040516001600160a01b0390911681526020016103ab565b348015610444575f80fd5b50610458610453366004613f34565b610e4f565b005b348015610465575f80fd5b50610458610474366004614002565b610f63565b348015610484575f80fd5b50610495681b1ae4d6e2ef50000081565b6040519081526020016103ab565b3480156104ae575f80fd5b50600854610495565b3480156104c2575f80fd5b506104586104d13660046141af565b610f85565b3480156104e1575f80fd5b506104586104f0366004614209565b61100a565b348015610500575f80fd5b5061049561050f366004613f02565b5f908152600a602052604090206001015490565b34801561052e575f80fd5b5061045861053d366004614242565b61103b565b34801561054d575f80fd5b5061045861055c36600461427b565b611197565b34801561056c575f80fd5b5061049561057b366004613f34565b6111bc565b34801561058b575f80fd5b5061045861059a3660046142a5565b611250565b3480156105aa575f80fd5b506104586105b936600461427b565b611295565b3480156105c9575f80fd5b50610495600e5481565b3480156105de575f80fd5b506104586105ed366004614209565b611313565b3480156105fd575f80fd5b5061045861060c3660046142a5565b61132d565b34801561061c575f80fd5b5061049569054b40b1f852bda0000081565b348015610639575f80fd5b50610495610648366004613f02565b611372565b348015610658575f80fd5b5061066c6106673660046142c6565b611402565b6040516103ab91906142df565b348015610684575f80fd5b50610495682b5e3af16b1880000081565b3480156106a0575f80fd5b506104216106af366004613f02565b6114a0565b3480156106bf575f80fd5b506106c8611516565b60408051941515855260208501939093529183015260608201526080016103ab565b3480156106f5575f80fd5b506104956107043660046142c6565b611553565b348015610714575f80fd5b506104586107233660046142a5565b6115d8565b348015610733575f80fd5b50610458610742366004614322565b611661565b348015610752575f80fd5b506104586107613660046142a5565b6118a9565b348015610771575f80fd5b50600d54610785906001600160401b031681565b6040516001600160401b0390911681526020016103ab565b3480156107a8575f80fd5b506104217f000000000000000000000000000000000000000000000000000000000000000081565b3480156107db575f80fd5b5061039f6107ea36600461427b565b6118ee565b3480156107fa575f80fd5b50610458610809366004614342565b611918565b348015610819575f80fd5b5060408051808201909152600381526243564160e81b60208201526103f5565b348015610844575f80fd5b506104586108533660046142c6565b61195f565b348015610863575f80fd5b50600d5461078590600160401b90046001600160401b031681565b348015610889575f80fd5b50610458610898366004614363565b6119ae565b3480156108a8575f80fd5b5061049560115481565b3480156108bd575f80fd5b506104955f81565b3480156108d0575f80fd5b506104586108df3660046143ce565b6119cc565b3480156108ef575f80fd5b50610495610bb881565b348015610904575f80fd5b50610458610913366004614403565b6119d7565b348015610923575f80fd5b506104955f80516020614bdb83398151915281565b348015610943575f80fd5b50610b4b610952366004613f02565b604080516102a0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081018290526102608101829052610280810191909152505f9081526014602090815260409182902082516102a081018452815461ffff80821683526201000082048116948301949094526401000000008104841694820194909452600160301b840483166060820152600160401b840483166080820152600160501b8404831660a0820152600160601b8404831660c0820152600160701b840490921660e083015260ff600160801b84048116610100840152600160881b84048116610120840152600160901b84048116610140840152600160981b84048116610160840152600160a01b84048116610180840152600160a81b840481166101a0840152600160b01b840481166101c0840152600160b81b840481166101e0840152600160c01b84048116610200840152600160c81b84048116610220840152600160d01b9093049092161515610240820152600182015461026082015260029091015461028082015290565b6040516103ab9190614433565b348015610b63575f80fd5b50610458610b72366004613f02565b611a30565b348015610b82575f80fd5b50610495601981565b348015610b96575f80fd5b50610458610ba536600461458d565b611a41565b348015610bb5575f80fd5b50610495690a968163f0a57b40000081565b348015610bd2575f80fd5b50610458610be1366004613f02565b611a73565b348015610bf1575f80fd5b506103f5610c00366004613f02565b611d29565b348015610c10575f80fd5b506104957f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b348015610c43575f80fd5b50610458610c5236600461427b565b611db2565b348015610c62575f80fd5b50610458610c71366004614645565b611dd7565b610458610c843660046146bf565b611f23565b348015610c94575f80fd5b5060125461039f9060ff1681565b348015610cad575f80fd5b5061039f610cbc3660046146da565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b348015610cf4575f80fd5b50610458611fca565b348015610d08575f80fd5b50610458610d17366004613f02565b611fea565b348015610d27575f80fd5b50610458610d36366004614702565b611ffb565b348015610d46575f80fd5b50610d5a610d553660046142c6565b612244565b6040516103ab91905f60c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b5f610daf826122d8565b80610dbe5750610dbe82612327565b92915050565b5f610dce8261234b565b610e345760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b505f908152600460205260409020546001600160a01b031690565b5f610e59826114a0565b9050806001600160a01b0316836001600160a01b031603610ec65760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610e2b565b336001600160a01b0382161480610ee25750610ee28133610cbc565b610f545760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610e2b565b610f5e8383612367565b505050565b5f80516020614bdb833981519152610f7b81336123d4565b610f5e8383612438565b5f80516020614bdb833981519152610f9d81336123d4565b505f94855260146020526040909420805461ffff60b01b1916600160b01b60ff9586160260ff60b81b191617600160b81b938516939093029290921761ffff60c01b1916600160c01b9184169190910260ff60c81b191617600160c81b9290931691909102919091179055565b61101433826127fe565b6110305760405162461bcd60e51b8152600401610e2b90614788565b610f5e8383836128e5565b5f80516020614bdb83398151915261105381336123d4565b60088261ffff1610156110985760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610e2b565b5f8481526014602052604081209060ff851690036110c457805461ffff191661ffff8416178155611190565b8360ff166001036110ea57805463ffff000019166201000061ffff851602178155611190565b8360ff1660020361111457805465ffff00000000191664010000000061ffff851602178155611190565b8360ff1660030361113f57805467ffff0000000000001916600160301b61ffff851602178155611190565b8360ff1660040361116c57805469ffff00000000000000001916600160401b61ffff851602178155611190565b8360ff1660050361119057805461ffff60501b1916600160501b61ffff8516021781555b5050505050565b5f828152600a60205260409020600101546111b281336123d4565b610f5e8383612a8c565b5f6111c683611553565b82106112285760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610e2b565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b5f80516020614bdb83398151915261126881336123d4565b505f91825260146020526040909120805460ff909216600160981b0260ff60981b19909216919091179055565b6001600160a01b03811633146113055760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610e2b565b61130f8282612b11565b5050565b610f5e83838360405180602001604052805f815250611a41565b5f80516020614bdb83398151915261134581336123d4565b505f91825260146020526040909120805460ff909216600160a81b0260ff60a81b19909216919091179055565b5f61137c60085490565b82106113df5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610e2b565b600882815481106113f2576113f26147d9565b905f5260205f2001549050919050565b60605f61140e83611553565b90505f816001600160401b0381111561142957611429613f5c565b604051908082528060200260200182016040528015611452578160200160208202803683370190505b5090505f5b828110156114985761146985826111bc565b82828151811061147b5761147b6147d9565b60209081029190910101528061149081614801565b915050611457565b509392505050565b5f818152600260205260408120546001600160a01b031680610dbe5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610e2b565b6012545f9081908190819060ff1661152d600b5490565b600d5491955093506001600160401b038082169350600160401b90910416905090919293565b5f6001600160a01b0382166115bd5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610e2b565b506001600160a01b03165f9081526003602052604090205490565b5f80516020614bdb8339815191526115f081336123d4565b60058260ff16106116345760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642072617269747960901b6044820152606401610e2b565b505f91825260146020526040909120805460ff909216600160901b0260ff60901b19909216919091179055565b5f61166c81336123d4565b6116758361234b565b6116915760405162461bcd60e51b8152600401610e2b90614819565b5f61169b846114a0565b6001600160a01b0381165f908152601360209081526040808320815160c08101835281548152600182015481850152600282015481840152600382015460608201526004820154608082015260059091015460a082015288845260149092529091205491925090600160d01b900460ff16156117525760405162461bcd60e51b8152602060048201526016602482015275151bdad95b88185b1c9958591e481c995d99585b195960521b6044820152606401610e2b565b848160a00151146117975760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401610e2b565b5f81608001511180156117ad57505f8160a00151115b6117ea5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20636f6d6d6974206461746160901b6044820152606401610e2b565b6001600160a01b0382165f908152601360205260408120600581018290556004018190556010805461187a918791908461182383614801565b9190505560408051602080820193909352808201939093527f41445645544e52554945524d494e54534f554c52414e444f4d0000000000000060608401528051605981850301815260799093019052815191012090565b90506118868187612b77565b50506001600160a01b03165f908152601360205260409020600301929092555050565b5f80516020614bdb8339815191526118c181336123d4565b505f91825260146020526040909120805460ff909216600160a01b0260ff60a01b19909216919091179055565b5f918252600a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f80516020614bdb83398151915261193081336123d4565b505f91825260146020526040909120805461ffff909216600160601b0261ffff60601b19909216919091179055565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661198a81336123d4565b5f611994600b5490565b90506119a08382613226565b610f5e600b80546001019055565b5f6119b981336123d4565b600c6119c68385836148be565b50505050565b61130f338383613362565b5f80516020614bdb8339815191526119ef81336123d4565b505f92835260146020526040909220805461ffff60801b1916600160801b60ff9384160260ff60881b191617600160881b9290931691909102919091179055565b5f611a3b81336123d4565b50600f55565b611a4b33836127fe565b611a675760405162461bcd60e51b8152600401610e2b90614788565b6119c68484848461342f565b611a7c8161234b565b611a985760405162461bcd60e51b8152600401610e2b90614819565b33611aa2826114a0565b6001600160a01b031614611ae45760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610e2b565b335f908152601360209081526040808320815160c08101835281548152600182015481850152600282015481840152600382015460608201526004820154608082015260059091015460a0820152848452601490925290912054600160d01b900460ff1615611b8e5760405162461bcd60e51b8152602060048201526016602482015275151bdad95b88185b1c9958591e481c995d99585b195960521b6044820152606401610e2b565b818160a0015114611bd35760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401610e2b565b5f8160800151118015611be957505f8160a00151115b611c265760405162461bcd60e51b815260206004820152600e60248201526d4e6f20636f6d6d6974206461746160901b6044820152606401610e2b565b6080810151611c36906003614978565b4311611c7a5760405162461bcd60e51b8152602060048201526013602482015272426c6f636b68617368206e6f7420726561647960681b6044820152606401610e2b565b5f81608001516003611c8c9190614978565b4090505f819003611cd35760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840c4d8dec6d6d0c2e6d607b1b6044820152606401610e2b565b335f9081526013602052604081206005810182905560040181905560108054611d03918491908461182383614801565b9050611d0f8482612b77565b5050335f9081526013602052604090206003019190915550565b6060611d348261234b565b611d805760405162461bcd60e51b815260206004820152601860248201527f546f6b656e20646f6573206e6f742065786973742079657400000000000000006044820152606401610e2b565b600c611d8b83613462565b604051602001611d9c92919061498b565b6040516020818303038152906040529050919050565b5f828152600a6020526040902060010154611dcd81336123d4565b610f5e8383612b11565b5f80516020614bdb833981519152611def81336123d4565b60088761ffff1610158015611e09575060088661ffff1610155b8015611e1a575060088561ffff1610155b8015611e2b575060088461ffff1610155b8015611e3c575060088361ffff1610155b8015611e4d575060018261ffff1610155b611e895760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420737461747360981b6044820152606401610e2b565b505f96875260146020526040909620805461ffff978816600160501b0261ffff60501b19938916600160401b02939093166bffffffff000000000000000019948916600160301b0267ffff00000000000019968a16640100000000029690961667ffffffff0000000019978a16620100000263ffffffff199093169990981698909817179490941694909417919091171692909217179055565b60125460ff16611f655760405162461bcd60e51b815260206004820152600d60248201526c4d696e74206e6f74206c69766560981b6044820152606401610e2b565b600d54600160401b90046001600160401b03164211611fbd5760405162461bcd60e51b81526020600482015260146024820152735075626c6963206d696e74206e6f74206c69766560601b6044820152606401610e2b565b611fc7815f61355e565b50565b5f611fd581336123d4565b506012805460ff19811660ff90911615179055565b5f611ff581336123d4565b50600e55565b60125460ff1661203d5760405162461bcd60e51b815260206004820152600d60248201526c4d696e74206e6f74206c69766560981b6044820152606401610e2b565b600d546001600160401b0316421180156120685750600d54600160401b90046001600160401b031642105b6120a95760405162461bcd60e51b815260206004820152601260248201527157686974656c697374206e6f74206c69766560701b6044820152606401610e2b565b335f90815260136020908152604091829020825160c081018452815480825260018084015494830194909452600283015494820194909452600382015460608201526004820154608082015260059091015460a082015291849161210d9190614978565b111561215b5760405162461bcd60e51b815260206004820152601760248201527f57686974656c697374206d696e742065786365656465640000000000000000006044820152606401610e2b565b604080513360208201529081018490525f9060600160408051601f19818403018152828252805160209182012090830152016040516020818303038152906040528051906020012090506121e58686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050600e5491508490506138c9565b6122315760405162461bcd60e51b815260206004820152601b60248201527f57686974656c697374206d696e7420756e617574686f72697a656400000000006044820152606401610e2b565b61223c83600161355e565b505050505050565b6122776040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b506001600160a01b03165f90815260136020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b5f6001600160e01b031982166380ac58cd60e01b148061230857506001600160e01b03198216635b5e139f60e01b145b80610dbe57506301ffc9a760e01b6001600160e01b0319831614610dbe565b5f6001600160e01b03198216637965db0b60e01b1480610dbe5750610dbe826138de565b5f908152600260205260409020546001600160a01b0316151590565b5f81815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061239b826114a0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6123de82826118ee565b61130f576123f6816001600160a01b03166014613902565b612401836020613902565b604051602001612412929190614a0e565b60408051601f198184030181529082905262461bcd60e51b8252610e2b91600401613ef0565b6124418261234b565b61245d5760405162461bcd60e51b8152600401610e2b90614819565b600581610140015160ff16106124a65760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642072617269747960901b6044820152606401610e2b565b6008815f015161ffff16101580156124c757506008816020015161ffff1610155b80156124dc57506008816040015161ffff1610155b80156124f157506008816060015161ffff1610155b801561250657506008816080015161ffff1610155b801561251b575060018160a0015161ffff1610155b6125575760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420737461747360981b6044820152606401610e2b565b8060145f8481526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff1602179055506060820151815f0160066101000a81548161ffff021916908361ffff1602179055506080820151815f0160086101000a81548161ffff021916908361ffff16021790555060a0820151815f01600a6101000a81548161ffff021916908361ffff16021790555060c0820151815f01600c6101000a81548161ffff021916908361ffff16021790555060e0820151815f01600e6101000a81548161ffff021916908361ffff160217905550610100820151815f0160106101000a81548160ff021916908360ff160217905550610120820151815f0160116101000a81548160ff021916908360ff160217905550610140820151815f0160126101000a81548160ff021916908360ff160217905550610160820151815f0160136101000a81548160ff021916908360ff160217905550610180820151815f0160146101000a81548160ff021916908360ff1602179055506101a0820151815f0160156101000a81548160ff021916908360ff1602179055506101c0820151815f0160166101000a81548160ff021916908360ff1602179055506101e0820151815f0160176101000a81548160ff021916908360ff160217905550610200820151815f0160186101000a81548160ff021916908360ff160217905550610220820151815f0160196101000a81548160ff021916908360ff160217905550610240820151815f01601a6101000a81548160ff021916908315150217905550610260820151816001015561028082015181600201559050505050565b5f6128088261234b565b6128695760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610e2b565b5f612873836114a0565b9050806001600160a01b0316846001600160a01b031614806128ae5750836001600160a01b03166128a384610dc4565b6001600160a01b0316145b806128dd57506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166128f8826114a0565b6001600160a01b0316146129605760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610e2b565b6001600160a01b0382166129c25760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610e2b565b6129cd838383613a9e565b6129d75f82612367565b6001600160a01b0383165f9081526003602052604081208054600192906129ff908490614a82565b90915550506001600160a01b0382165f908152600360205260408120805460019290612a2c908490614978565b90915550505f8181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b612a9682826118ee565b61130f575f828152600a602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612acd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612b1b82826118ee565b1561130f575f828152600a602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b5f612b8182613b0a565b90505f80808080858015612bb45760018114612bc15760028114612bce5760038114612bdb5760048114612be857612bf1565b600a9550600a9450612bf1565b600f9550600c9450612bf1565b60169550600f9450612bf1565b6020955060139450612bf1565b602d9550601994505b5060408051600680825260e082019092525f916020820160c0803683370190505090506008815f81518110612c2857612c286147d9565b602002602001019061ffff16908161ffff1681525050600881600181518110612c5357612c536147d9565b602002602001019061ffff16908161ffff1681525050600881600281518110612c7e57612c7e6147d9565b602002602001019061ffff16908161ffff1681525050600881600381518110612ca957612ca96147d9565b602002602001019061ffff16908161ffff1681525050600881600481518110612cd457612cd46147d9565b602002602001019061ffff16908161ffff1681525050600181600581518110612cff57612cff6147d9565b602002602001019061ffff16908161ffff16815250505b8515612dd457612d27600689614aa9565b935083600503612d3a5760019250612d8e565b600a8610612d49576004612d4c565b60025b60ff16915083600403612d6757612d64600283614abc565b91505b818610612d745781612d76565b855b612d809089614aa9565b612d8b906001614978565b92505b612d988387614a82565b955082818581518110612dad57612dad6147d9565b60200260200101818151612dc19190614acf565b61ffff1690525060059790971c96612d16565b5f612ddf8989613b6b565b9050604051806102a00160405280835f81518110612dff57612dff6147d9565b602002602001015161ffff16815260200183600181518110612e2357612e236147d9565b602002602001015161ffff16815260200183600281518110612e4757612e476147d9565b602002602001015161ffff16815260200183600381518110612e6b57612e6b6147d9565b602002602001015161ffff16815260200183600481518110612e8f57612e8f6147d9565b602002602001015161ffff16815260200183600581518110612eb357612eb36147d9565b602002602001015161ffff1681526020018761ffff1681526020015f61ffff168152602001825f81518110612eea57612eea6147d9565b602002602001015160ff16815260200182600181518110612f0d57612f0d6147d9565b602002602001015160ff1681526020018960ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020016001151581526020015f81526020015f81525060145f8c81526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff1602179055506060820151815f0160066101000a81548161ffff021916908361ffff1602179055506080820151815f0160086101000a81548161ffff021916908361ffff16021790555060a0820151815f01600a6101000a81548161ffff021916908361ffff16021790555060c0820151815f01600c6101000a81548161ffff021916908361ffff16021790555060e0820151815f01600e6101000a81548161ffff021916908361ffff160217905550610100820151815f0160106101000a81548160ff021916908360ff160217905550610120820151815f0160116101000a81548160ff021916908360ff160217905550610140820151815f0160126101000a81548160ff021916908360ff160217905550610160820151815f0160136101000a81548160ff021916908360ff160217905550610180820151815f0160146101000a81548160ff021916908360ff1602179055506101a0820151815f0160156101000a81548160ff021916908360ff1602179055506101c0820151815f0160166101000a81548160ff021916908360ff1602179055506101e0820151815f0160176101000a81548160ff021916908360ff160217905550610200820151815f0160186101000a81548160ff021916908360ff160217905550610220820151815f0160196101000a81548160ff021916908360ff160217905550610240820151815f01601a6101000a81548160ff0219169083151502179055506102608201518160010155610280820151816002015590505050505050505050505050565b6001600160a01b03821661327c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610e2b565b6132858161234b565b156132d25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610e2b565b6132dd5f8383613a9e565b6001600160a01b0382165f908152600360205260408120805460019290613305908490614978565b90915550505f8181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b0316036133c35760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610e2b565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61343a8484846128e5565b61344684848484613cd4565b6119c65760405162461bcd60e51b8152600401610e2b90614aea565b6060815f036134885750506040805180820190915260018152600360fc1b602082015290565b815f5b81156134b1578061349b81614801565b91506134aa9050600a83614abc565b915061348b565b5f816001600160401b038111156134ca576134ca613f5c565b6040519080825280601f01601f1916602001820160405280156134f4576020820181803683370190505b5090505b84156128dd57613509600183614a82565b9150613516600a86614aa9565b613521906030614978565b60f81b818381518110613536576135366147d9565b60200101906001600160f81b03191690815f1a905350613557600a86614abc565b94506134f8565b335f90815260136020908152604091829020825160c081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820181905260059092015460a0820152901580156135c5575060a0810151155b6136115760405162461bcd60e51b815260206004820152601760248201527f436f6d6d69742064617461206e6f7420636c65617265640000000000000000006044820152606401610e2b565b8051601990613621906001614978565b111561365f5760405162461bcd60e51b815260206004820152600d60248201526c135a5b9d08195e18d959591959609a1b6044820152606401610e2b565b5f613669600b5490565b9050610bb8613679826001614978565b11156136b95760405162461bcd60e51b815260206004820152600f60248201526e14dd5c1c1b1e48195e18d959591959608a1b6044820152606401610e2b565b83156137b1575f826040015169054b40b1f852bda000006136da9190614b3c565b6136ee90690a968163f0a57b400000614978565b90508060115f8282546137019190614978565b90915550506040516349a01c2960e01b815233600482015260016024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906349a01c29906064015f604051808303815f87803b158015613772575f80fd5b505af1158015613784573d5f803e3d5ffd5b5050335f9081526013602052604081206002018054935091506137a683614801565b919050555050613878565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd3330866137f657682b5e3af16b18800000613801565b681b1ae4d6e2ef5000005b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015613852573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138769190614b53565b505b335f81815260136020526040902043600482015560050182905561389c9082613226565b335f9081526013602052604081208054916138b683614801565b91905055506119c6600b80546001019055565b5f826138d58584613dd1565b14949350505050565b5f6001600160e01b0319821663780e9d6360e01b1480610dbe5750610dbe826122d8565b60605f613910836002614b3c565b61391b906002614978565b6001600160401b0381111561393257613932613f5c565b6040519080825280601f01601f19166020018201604052801561395c576020820181803683370190505b509050600360fc1b815f81518110613976576139766147d9565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106139a4576139a46147d9565b60200101906001600160f81b03191690815f1a9053505f6139c6846002614b3c565b6139d1906001614978565b90505b6001811115613a48576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613a0557613a056147d9565b1a60f81b828281518110613a1b57613a1b6147d9565b60200101906001600160f81b03191690815f1a90535060049490941c93613a4181614b6e565b90506139d4565b508315613a975760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610e2b565b9392505050565b5f81815260146020526040902054600160d01b900460ff166001600160a01b0384161580613ac95750805b6119c65760405162461bcd60e51b8152602060048201526012602482015271151bdad95b881b9959591cc81c995d99585b60721b6044820152606401610e2b565b5f80613b17606484614aa9565b9050602d811015613b2a575f9150613b65565b604b811015613b3c5760019150613b65565b605a811015613b4e5760029150613b65565b6062811015613b605760039150613b65565b600491505b50919050565b60605f60648406838015613b9e5760018114613ba95760028114613bb45760038114613bc25760048114613bd057613bd5565b601982109250613bd5565b603282109250613bd5565b600a82106001019250613bd5565b604b82106001019250613bd5565b600292505b50506040805160028082526060820183529091602083019080368337019050509150805f03613c045750610dbe565b600f54613c119085614aa9565b613c1c906001614978565b825f81518110613c2e57613c2e6147d9565b60200260200101818152505080600203613ccd575f600f54600886901c613c559190614aa9565b613c60906001614978565b90505b825f81518110613c7557613c756147d9565b60200260200101518103613cab57600f54600886901c95613c99919060101c614aa9565b613ca4906001614978565b9050613c63565b8083600181518110613cbf57613cbf6147d9565b602002602001018181525050505b5092915050565b5f6001600160a01b0384163b15613dc657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613d17903390899088908890600401614b83565b6020604051808303815f875af1925050508015613d51575060408051601f3d908101601f19168201909252613d4e91810190614bbf565b60015b613dac573d808015613d7e576040519150601f19603f3d011682016040523d82523d5f602084013e613d83565b606091505b5080515f03613da45760405162461bcd60e51b8152600401610e2b90614aea565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506128dd565b506001949350505050565b5f81815b8451811015611498575f858281518110613df157613df16147d9565b60200260200101519050808311613e33576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250613e60565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080613e6b81614801565b915050613dd5565b6001600160e01b031981168114611fc7575f80fd5b5f60208284031215613e98575f80fd5b8135613a9781613e73565b5f5b83811015613ebd578181015183820152602001613ea5565b50505f910152565b5f8151808452613edc816020860160208601613ea3565b601f01601f19169290920160200192915050565b602081525f613a976020830184613ec5565b5f60208284031215613f12575f80fd5b5035919050565b80356001600160a01b0381168114613f2f575f80fd5b919050565b5f8060408385031215613f45575f80fd5b613f4e83613f19565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516102a081016001600160401b0381118282101715613f9357613f93613f5c565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613fc157613fc1613f5c565b604052919050565b803561ffff81168114613f2f575f80fd5b803560ff81168114613f2f575f80fd5b8015158114611fc7575f80fd5b8035613f2f81613fea565b5f808284036102c0811215614015575f80fd5b833592506102a080601f198301121561402c575f80fd5b614034613f70565b915061404260208601613fc9565b825261405060408601613fc9565b602083015261406160608601613fc9565b604083015261407260808601613fc9565b606083015261408360a08601613fc9565b608083015261409460c08601613fc9565b60a08301526140a560e08601613fc9565b60c08301526101006140b8818701613fc9565b60e08401526101206140cb818801613fda565b8285015261014091506140df828801613fda565b908401526101606140f1878201613fda565b828501526101809150614105828801613fda565b908401526101a0614117878201613fda565b828501526101c0915061412b828801613fda565b908401526101e061413d878201613fda565b828501526102009150614151828801613fda565b90840152610220614163878201613fda565b828501526102409150614177828801613fda565b90840152610260614189878201613ff7565b918401919091526102808681013591840191909152940135938101939093525092909150565b5f805f805f60a086880312156141c3575f80fd5b853594506141d360208701613fda565b93506141e160408701613fda565b92506141ef60608701613fda565b91506141fd60808701613fda565b90509295509295909350565b5f805f6060848603121561421b575f80fd5b61422484613f19565b925061423260208501613f19565b9150604084013590509250925092565b5f805f60608486031215614254575f80fd5b8335925061426460208501613fda565b915061427260408501613fc9565b90509250925092565b5f806040838503121561428c575f80fd5b8235915061429c60208401613f19565b90509250929050565b5f80604083850312156142b6575f80fd5b8235915061429c60208401613fda565b5f602082840312156142d6575f80fd5b613a9782613f19565b602080825282518282018190525f9190848201906040850190845b81811015614316578351835292840192918401916001016142fa565b50909695505050505050565b5f8060408385031215614333575f80fd5b50508035926020909101359150565b5f8060408385031215614353575f80fd5b8235915061429c60208401613fc9565b5f8060208385031215614374575f80fd5b82356001600160401b038082111561438a575f80fd5b818501915085601f83011261439d575f80fd5b8135818111156143ab575f80fd5b8660208285010111156143bc575f80fd5b60209290920196919550909350505050565b5f80604083850312156143df575f80fd5b6143e883613f19565b915060208301356143f881613fea565b809150509250929050565b5f805f60608486031215614415575f80fd5b8335925061442560208501613fda565b915061427260408501613fda565b815161ffff1681526102a081016020830151614455602084018261ffff169052565b50604083015161446b604084018261ffff169052565b506060830151614481606084018261ffff169052565b506080830151614497608084018261ffff169052565b5060a08301516144ad60a084018261ffff169052565b5060c08301516144c360c084018261ffff169052565b5060e08301516144d960e084018261ffff169052565b506101008381015160ff90811691840191909152610120808501518216908401526101408085015182169084015261016080850151821690840152610180808501518216908401526101a0808501518216908401526101c0808501518216908401526101e08085015182169084015261020080850151821690840152610220808501519091169083015261024080840151151590830152610260808401519083015261028092830151929091019190915290565b5f805f80608085870312156145a0575f80fd5b6145a985613f19565b935060206145b8818701613f19565b93506040860135925060608601356001600160401b03808211156145da575f80fd5b818801915088601f8301126145ed575f80fd5b8135818111156145ff576145ff613f5c565b614611601f8201601f19168501613f99565b91508082528984828501011115614626575f80fd5b80848401858401375f8482840101525080935050505092959194509250565b5f805f805f805f60e0888a03121561465b575f80fd5b8735965061466b60208901613fc9565b955061467960408901613fc9565b945061468760608901613fc9565b935061469560808901613fc9565b92506146a360a08901613fc9565b91506146b160c08901613fc9565b905092959891949750929550565b5f602082840312156146cf575f80fd5b8135613a9781613fea565b5f80604083850312156146eb575f80fd5b6146f483613f19565b915061429c60208401613f19565b5f805f8060608587031215614715575f80fd5b84356001600160401b038082111561472b575f80fd5b818701915087601f83011261473e575f80fd5b81358181111561474c575f80fd5b8860208260051b8501011115614760575f80fd5b602092830196509450508501359150604085013561477d81613fea565b939692955090935050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201614812576148126147ed565b5060010190565b602080825260149082015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b604082015260600190565b600181811c9082168061485b57607f821691505b602082108103613b6557634e487b7160e01b5f52602260045260245ffd5b601f821115610f5e575f81815260208120601f850160051c8101602086101561489f5750805b601f850160051c820191505b8181101561223c578281556001016148ab565b6001600160401b038311156148d5576148d5613f5c565b6148e9836148e38354614847565b83614879565b5f601f84116001811461491a575f85156149035750838201355b5f19600387901b1c1916600186901b178355611190565b5f83815260209020601f19861690835b8281101561494a578685013582556020948501946001909201910161492a565b5086821015614966575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115610dbe57610dbe6147ed565b5f80845461499881614847565b600182811680156149b057600181146149c5576149f1565b60ff19841687528215158302870194506149f1565b885f526020805f205f5b858110156149e85781548a8201529084019082016149cf565b50505082870194505b505050508351614a05818360208801613ea3565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f8351614a45816017850160208801613ea3565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614a76816028840160208801613ea3565b01602801949350505050565b81810381811115610dbe57610dbe6147ed565b634e487b7160e01b5f52601260045260245ffd5b5f82614ab757614ab7614a95565b500690565b5f82614aca57614aca614a95565b500490565b61ffff818116838216019080821115613ccd57613ccd6147ed565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b8082028115828204841417610dbe57610dbe6147ed565b5f60208284031215614b63575f80fd5b8151613a9781613fea565b5f81614b7c57614b7c6147ed565b505f190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90614bb590830184613ec5565b9695505050505050565b5f60208284031215614bcf575f80fd5b8151613a9781613e7356fe21d1167972f621f75904fb065136bc8b53c7ba1c60ccd3a7758fbee465851e9ca2646970667358221220ff126474ef03e98ae038a0181c21e3605ade67196223f03356cdda5c071a031464736f6c634300081400339f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a621d1167972f621f75904fb065136bc8b53c7ba1c60ccd3a7758fbee465851e9c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000001401439789259ac682637b1e87ea77df0599dc55437b59aacc1eb5a1ae45712ea58e30b40dd0c7278266800ed83bc1e431c30811000000000000000000000000000000000000000000000000000000006631734c00000000000000000000000000000000000000000000000000000000663179280000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001368747470733a2f2f736f756c6e66742e696f2f00000000000000000000000000