0x60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b62001be21760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6145bb806200015c6000396000f3fe60806040526004361061032d5760003560e01c806370a08231116101a55780639c1fd55e116100ec578063beccbea311610095578063ef8b5f9a1161006f578063ef8b5f9a14610911578063f2fde38b14610924578063f4f72c1e14610944578063fe9937331461096457600080fd5b8063beccbea314610898578063d2c088bb146108ab578063dd62ed3e146108cb57600080fd5b8063a7c057b7116100c6578063a7c057b714610845578063a9059cbb14610858578063be64cb6f1461087857600080fd5b80639c1fd55e146107ee5780639f23c5b81461080e578063a457c2d71461082557600080fd5b80638456cb591161014e57806391b249af1161012857806391b249af146107a157806395d89b41146107b857806399ad68a7146107cd57600080fd5b80638456cb591461074c5780638cb1b89c146107615780638da5cb5b1461078357600080fd5b80638235b2841161017f5780638235b284146106f5578063825ee670146107155780638406c0791461072b57600080fd5b806370a082311461068a578063715018a6146106c05780637f32d3ee146106d557600080fd5b80633ad41eb6116102745780634349400e1161021d5780636548e9bc116101f75780636548e9bc1461061157806368233eef146106315780636950701b146106485780636d2575da1461066957600080fd5b80634349400e146105b65780634e0cd799146105e45780635c975abb146105f957600080fd5b80633f4ba83a1161024e5780633f4ba83a1461056c5780634004197b14610581578063421715c21461059457600080fd5b80633ad41eb6146105015780633d7d552d146105185780633ea387731461053857600080fd5b806323b872dd116102d6578063378dc3dc116102b0578063378dc3dc1461049257806339509351146104a957806339e730ab146104c957600080fd5b806323b872dd1461043f57806324fca4c41461045f578063313ce5671461047657600080fd5b80630e46cf91116103075780630e46cf91146103b65780630e704d501461041457806318160ddd1461041c57600080fd5b8063056097ac1461033957806306fdde031461035b578063095ea7b31461038657600080fd5b3661033457005b600080fd5b34801561034557600080fd5b50610359610354366004613d5a565b61097b565b005b34801561036757600080fd5b50610370610ac8565b60405161037d9190613db7565b60405180910390f35b34801561039257600080fd5b506103a66103a1366004613dea565b610b5a565b604051901515815260200161037d565b3480156103c257600080fd5b5061010c5461010d5461010e5461010f5461011054610111546103e795949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c00161037d565b610359610b74565b34801561042857600080fd5b50610431610b94565b60405190815260200161037d565b34801561044b57600080fd5b506103a661045a366004613e16565b610bb0565b34801561046b57600080fd5b506104316101095481565b34801561048257600080fd5b506040516012815260200161037d565b34801561049e57600080fd5b506104316101005481565b3480156104b557600080fd5b506103a66104c4366004613dea565b610bd4565b3480156104d557600080fd5b5060c9546104e9906001600160a01b031681565b6040516001600160a01b03909116815260200161037d565b34801561050d57600080fd5b506104316101065481565b34801561052457600080fd5b50610431610533366004613e57565b610c13565b34801561054457600080fd5b506104317f010e13e50cb99b6b3c8270ec6e16acfccbe1164a629d74b43549567a77593aff81565b34801561057857600080fd5b50610359610c32565b61035961058f366004613e91565b610c42565b3480156105a057600080fd5b5061010a546103a690600160a01b900460ff1681565b3480156105c257600080fd5b506105d66105d1366004613eb5565b610d8f565b60405161037d929190613f0f565b3480156105f057600080fd5b50610431600181565b34801561060557600080fd5b5060655460ff166103a6565b34801561061d57600080fd5b5061035961062c366004613f2d565b610e0e565b34801561063d57600080fd5b5061043161010b5481565b34801561065457600080fd5b50610103546104e9906001600160a01b031681565b34801561067557600080fd5b50610104546104e9906001600160a01b031681565b34801561069657600080fd5b506104316106a5366004613f2d565b6001600160a01b0316600090815260ca602052604090205490565b3480156106cc57600080fd5b50610359610e6b565b3480156106e157600080fd5b506103596106f0366004613dea565b610e7d565b34801561070157600080fd5b50610359610710366004613f2d565b610eac565b34801561072157600080fd5b5061043160ff5481565b34801561073757600080fd5b5061010a546104e9906001600160a01b031681565b34801561075857600080fd5b50610359610ec0565b34801561076d57600080fd5b50610776610ed0565b60405161037d9190613f4a565b34801561078f57600080fd5b506033546001600160a01b03166104e9565b3480156107ad57600080fd5b506104316101025481565b3480156107c457600080fd5b50610370610f4e565b3480156107d957600080fd5b50610105546104e9906001600160a01b031681565b3480156107fa57600080fd5b50610359610809366004613f64565b610f5d565b34801561081a57600080fd5b506104316101075481565b34801561083157600080fd5b506103a6610840366004613dea565b610f6b565b610359610853366004613f7d565b61101a565b34801561086457600080fd5b506103a6610873366004613dea565b6111f3565b34801561088457600080fd5b50610359610893366004614046565b611201565b6103596108a6366004613f64565b611223565b3480156108b757600080fd5b506103596108c6366004613f64565b611254565b3480156108d757600080fd5b506104316108e6366004613d5a565b6001600160a01b03918216600090815260cb6020908152604080832093909416825291909152205490565b61035961091f36600461406b565b6112f0565b34801561093057600080fd5b5061035961093f366004613f2d565b6117f7565b34801561095057600080fd5b5061043161095f366004613f64565b611884565b34801561097057600080fd5b506104316101085481565b610983611bf1565b6001600160a01b0382166109cb576040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156109c6573d6000803e3d6000fd5b505050565b6040516370a0823160e01b81523060048201526001600160a01b0383169063a9059cbb90839083906370a0823190602401602060405180830381865afa158015610a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3d91906140d1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610aa0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c691906140ea565b5050565b606060cd8054610ad790614107565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0390614107565b8015610b505780601f10610b2557610100808354040283529160200191610b50565b820191906000526020600020905b815481529060010190602001808311610b3357829003601f168201915b5050505050905090565b600033610b68818585611c4b565b60019150505b92915050565b610b7c611bf1565b61010554610b92906001600160a01b0316611da3565b565b60006001610ba160cc5490565b610bab9190614157565b905090565b600033610bbe858285612106565b610bc9858585612192565b506001949350505050565b33600081815260cb602090815260408083206001600160a01b0387168452909152812054909190610b689082908690610c0e90879061416a565b611c4b565b600082610c20838661417d565b610c2a9190614194565b949350505050565b610c3a611bf1565b610b92612386565b6040805160c08101825261010c54815261010d54602082015261010e549181019190915261010f5460608201526101105460808201526101115460a0820152818015610c92575061010b54815114155b15610cc9576040517f60e8ea8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81610d145761010b54610cdd90600161416a565b815114610cfd57604051636344fe2360e11b815260040160405180910390fd5b61010b8054906000610d0e836141b6565b91905055505b610ac4610102547f010e13e50cb99b6b3c8270ec6e16acfccbe1164a629d74b43549567a77593aff610d896040518060c0016040528086600001518152602001866020015181526020018660400151815260200186606001518152602001866080015181526020018660a001518152506123d8565b346125d5565b60008086610da257506002905083610e04565b6000610dad87611884565b905085811015610dcc5760029250610dc58187614157565b9150610e02565b85811115610df9576000610de1878787610c13565b600194509050610df18189614157565b925050610e02565b60009250600091505b505b9550959350505050565b610e16611bf1565b61010a80546001600160a01b0319166001600160a01b0383169081179091556040519081527fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc9060200160405180910390a150565b610e73611bf1565b610b92600061266e565b610e85611bf1565b6101075561010480546001600160a01b0319166001600160a01b0392909216919091179055565b610eb4611bf1565b610ebd816126c0565b50565b610ec8611bf1565b610b92612760565b60fc546040516321e3780160e01b81523060048201526000916001600160a01b0316906321e3780190602401602060405180830381865afa158015610f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3d91906140d1565b6004811115610bab57610bab613ef9565b606060ce8054610ad790614107565b610f65611bf1565b61010255565b33600081815260cb602090815260408083206001600160a01b03871684529091528120549091908381101561100d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610bc98286868403611c4b565b600054610100900460ff161580801561103a5750600054600160ff909116105b806110545750303b158015611054575060005460ff166001145b6110c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401611004565b6000805460ff1916600117905580156110e9576000805461ff0019166101001790555b6110f161279d565b6110f9612810565b60c980546001600160a01b0319166001600160a01b038b161790556111208c8c8c87612883565b61010a805461010380546001600160a01b038c81166001600160a01b0319928316179092556101068b905561010480548b8416908316179055610107899055610105805487841692169190911790557fffffffffffffffffffffff00000000000000000000000000000000000000000090911690851617600160a01b17905580156111e5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b600033610b68818585612192565b611209611bf1565b61010554610ac490839083906001600160a01b0316612945565b61122b611bf1565b600080611236612b36565b6101055491935091506109c6906001600160a01b0316838386612c4c565b61125c611bf1565b61010554610104546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af11580156112cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac491906140ea565b6112f8612f48565b611300612fa1565b61010b5484359061131290600161416a565b1461133057604051636344fe2360e11b815260040160405180910390fd5b61010a546001600160a01b03163314611375576040517fc64891a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610102546113998161139461138f368990038901896141e5565b612ff4565b61311f565b81156113b1576113b1856020013586604001356131ad565b60006113bb610ed0565b905060018160048111156113d1576113d1613ef9565b146113e7576113e086866131e9565b50506117e7565b61010a5460fc54604051632e46be5f60e21b81523060048201526000928392600160a01b90910460ff1691839182916001600160a01b039091169063b91af97c90602401608060405180830381865afa158015611448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c9190614241565b5050915091508161147b610b94565b1415801561148d575060008b60200135115b156115085782156114c65761010a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055600092505b604080518c35815260208d81013590820181905295507f5da28e5ac24a3c9921690f0de36f9b201ff9efb3d47ecad1daf47761bf8587f8910160405180910390a15b600080611520858e602001358f604001358787610d8f565b9092509050600182600281111561153957611539613ef9565b1480156115435750845b8015611553575060008d60200135115b1561158e576000611564828d6132ee565b905061157460408f01358261416a565b9750818e602001356115869190614157565b965050611614565b60028260028111156115a2576115a2613ef9565b1480156115b3575060008d60400135115b156116055760006115c3826134ca565b9050856115d15760006115d7565b8d602001355b6115e1908261416a565b6115eb908861416a565b9650818e604001356115fd9190614157565b975050611614565b8c6020013595508c6040013596505b86156116335761010454611633906001600160a01b03168a898f613631565b85156116665761166661010360009054906101000a90046001600160a01b03168a888f8a611661919061416a565b613631565b60fc54604051632e46be5f60e21b81523060048201526001600160a01b039091169063b91af97c90602401608060405180830381865afa1580156116ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d29190614241565b909150905050809450506040518060c001604052808e60000135815260200188815260200161010054611703610b94565b61170d9190614157565b815260200161010054866117219190614157565b815260208082018990526000604092830152825161010c5582015161010d5581015161010e55606081015161010f5560808101516101105560a0015161011155610100547f5dd47cb83ee01578375abce18ce70bf39b73b5069a8f0023ace58b54238be037908e35908990611794610b94565b61179e9190614157565b610100546117ac9089614157565b60408051948552602085019390935291830152606082015260808101889052600060a082015260c00160405180910390a15050505050505050505b6117f16001609755565b50505050565b6117ff611bf1565b6001600160a01b03811661187b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611004565b610ebd8161266e565b60fc54604080517f741bef1a00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316918391839163741bef1a9160048083019260209291908290030181865afa1580156118eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190f9190614277565b6001600160a01b0316630fdb11cf6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561194e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197291906140d1565b6040516321e3780160e01b81523060048201529091506001600160a01b038316906321e3780190602401602060405180830381865afa1580156119b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dd91906140d1565b600103611a8e576040517fd293c710000000000000000000000000000000000000000000000000000000008152306004820152602481018290526000906001600160a01b0384169063d293c71090604401602060405180830381865afa158015611a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6f91906140d1565b905080611a7c838761417d565b611a869190614194565b935050611abd565b60ff54680ad78ebc5ac620000090611aa6838761417d565b611ab09190614194565b611aba9190614157565b92505b6040517f4e443d9e000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b03831690634e443d9e90602401602060405180830381865afa158015611b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3f91906140ea565b611bdb576000826001600160a01b03166366ca4a216040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba791906140d1565b9050611bbb81670de0b6b3a764000061416a565b611bcd85670de0b6b3a764000061417d565b611bd79190614194565b9350505b5050919050565b6001600160a01b03163b151590565b6033546001600160a01b03163314610b925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611004565b6001600160a01b038316611cc65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401611004565b6001600160a01b038216611d425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401611004565b6001600160a01b03838116600081815260cb602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60fc546040516321e3780160e01b815230600482015233916000916001600160a01b03909116906321e3780190602401602060405180830381865afa158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1491906140d1565b6004811115611e2557611e25613ef9565b90506001816004811115611e3b57611e3b613ef9565b036120175760fc54604051632e46be5f60e21b81523060048201526000916001600160a01b03169063b91af97c90602401608060405180830381865afa158015611e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ead9190614241565b5050509050836001600160a01b03166323b872dd8430680ad78ebc5ac620000085611ed89190614157565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6891906140ea565b611fa9576040517f39f1c8d90000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611004565b60fe60009054906101000a90046001600160a01b03166001600160a01b0316630e704d506040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ff957600080fd5b505af115801561200d573d6000803e3d6000fd5b50505050506120d1565b600481600481111561202b5761202b613ef9565b14806120485750600381600481111561204657612046613ef9565b145b156120d1576101015460ff166120c55760fe60009054906101000a90046001600160a01b03166001600160a01b0316636f0b0c1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b505050506120d1565b610101805460ff191690555b6040516001600160a01b038316904780156108fc02916000818181858888f193505050501580156117f1573d6000803e3d6000fd5b6001600160a01b03838116600090815260cb602090815260408083209386168352929052205460001981146117f157818110156121855760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611004565b6117f18484848403611c4b565b6001600160a01b03831661220e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401611004565b6001600160a01b03821661228a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401611004565b6001600160a01b038316600090815260ca6020526040902054818110156123195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401611004565b6001600160a01b03808516600081815260ca602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123799086815260200190565b60405180910390a36117f1565b61238e6136b9565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60606000806123ea846000015161370b565b915091506000806123fe866020015161370b565b91509150600080612412886080015161370b565b915091506000806124268a6040015161370b565b9150915060008061243a8c6060015161370b565b60408051600b80825261018082019092529294509092506020820161016080368337019050509a50898b60008151811061247657612476614294565b602002602001018181525050888b60018151811061249657612496614294565b602002602001018181525050878b6002815181106124b6576124b6614294565b602002602001018181525050868b6003815181106124d6576124d6614294565b602002602001018181525050838b6004815181106124f6576124f6614294565b602002602001018181525050828b60058151811061251657612516614294565b602002602001018181525050818b60068151811061253657612536614294565b602002602001018181525050808b60078151811061255657612556614294565b602002602001018181525050858b60088151811061257657612576614294565b602002602001018181525050848b60098151811061259657612596614294565b6020026020010181815250508b60a001518b600a815181106125ba576125ba614294565b60200260200101818152505050505050505050505050919050565b60c9546040517f3e3aa6c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633e3aa6c5908390612624908890889088906004016142e5565b604080518083038185885af1158015612641573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612666919061430d565b505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fe60009054906101000a90046001600160a01b03166001600160a01b0316636f0b0c1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561271057600080fd5b505af1158015612724573d6000803e3d6000fd5b50506040514792506001600160a01b038416915082156108fc029083906000818181858888f193505050501580156109c6573d6000803e3d6000fd5b612768612fa1565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123bb3390565b600054610100900460ff166128085760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401611004565b610b92613735565b600054610100900460ff1661287b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401611004565b610b926137ac565b6128e96040518060400160405280600981526020017f54726f76654465627400000000000000000000000000000000000000000000008152506128c583613820565b6040516020016128d59190614331565b6040516020818303038152906040526138c0565b60fc80546001600160a01b038087166001600160a01b03199283161790925560fd805486841690831617905560fe80549285169290911691909117905561293781662386f26fc1000061417d565b60ff556117f1306001613935565b60fc54604051632e46be5f60e21b815230600482015260009182916001600160a01b039091169063b91af97c90602401608060405180830381865afa158015612992573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b69190614241565b50509150915060006129c9868484610c13565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015612a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5c91906140ea565b50600080612a68612b36565b60fe54604051630635367960e51b815260006004820181905260248201889052604482018d905260648201526001600160a01b03808516608483015280841660a4830152939550919350919091169063c6a6cf209060c401600060405180830381600087803b158015612ada57600080fd5b505af1158015612aee573d6000803e3d6000fd5b50506040514792506001600160a01b038a16915082156108fc029083906000818181858888f19350505050158015612b2a573d6000803e3d6000fd5b50505050505050505050565b60fd546040517fb72703ac00000000000000000000000000000000000000000000000000000000815230600482015260009182916001600160a01b0390911690819063b72703ac90602401602060405180830381865afa158015612b9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc29190614277565b6040517f765e01590000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0383169063765e015990602401602060405180830381865afa158015612c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c439190614277565b92509250509091565b60fc546001600160a01b0316612c60610b94565b15612c97576040517f5a99cfb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612ca234611884565b604051632e46be5f60e21b81523060048201529091506000906001600160a01b0384169063b91af97c90602401608060405180830381865afa158015612cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d109190614241565b505060fe546040517f860665b300000000000000000000000000000000000000000000000000000000815260048101889052602481018690526001600160a01b038a81166044830152898116606483015293945092169163860665b3915034906084016000604051808303818588803b158015612d8c57600080fd5b505af1158015612da0573d6000803e3d6000fd5b5050604051632e46be5f60e21b8152306004820152600093506001600160a01b038716925063b91af97c9150602401608060405180830381865afa158015612dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e109190614241565b50506040516370a0823160e01b8152306004820152919250506001600160a01b0389169063a9059cbb90339060019084906370a0823190602401602060405180830381865afa158015612e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8b91906140d1565b612e959190614157565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1c91906140ea565b50612f278282614157565b61010055612f3e33612f398484614157565b613935565b5050505050505050565b600260975403612f9a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611004565b6002609755565b60655460ff1615610b925760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401611004565b6060600080613006846000015161370b565b9150915060008061301a866020015161370b565b9150915060008061302e886040015161370b565b60408051600680825260e082019092529294509092506020820160c080368337019050509650858760008151811061306857613068614294565b602002602001018181525050848760018151811061308857613088614294565b60200260200101818152505083876002815181106130a8576130a8614294565b60200260200101818152505082876003815181106130c8576130c8614294565b60200260200101818152505081876004815181106130e8576130e8614294565b602002602001018181525050808760058151811061310857613108614294565b602002602001018181525050505050505050919050565b60c9546040517f2c9dd5c00000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690632c9dd5c09061316a9085908590600401614376565b6020604051808303816000875af1158015613189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c691906140d1565b81156131cb57610103546131cb906001600160a01b031630846139f6565b8015610ac45761010454610ac4906001600160a01b031630836139f6565b610102546040830135156132145761010454613214906001600160a01b031682604086013585613631565b60208301351561323f576101035461323f906001600160a01b0316826020860135611661868261416a565b6040805160c0808201835285358083526000602080850182905284860182905260608086018390526080808701849052600160a097880181905261010c86905561010d85905561010e85905561010f8590556101108590556101118190558851958652928501849052968401839052830182905294820152918201929092527f5dd47cb83ee01578375abce18ce70bf39b73b5069a8f0023ace58b54238be037910160405180910390a1505050565b60fc546000906001600160a01b031661330684611884565b604051632e46be5f60e21b81523060048201529092506000906001600160a01b0383169063b91af97c90602401608060405180830381865afa158015613350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133749190614241565b5050509050600080613384612b36565b60fe54604051630635367960e51b815267ffffffffffffffff8a1660048201526000602482015260448101899052600160648201526001600160a01b03808516608483015280841660a4830152939550919350919091169063c6a6cf2090899060c4016000604051808303818588803b15801561340057600080fd5b505af1158015613414573d6000803e3d6000fd5b5050604051632e46be5f60e21b8152306004820152600093506001600160a01b038816925063b91af97c9150602401608060405180830381865afa158015613460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134849190614241565b5050509050600084613494610b94565b61349e8785614157565b6134a8919061417d565b6134b29190614194565b90506134be3082613935565b50505050505092915050565b60fc54604051632e46be5f60e21b8152306004820152600091829182916001600160a01b03169063b91af97c90602401608060405180830381865afa158015613517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353b9190614241565b505091509150600061354b610b94565b905060008361355a838861417d565b6135649190614194565b90506000613573878686610c13565b9050600080613580612b36565b60fe54604051630635367960e51b815260006004820181905260248201889052604482018e905260648201526001600160a01b03808516608483015280841660a48301529395509193504792169063c6a6cf209060c401600060405180830381600087803b1580156135f157600080fd5b505af1158015613605573d6000803e3d6000fd5b50479250613617915083905082614157565b99506136233087613a74565b505050505050505050919050565b81156117f1576040517fe2bbb15800000000000000000000000000000000000000000000000000000000815260048101839052602481018490526001600160a01b0385169063e2bbb1589083906044016000604051808303818588803b15801561369a57600080fd5b505af11580156136ae573d6000803e3d6000fd5b505050505050505050565b60655460ff16610b925760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401611004565b600080600161371c60806002614473565b6137269190614157565b83169360809390931c92915050565b600054610100900460ff166137a05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401611004565b6065805460ff19169055565b600054610100900460ff166138175760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401611004565b610b923361266e565b6060600061382d83613bdf565b600101905060008167ffffffffffffffff81111561384d5761384d6141cf565b6040519080825280601f01601f191660200182016040528015613877576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461388157509392505050565b600054610100900460ff1661392b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401611004565b610ac48282613cc1565b6001600160a01b03821661398b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401611004565b8060cc600082825461399d919061416a565b90915550506001600160a01b038216600081815260ca60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6040517ef714ce000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b03838116602483015284169062f714ce90604401600060405180830381600087803b158015613a5757600080fd5b505af1158015613a6b573d6000803e3d6000fd5b50505050505050565b6001600160a01b038216613af05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401611004565b6001600160a01b038216600090815260ca602052604090205481811015613b7f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401611004565b6001600160a01b038316600081815260ca60209081526040808320868603905560cc80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613c28577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613c54576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613c7257662386f26fc10000830492506010015b6305f5e1008310613c8a576305f5e100830492506008015b6127108310613c9e57612710830492506004015b60648310613cb0576064830492506002015b600a8310610b6e5760010192915050565b600054610100900460ff16613d2c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401611004565b60cd613d3883826144c5565b5060ce6109c682826144c5565b6001600160a01b0381168114610ebd57600080fd5b60008060408385031215613d6d57600080fd5b8235613d7881613d45565b91506020830135613d8881613d45565b809150509250929050565b60005b83811015613dae578181015183820152602001613d96565b50506000910152565b6020815260008251806020840152613dd6816040850160208701613d93565b601f01601f19169190910160400192915050565b60008060408385031215613dfd57600080fd5b8235613e0881613d45565b946020939093013593505050565b600080600060608486031215613e2b57600080fd5b8335613e3681613d45565b92506020840135613e4681613d45565b929592945050506040919091013590565b600080600060608486031215613e6c57600080fd5b505081359360208301359350604090920135919050565b8015158114610ebd57600080fd5b600060208284031215613ea357600080fd5b8135613eae81613e83565b9392505050565b600080600080600060a08688031215613ecd57600080fd5b8535613ed881613e83565b97602087013597506040870135966060810135965060800135945092505050565b634e487b7160e01b600052602160045260246000fd5b6040810160038410613f2357613f23613ef9565b9281526020015290565b600060208284031215613f3f57600080fd5b8135613eae81613d45565b6020810160058310613f5e57613f5e613ef9565b91905290565b600060208284031215613f7657600080fd5b5035919050565b60008060008060008060008060008060006101608c8e031215613f9f57600080fd5b8b35613faa81613d45565b9a5060208c0135613fba81613d45565b995060408c0135613fca81613d45565b985060608c0135613fda81613d45565b975060808c0135613fea81613d45565b965060a08c0135955060c08c013561400181613d45565b945060e08c013593506101008c013592506101208c013561402181613d45565b91506101408c013561403281613d45565b809150509295989b509295989b9093969950565b6000806040838503121561405957600080fd5b823591506020830135613d8881613d45565b60008060008084860360c081121561408257600080fd5b606081121561409057600080fd5b5084935060608501359250608085013567ffffffffffffffff811681146140b657600080fd5b915060a08501356140c681613e83565b939692955090935050565b6000602082840312156140e357600080fd5b5051919050565b6000602082840312156140fc57600080fd5b8151613eae81613e83565b600181811c9082168061411b57607f821691505b60208210810361413b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b6e57610b6e614141565b80820180821115610b6e57610b6e614141565b8082028115828204841417610b6e57610b6e614141565b6000826141b157634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016141c8576141c8614141565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000606082840312156141f757600080fd5b6040516060810181811067ffffffffffffffff8211171561421a5761421a6141cf565b80604052508235815260208301356020820152604083013560408201528091505092915050565b6000806000806080858703121561425757600080fd5b505082516020840151604085015160609095015191969095509092509050565b60006020828403121561428957600080fd5b8151613eae81613d45565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156142da578151875295820195908201906001016142be565b509495945050505050565b83815282602082015260606040820152600061430460608301846142aa565b95945050505050565b6000806040838503121561432057600080fd5b505080516020909101519092909150565b7f54442d0000000000000000000000000000000000000000000000000000000000815260008251614369816003850160208701613d93565b9190910160030192915050565b828152604060208201526000610c2a60408301846142aa565b600181815b808511156143ca5781600019048211156143b0576143b0614141565b808516156143bd57918102915b93841c9390800290614394565b509250929050565b6000826143e157506001610b6e565b816143ee57506000610b6e565b8160018114614404576002811461440e5761442a565b6001915050610b6e565b60ff84111561441f5761441f614141565b50506001821b610b6e565b5060208310610133831016604e8410600b841016171561444d575081810a610b6e565b614457838361438f565b806000190482111561446b5761446b614141565b029392505050565b6000613eae83836143d2565b601f8211156109c657600081815260208120601f850160051c810160208610156144a65750805b601f850160051c820191505b81811015612666578281556001016144b2565b815167ffffffffffffffff8111156144df576144df6141cf565b6144f3816144ed8454614107565b8461447f565b602080601f83116001811461452857600084156145105750858301515b600019600386901b1c1916600185901b178555612666565b600085815260208120601f198616915b8281101561455757888601518255948401946001909101908401614538565b50858210156145755787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212202b3ea3a7ff4dcfdcabea53d12b1d05f000b01ed0499c0be94dce3a5b6db2587a64736f6c63430008110033