0x60e060405234801561001057600080fd5b5060405161135638038061135683398101604081905261002f91610064565b6001600160a01b0392831660805290821660c0521660a0526100b1565b6001600160a01b038116811461006157600080fd5b50565b60008060006060848603121561007957600080fd5b83516100848161004c565b60208501519093506100958161004c565b60408501519092506100a68161004c565b809150509250925092565b60805160a05160c05161124c61010a600039600081816102b301528181610536015261090d01526000818161017301528181610cf30152610dcc0152600081816101b20152818161036b0152610bfa015261124c6000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ad923811610066578063b4ad923814610148578063b71c415e1461015b578063c31c9c071461016e578063c45a0155146101ad578063f0f44260146101d457600080fd5b8063483a6a38146100985780634e84fb1b146100ad57806391a9e940146100df578063a761a939146100f2575b600080fd5b6100ab6100a6366004610f66565b6101e7565b005b6005546040805163ffffffff600160c01b840481168252600160e01b9093049092166020830152015b60405180910390f35b6100ab6100ed366004610f8a565b6102a9565b610139610100366004610f66565b6001600160a01b03908116600090815260208190526040902080546001909101549082169291811691600160a01b90910462ffffff1690565b6040516100d693929190610fdd565b6100ab61015636600461101e565b610674565b6100ab610169366004611051565b6106c9565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d6565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6100ab6101e2366004610f66565b6107c9565b4360009081526002602081815260408084203285529091529091205460ff161561022c5760405162461bcd60e51b8152600401610223906110c6565b60405180910390fd5b4360009081526020828152604080832033845290915290205460ff16156102655760405162461bcd60e51b8152600401610223906110c6565b61026e826107f3565b50436000908152602091825260408082203283529092528181208054600160ff19918216811790925533835292909120805490921617905550565b6102b1610b49565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141580156103055750816001600160a01b0316836001600160a01b031614155b6103515760405162461bcd60e51b815260206004820152601c60248201527f50696c6772696d4d616b65723a20496e76616c696420627269646765000000006044820152606401610223565b604051630b4c774160e11b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631698ee82906103a490879087908790600401610fdd565b60206040518083038186803b1580156103bc57600080fd5b505afa1580156103d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f491906110fb565b90506001600160a01b0381166104685760405162461bcd60e51b815260206004820152603360248201527f50696c6772696d4d616b65723a20496e76616c6964206272696467652c206e6f60448201527208155b9a5cddd85c081c1bdbdb08199bdd5b99606a1b6064820152608401610223565b604080516060810182526001600160a01b03868116808352868216602080850182815262ffffff89811687890181815260008781528086528a9020985189549089166001600160a01b03199091161789559251600190980180549351909216600160a01b026001600160b81b03199093169790961696909617179094559351918252917f01f00bdd2fe333a97ef609eaffd82713bc1c66cac274495fd8a29ea052abde71910160405180910390a36001600160a01b03841660009081526020819052604090205b60018101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161461066d576001908101546001600160a01b03908116600090815260208190526040902091820154166105f35760405162461bcd60e51b815260206004820152603360248201527f50696c6772696d4d616b65723a20496e76616c6964206272696467652c206e6f604482015272081c9bdd5d19481d1bc814125308199bdd5b99606a1b6064820152608401610223565b60018101546001600160a01b03868116911614156106685760405162461bcd60e51b815260206004820152602c60248201527f50696c6772696d4d616b65723a20496e76616c6964206272696467652c20637960448201526b18db194819195d1958dd195960a21b6064820152608401610223565b61052f565b5050505050565b61067c610b49565b60008163ffffffff161161068f57600080fd5b600580546001600160c01b0316600160c01b63ffffffff948516026001600160e01b031617600160e01b9290931691909102919091179055565b4360009081526002602081815260408084203285529091529091205460ff16156107055760405162461bcd60e51b8152600401610223906110c6565b4360009081526020828152604080832033845290915290205460ff161561073e5760405162461bcd60e51b8152600401610223906110c6565b8160005b8181101561078c5761077985858381811061075f5761075f611118565b90506020020160208101906107749190610f66565b6107f3565b508061078481611144565b915050610742565b5050436000908152602091825260408082203283529092528181208054600160ff1991821681179092553383529290912080549092161790555050565b6107d1610b49565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038082166000908152602081905260408120600181015491929091166108775760405162461bcd60e51b815260206004820152602c60248201527f50696c6772696d4d616b65723a20496e76616c696420746f6b656e2c206e6f2060448201526b189c9a5919d948199bdd5b9960a21b6064820152608401610223565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b1580156108b957600080fd5b505afa1580156108cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f1919061115f565b905080610902575060009392505050565b8092505b60018201547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614610a15576040805160608101825283546001600160a01b03908116825260018501549081166020830152600160a01b900462ffffff1691810191909152610982908430610bd2565b6001928301546001600160a01b0390811660009081526020819052604090209384015491945016610a105760405162461bcd60e51b815260206004820152603260248201527f50696c6772696d4d616b65723a20496e76616c696420746f6b656e2c206e6f206044820152711c9bdd5d19481d1bc814125308199bdd5b9960721b6064820152608401610223565b610906565b6040805160608101825283546001600160a01b03908116825260018501549081166020830152600160a01b900462ffffff1691810191909152610a59908430610bd2565b60055490935060009063ffffffff600160e01b8204811691610a8491600160c01b9091041686611178565b610a8e9190611197565b60055460405163f3fef3a360e01b8152306004820152602481018390529192506001600160a01b03169063f3fef3a390604401600060405180830381600087803b158015610adb57600080fd5b505af1158015610aef573d6000803e3d6000fd5b505060408051858152602081018890529081018490526001600160a01b03881692503391507f478cd2df03921485edb4ef53f1cd6747ea7527ef8eb1b27be969115a0964edfb9060600160405180910390a3505050919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600401546001600160a01b03163314610bd05760405162461bcd60e51b815260206004820152602260248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60448201526132b960f11b6064820152608401610223565b565b825160208401516040808601519051630b4c774160e11b815260009384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693631698ee8293610c3093929190600401610fdd565b60206040518083038186803b158015610c4857600080fd5b505afa158015610c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8091906110fb565b90506001600160a01b038116610ceb5760405162461bcd60e51b815260206004820152602a60248201527f50696c6772696d4d616b65723a20496e76616c696420706169722c2063616e6e6044820152691bdd0818dbdb9d995c9d60b21b6064820152608401610223565b8451610d18907f000000000000000000000000000000000000000000000000000000000000000086610e55565b604080516101008101825286516001600160a01b03908116825260208089015182169083019081528884015162ffffff90811684860190815288841660608601908152426080870190815260a087018c8152600060c0890181815260e08a01918252995163414bf38960e01b815289518916600482015296518816602488015293519094166044860152905185166064850152516084840152905160a4830152935160c48201529251811660e484015290917f00000000000000000000000000000000000000000000000000000000000000009091169063414bf3899061010401602060405180830381600087803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4b919061115f565b9695505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1790529151600092839290871691610eb191906111b9565b6000604051808303816000865af19150503d8060008114610eee576040519150601f19603f3d011682016040523d82523d6000602084013e610ef3565b606091505b5091509150818015610f1d575080511580610f1d575080806020019051810190610f1d91906111f4565b61066d5760405162461bcd60e51b8152602060048201526002602482015261534160f01b6044820152606401610223565b6001600160a01b0381168114610f6357600080fd5b50565b600060208284031215610f7857600080fd5b8135610f8381610f4e565b9392505050565b600080600060608486031215610f9f57600080fd5b8335610faa81610f4e565b92506020840135610fba81610f4e565b9150604084013562ffffff81168114610fd257600080fd5b809150509250925092565b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b803563ffffffff8116811461101957600080fd5b919050565b6000806040838503121561103157600080fd5b61103a83611005565b915061104860208401611005565b90509250929050565b6000806020838503121561106457600080fd5b823567ffffffffffffffff8082111561107c57600080fd5b818501915085601f83011261109057600080fd5b81358181111561109f57600080fd5b8660208260051b85010111156110b457600080fd5b60209290920196919550909350505050565b6020808252818101527f50696c6772696d3a206f6e6520626c6f636b2c206f6e652066756e6374696f6e604082015260600190565b60006020828403121561110d57600080fd5b8151610f8381610f4e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156111585761115861112e565b5060010190565b60006020828403121561117157600080fd5b5051919050565b60008160001904831182151516156111925761119261112e565b500290565b6000826111b457634e487b7160e01b600052601260045260246000fd5b500490565b6000825160005b818110156111da57602081860181015185830152016111c0565b818111156111e9576000828501525b509190910192915050565b60006020828403121561120657600080fd5b81518015158114610f8357600080fdfea264697066735822122033dd5afc386d5d4d637677b384385671ab80e5bda4eea2ccf653436dd4fbdbed64736f6c634300080900330000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f9840000000000000000000000005bd46d83ab0db4427f89f01f9dd0a0b9ab26614800000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45