0x60806040526032600855600a6009553480156200001b57600080fd5b5060405162003d6438038062003d648339810160408190526200003e91620003c6565b82620000536200004d620000a4565b620000a8565b6200005e81620000f8565b6200006862000192565b50600680546001600160a01b03199081166001600160a01b039485161790915560078054909116919092161760ff60a01b1916905550620004a1565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b62000102620000a4565b6001600160a01b03166200011562000376565b6001600160a01b031614620001475760405162461bcd60e51b81526004016200013e906200040f565b60405180910390fd5b6001600160a01b038116620001705760405162461bcd60e51b81526004016200013e9062000444565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60015460408051633018205f60e01b815290516000926001600160a01b031691633018205f916004808301926020929190829003018186803b158015620001d857600080fd5b505afa158015620001ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002139190620003a2565b600280546001600160a01b0319166001600160a01b03838116919091179091556001546040805163d01f63f560e01b81529051939450600093919092169163d01f63f5916004808301926020929190829003018186803b1580156200027757600080fd5b505afa1580156200028c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b29190620003a2565b600380546001600160a01b0319166001600160a01b03838116919091179091556001546040805163cf28493f60e01b81529051939450600093919092169163cf28493f916004808301926020929190829003018186803b1580156200031657600080fd5b505afa1580156200032b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003519190620003a2565b600480546001600160a01b0319166001600160a01b0392909216919091179055505050565b6000546001600160a01b031690565b80516001600160a01b03811681146200039d57600080fd5b919050565b600060208284031215620003b4578081fd5b620003bf8262000385565b9392505050565b600080600060608486031215620003db578182fd5b620003e68462000385565b9250620003f66020850162000385565b9150620004066040850162000385565b90509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f47616d6d614f70657261746f723a3a73657441646472657373426f6f6b3a204160408201527f646472657373206d757374206e6f74206265207a65726f000000000000000000606082015260800190565b6138b380620004b16000396000f3fe6080604052600436106102605760003560e01c806392a1a2e711610144578063ce4905bc116100b6578063ec8daaf91161007a578063ec8daaf914610705578063f2fde38b1461071a578063f54ac2461461073a578063f5887cdd1461075a578063f77c47911461076f578063f7c8d2211461078457610267565b8063ce4905bc14610663578063d09ef24114610683578063e55107a0146106b0578063e723406c146106c5578063e7c5a6e8146106e557610267565b8063a85c38ef11610108578063a85c38ef1461058c578063acfee8ed146105c0578063c2a9a831146105e0578063c8daad3014610600578063cd43fbfb14610620578063ce3e39c01461064e57610267565b806392a1a2e7146104fe57806393e59dc114610513578063945ce2c414610528578063965fa21e146105485780639daafbe81461055d57610267565b806341929f0f116101dd578063715018a6116101a1578063715018a61461045f5780637c55ccb3146104745780638047c2fb1461048957806383781c10146104a9578063861e4e5b146104c95780638da5cb5b146104e957610267565b806341929f0f146103bf57806342ae6aba146103df57806345389e3f146103ff578063514fcac71461041f5780635d841af51461043f57610267565b80631cb78541116102245780631cb78541146103285780632c9d27ea1461033d5780632e2dc43e1461035d5780632e5187fb1461037f57806332f8e23e1461039f57610267565b806307c2e16c1461026c5780630b3448a81461029757806311946b98146102b9578063144c27ff146102e6578063182192d31461030857610267565b3661026757005b600080fd5b34801561027857600080fd5b506102816107a4565b60405161028e91906132b5565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004612ae5565b6107aa565b005b3480156102c557600080fd5b506102d96102d4366004612ae5565b61083a565b60405161028e91906132aa565b3480156102f257600080fd5b506102fb6108c3565b60405161028e919061304d565b34801561031457600080fd5b506102d9610323366004612e41565b6108d2565b34801561033457600080fd5b506102fb6109f7565b34801561034957600080fd5b50610281610358366004612b1d565b610a06565b34801561036957600080fd5b50610372610b2e565b60405161028e919061325b565b34801561038b57600080fd5b506102b761039a366004612e41565b610bf5565b3480156103ab57600080fd5b506102b76103ba366004612e41565b610d5d565b3480156103cb57600080fd5b506102b76103da366004612bfd565b610da1565b3480156103eb57600080fd5b506102d96103fa366004612ae5565b610df2565b34801561040b57600080fd5b506102b761041a366004612ae5565b610ea1565b34801561042b57600080fd5b506102b761043a366004612e41565b610f02565b34801561044b57600080fd5b506102b761045a366004612e41565b610fc7565b34801561046b57600080fd5b506102b761100b565b34801561048057600080fd5b506102b7611056565b34801561049557600080fd5b506102d96104a4366004612b5d565b61122e565b3480156104b557600080fd5b506102d96104c4366004612b5d565b6112cf565b3480156104d557600080fd5b506102b76104e4366004612ae5565b61131e565b3480156104f557600080fd5b506102fb611437565b34801561050a57600080fd5b50610281611446565b34801561051f57600080fd5b506102fb61144c565b34801561053457600080fd5b506102d9610543366004612b1d565b61145b565b34801561055457600080fd5b50610281611503565b34801561056957600080fd5b5061057d610578366004612b5d565b611509565b60405161028e9392919061371c565b34801561059857600080fd5b506105ac6105a7366004612e41565b6115a9565b60405161028e9897969594939291906130cc565b3480156105cc57600080fd5b506102b76105db366004612bc9565b611613565b3480156105ec57600080fd5b506102d96105fb366004612ae5565b61185f565b34801561060c57600080fd5b506102fb61061b366004612c9e565b611892565b34801561062c57600080fd5b5061064061063b366004612cd1565b611941565b60405161028e929190613741565b34801561065a57600080fd5b506102fb6119cf565b34801561066f57600080fd5b5061028161067e366004612b5d565b6119de565b34801561068f57600080fd5b506106a361069e366004612e41565b611a61565b60405161028e91906136eb565b3480156106bc57600080fd5b506102d9611b14565b3480156106d157600080fd5b506102d96106e0366004612ae5565b611b24565b3480156106f157600080fd5b506102b7610700366004612ae5565b611b55565b34801561071157600080fd5b506102b7611bb6565b34801561072657600080fd5b506102b7610735366004612ae5565b611d14565b34801561074657600080fd5b506102b7610755366004612b88565b611d85565b34801561076657600080fd5b506102fb611e7f565b34801561077b57600080fd5b506102fb611e8e565b34801561079057600080fd5b506102b761079f366004612b5d565b611e9d565b60055490565b6107b2611f46565b6001600160a01b03166107c3611437565b6001600160a01b0316146107f25760405162461bcd60e51b81526004016107e990613463565b60405180910390fd5b6001600160a01b0381166108185760405162461bcd60e51b81526004016107e990613498565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003546040516302328d7360e31b81526000916001600160a01b0316906311946b989061086b90859060040161304d565b60206040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190612c6c565b90505b919050565b6007546001600160a01b031681565b600080600583815481106108f657634e487b7160e01b600052603260045260246000fd5b6000918252602091829020604080516101008082018352600790940290920180546001600160a01b0390811684526001820154169483019490945260028401549082015260038301546060820152600483015460ff808216151560808401529290048216151560a0820152600583015460c08201526006909201541615801560e083015290915061098b5760009150506108be565b8060800151156109c15760006109a9826000015183606001516112cf565b9050806109bb576000925050506108be565b506109ee565b60006109da82600001518360200151846040015161145b565b9050806109ec576000925050506108be565b505b50600192915050565b6006546001600160a01b031681565b600080836001600160a01b03166370a08231866040518263ffffffff1660e01b8152600401610a35919061304d565b60206040518083038186803b158015610a4d57600080fd5b505afa158015610a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a859190612c86565b90506000846001600160a01b031663dd62ed3e87306040518363ffffffff1660e01b8152600401610ab7929190613085565b60206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b079190612c86565b90506000610b158383611f4a565b9050610b218582611f4a565b93505050505b9392505050565b60606005805480602002602001604051908101604052809291908181526020016000905b82821015610bec5760008481526020908190206040805161010080820183526007870290930180546001600160a01b0390811683526001808301549091168387015260028201549383019390935260038101546060830152600481015460ff808216151560808501529490048416151560a0830152600581015460c083015260060154909216151560e08301529083529092019101610b52565b50505050905090565b6006546001600160a01b0316331480610c265750610c11611437565b6001600160a01b0316336001600160a01b0316145b610c425760405162461bcd60e51b81526004016107e9906132d1565b600060058281548110610c6557634e487b7160e01b600052603260045260246000fd5b60009182526020909120600790910201600681015490915060ff1615610c9d5760405162461bcd60e51b81526004016107e99061336d565b610ca6826108d2565b610cc25760405162461bcd60e51b81526004016107e9906135bb565b60068101805460ff19166001179055600481015460ff1615610d0357805460038201546005830154610cfe926001600160a01b03169190611f5f565b610d2c565b8054600182015460028301546005840154610d2c936001600160a01b0390811693169190612236565b60405160009083907f5b852761bce0e9cfbd818d902f0bb52b7fa79a4453694d4fb3952668f01bdd5a908390a35050565b610d65611f46565b6001600160a01b0316610d76611437565b6001600160a01b031614610d9c5760405162461bcd60e51b81526004016107e990613463565b600955565b60005b81811015610ded57610ddb838383818110610dcf57634e487b7160e01b600052603260045260246000fd5b90506020020135610bf5565b80610de581613821565b915050610da4565b505050565b600080826001600160a01b031663ade6e2aa6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e2e57600080fd5b505afa158015610e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e669190612c86565b421015905080610e7a5760009150506108be565b6000610e8584611b24565b905080610e97576000925050506108be565b5060019392505050565b610ea9611f46565b6001600160a01b0316610eba611437565b6001600160a01b031614610ee05760405162461bcd60e51b81526004016107e990613463565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600060058281548110610f2557634e487b7160e01b600052603260045260246000fd5b6000918252602090912060079091020180549091506001600160a01b03163314610f615760405162461bcd60e51b81526004016107e99061340e565b600681015460ff1615610f865760405162461bcd60e51b81526004016107e990613566565b60068101805460ff1916600190811790915560405183907f5b852761bce0e9cfbd818d902f0bb52b7fa79a4453694d4fb3952668f01bdd5a90600090a35050565b610fcf611f46565b6001600160a01b0316610fe0611437565b6001600160a01b0316146110065760405162461bcd60e51b81526004016107e990613463565b600855565b611013611f46565b6001600160a01b0316611024611437565b6001600160a01b03161461104a5760405162461bcd60e51b81526004016107e990613463565b61105460006124d9565b565b60015460408051633018205f60e01b815290516000926001600160a01b031691633018205f916004808301926020929190829003018186803b15801561109b57600080fd5b505afa1580156110af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d39190612b01565b600280546001600160a01b0319166001600160a01b03838116919091179091556001546040805163d01f63f560e01b81529051939450600093919092169163d01f63f5916004808301926020929190829003018186803b15801561113657600080fd5b505afa15801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e9190612b01565b600380546001600160a01b0319166001600160a01b03838116919091179091556001546040805163cf28493f60e01b81529051939450600093919092169163cf28493f916004808301926020929190829003018186803b1580156111d157600080fd5b505afa1580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112099190612b01565b600480546001600160a01b0319166001600160a01b0392909216919091179055505050565b600254604051636553690d60e11b815260009182916001600160a01b039091169063caa6d21a9061126390879060040161304d565b60206040518083038186803b15801561127b57600080fd5b505afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190612c86565b90506000831180156112c55750808311155b9150505b92915050565b60008060006112de8585611509565b50915091506000806112f08484611941565b915091508015806112ff575081155b156113115760009450505050506112c9565b5060019695505050505050565b611326611f46565b6001600160a01b0316611337611437565b6001600160a01b03161461135d5760405162461bcd60e51b81526004016107e990613463565b600754600160a01b900460ff161561137457600080fd5b6007805460ff60a01b1916600160a01b1790556006546040805160048082526024820183526020820180516001600160e01b0316631f43112360e31b17905291516345c934b560e11b81526001600160a01b0390931692638b92696a926114029230927f41929f0f7d5d72e03f9413e78666fadfa7d110a2b9b99a2f63261ad6fd7028a69288929101613114565b600060405180830381600087803b15801561141c57600080fd5b505af1158015611430573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031690565b60095481565b6003546001600160a01b031681565b600080611469858585610a06565b604051633392416f60e21b8152909150309063ce4905bc90611491908790859060040161315a565b60206040518083038186803b1580156114a957600080fd5b505afa9250505080156114d9575060408051601f3d908101601f191682019092526114d691810190612c86565b60015b6114e7576000915050610b27565b806114f757600092505050610b27565b50600195945050505050565b60085481565b61151161276a565b6002546040516313b55f7d60e31b815260009182916001600160a01b0390911690639daafbe890611548908890889060040161315a565b60006040518083038186803b15801561156057600080fd5b505afa158015611574573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261159c9190810190612d14565b9250925092509250925092565b600581815481106115b957600080fd5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601546001600160a01b03958616975094909316949193909260ff808216936101009092048116921688565b6000806001600160a01b03851661164e5783156116425760405162461bcd60e51b81526004016107e9906134f5565b50506009546001611679565b6116578561083a565b6116735760405162461bcd60e51b81526004016107e990613699565b60085491505b6005546116846127a0565b338082526001600160a01b038881166020840181815260408086018b8152606087018b81528915156080890190815260c089018c81526005805460018101825560009182528b5160079091027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081018054928c166001600160a01b031993841617905597517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db18901805491909b1691161790985592517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db286015590517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db3850155517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db48401805460a08a015115156101000261ff001993151560ff19928316179390931692909217905590517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db584015560e08701517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db6909301805493151593909116929092179091555190929185917fd4e0aaf5be9b8773c644dfebba8b63f878965712ad8589d85ca4bc9d1b671e2c9190a450505050505050565b600254604051635b1b1e7960e11b81526000916001600160a01b03169063b6363cf29061086b9085903090600401613085565b6000806118a28360000151612529565b905060006118b38460200151612529565b905081806118be5750805b6118d857634e487b7160e01b600052600160045260246000fd5b8161190f57836020015160008151811061190257634e487b7160e01b600052603260045260246000fd5b6020026020010151611939565b8351805160009061193057634e487b7160e01b600052603260045260246000fd5b60200260200101515b949350505050565b6004805460405163cd43fbfb60e01b815260009283926001600160a01b03169163cd43fbfb916119759188918891016136fa565b604080518083038186803b15801561198c57600080fd5b505afa1580156119a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c49190612e59565b915091509250929050565b6004546001600160a01b031681565b60025460405163565eea1960e01b81526000916001600160a01b03169063565eea1990611a11908690869060040161315a565b60206040518083038186803b158015611a2957600080fd5b505afa158015611a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190612c86565b611a696127a0565b60058281548110611a8a57634e487b7160e01b600052603260045260246000fd5b6000918252602091829020604080516101008082018352600790940290920180546001600160a01b0390811684526001820154169483019490945260028401549082015260038301546060820152600483015460ff808216151560808401529290048216151560a0820152600583015460c082015260069092015416151560e08201529050919050565b600754600160a01b900460ff1681565b6002546040516339c8d01b60e21b81526000916001600160a01b03169063e723406c9061086b90859060040161304d565b611b5d611f46565b6001600160a01b0316611b6e611437565b6001600160a01b031614611b945760405162461bcd60e51b81526004016107e990613463565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b611bbe611f46565b6001600160a01b0316611bcf611437565b6001600160a01b031614611bf55760405162461bcd60e51b81526004016107e990613463565b600754600160a01b900460ff16611c0b57600080fd5b6007805460ff60a01b19169055600654604051632970562f60e11b81526001600160a01b039091169063ee8ca3b59082906352e0ac5e90611c7490309081907f41929f0f7d5d72e03f9413e78666fadfa7d110a2b9b99a2f63261ad6fd7028a69060040161309f565b60206040518083038186803b158015611c8c57600080fd5b505afa158015611ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc49190612c86565b6040518263ffffffff1660e01b8152600401611ce091906132b5565b600060405180830381600087803b158015611cfa57600080fd5b505af1158015611d0e573d6000803e3d6000fd5b50505050565b611d1c611f46565b6001600160a01b0316611d2d611437565b6001600160a01b031614611d535760405162461bcd60e51b81526004016107e990613463565b6001600160a01b038116611d795760405162461bcd60e51b81526004016107e990613327565b611d82816124d9565b50565b611d8d611f46565b6001600160a01b0316611d9e611437565b6001600160a01b031614611dc45760405162461bcd60e51b81526004016107e990613463565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0384161415611e6b576000816001600160a01b031683604051611e029061304a565b60006040518083038185875af1925050503d8060008114611e3f576040519150601f19603f3d011682016040523d82523d6000602084013e611e44565b606091505b5050905080611e655760405162461bcd60e51b81526004016107e9906133c3565b50610ded565b610ded6001600160a01b038416828461257c565b6001546001600160a01b031681565b6002546001600160a01b031681565b611ea5611f46565b6001600160a01b0316611eb6611437565b6001600160a01b031614611edc5760405162461bcd60e51b81526004016107e990613463565b600754604051631c20fadd60e01b81526001600160a01b0390911690631c20fadd90611f1090309086908690600401613061565b600060405180830381600087803b158015611f2a57600080fd5b505af1158015611f3e573d6000803e3d6000fd5b505050505050565b3390565b6000818311611f595782610b27565b50919050565b611f676127e4565b600781819052506001600160a01b0384166020820152608081018390523060408083019190915280516001808252818301909252600091816020015b611fab6127e4565b815260200190600190039081611fa35790505090508181600081518110611fe257634e487b7160e01b600052603260045260246000fd5b60200260200101819052506000611ff98686611509565b50509050600061200882611892565b90506000816001600160a01b031663aabaecd66040518163ffffffff1660e01b815260040160206040518083038186803b15801561204557600080fd5b505afa158015612059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207d9190612b01565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016120ad919061304d565b60206040518083038186803b1580156120c557600080fd5b505afa1580156120d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fd9190612c86565b600254604051635b0bf86360e11b81529192506001600160a01b03169063b617f0c69061212e908890600401613173565b600060405180830381600087803b15801561214857600080fd5b505af115801561215c573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b03851691506370a082319061218f90309060040161304d565b60206040518083038186803b1580156121a757600080fd5b505afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190612c86565b905060006121ed83836137de565b905060006127106121fe838c6137bf565b612208919061379f565b61221290836137de565b90506122286001600160a01b0386168d8361257c565b505050505050505050505050565b6000612243858585610a06565b905061225a6001600160a01b0385168630846125d2565b6122626127e4565b60088152306040808301919091526001600160a01b038616606083015260a0820185905280516001808252818301909252600091602082015b6122a36127e4565b81526020019060019003908161229b57905050905081816000815181106122da57634e487b7160e01b600052603260045260246000fd5b60200260200101819052506000866001600160a01b031663aabaecd66040518163ffffffff1660e01b815260040160206040518083038186803b15801561232057600080fd5b505afa158015612334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123589190612b01565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612388919061304d565b60206040518083038186803b1580156123a057600080fd5b505afa1580156123b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d89190612c86565b600254604051635b0bf86360e11b81529192506001600160a01b03169063b617f0c690612409908690600401613173565b600060405180830381600087803b15801561242357600080fd5b505af1158015612437573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b03851691506370a082319061246a90309060040161304d565b60206040518083038186803b15801561248257600080fd5b505afa158015612496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ba9190612c86565b905060006124c883836137de565b905060006127106121fe838b6137bf565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082511180156108bb575060006001600160a01b03168260008151811061256257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614159050919050565b610ded8363a9059cbb60e01b848460405160240161259b92919061315a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125f3565b611d0e846323b872dd60e01b85858560405160240161259b93929190613061565b6000612648826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126829092919063ffffffff16565b805190915015610ded57808060200190518101906126669190612c6c565b610ded5760405162461bcd60e51b81526004016107e99061364f565b60606119398484600085856126968561272b565b6126b25760405162461bcd60e51b81526004016107e990613618565b600080866001600160a01b031685876040516126ce919061302e565b60006040518083038185875af1925050503d806000811461270b576040519150601f19603f3d011682016040523d82523d6000602084013e612710565b606091505b5091509150612720828286612731565b979650505050505050565b3b151590565b60608315612740575081610b27565b8251156127505782518084602001fd5b8160405162461bcd60e51b81526004016107e991906132be565b6040518060c001604052806060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b604080516101008101909152806000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b600082601f830112612855578081fd5b8135602061286a6128658361377b565b613751565b8281528181019085830183850287018401881015612886578586fd5b855b858110156128ad57813561289b81613868565b84529284019290840190600101612888565b5090979650505050505050565b600082601f8301126128ca578081fd5b815160206128da6128658361377b565b82815281810190858301838502870184018810156128f6578586fd5b855b858110156128ad57815161290b81613868565b845292840192908401906001016128f8565b600082601f83011261292d578081fd5b8135602061293d6128658361377b565b8281528181019085830183850287018401881015612959578586fd5b855b858110156128ad5781358452928401929084019060010161295b565b600082601f830112612987578081fd5b815160206129976128658361377b565b82815281810190858301838502870184018810156129b3578586fd5b855b858110156128ad578151845292840192908401906001016129b5565b805180151581146108be57600080fd5b600060c082840312156129f2578081fd5b6129fc60c0613751565b9050813567ffffffffffffffff80821115612a1657600080fd5b612a2285838601612845565b83526020840135915080821115612a3857600080fd5b612a4485838601612845565b60208401526040840135915080821115612a5d57600080fd5b612a6985838601612845565b60408401526060840135915080821115612a8257600080fd5b612a8e8583860161291d565b60608401526080840135915080821115612aa757600080fd5b612ab38583860161291d565b608084015260a0840135915080821115612acc57600080fd5b50612ad98482850161291d565b60a08301525092915050565b600060208284031215612af6578081fd5b8135610b2781613868565b600060208284031215612b12578081fd5b8151610b2781613868565b600080600060608486031215612b31578182fd5b8335612b3c81613868565b92506020840135612b4c81613868565b929592945050506040919091013590565b60008060408385031215612b6f578182fd5b8235612b7a81613868565b946020939093013593505050565b600080600060608486031215612b9c578081fd5b8335612ba781613868565b9250602084013591506040840135612bbe81613868565b809150509250925092565b600080600060608486031215612bdd578081fd5b8335612be881613868565b95602085013595506040909401359392505050565b60008060208385031215612c0f578182fd5b823567ffffffffffffffff80821115612c26578384fd5b818501915085601f830112612c39578384fd5b813581811115612c47578485fd5b8660208083028501011115612c5a578485fd5b60209290920196919550909350505050565b600060208284031215612c7d578081fd5b610b27826129d1565b600060208284031215612c97578081fd5b5051919050565b600060208284031215612caf578081fd5b813567ffffffffffffffff811115612cc5578182fd5b6112c5848285016129e1565b60008060408385031215612ce3578182fd5b823567ffffffffffffffff811115612cf9578283fd5b612d05858286016129e1565b95602094909401359450505050565b600080600060608486031215612d28578081fd5b835167ffffffffffffffff80821115612d3f578283fd5b9085019060c08288031215612d52578283fd5b612d5c60c0613751565b825182811115612d6a578485fd5b612d76898286016128ba565b825250602083015182811115612d8a578485fd5b612d96898286016128ba565b602083015250604083015182811115612dad578485fd5b612db9898286016128ba565b604083015250606083015182811115612dd0578485fd5b612ddc89828601612977565b606083015250608083015182811115612df3578485fd5b612dff89828601612977565b60808301525060a083015182811115612e16578485fd5b612e2289828601612977565b60a0830152506020870151604090970151909896975095945050505050565b600060208284031215612e52578081fd5b5035919050565b60008060408385031215612e6b578182fd5b82519150612e7b602084016129d1565b90509250929050565b6001600160a01b03169052565b6000815180845260208085019450808401835b83811015612ec95781516001600160a01b031687529582019590820190600101612ea4565b509495945050505050565b6000815180845260208085019450808401835b83811015612ec957815187529582019590820190600101612ee7565b60008151808452612f1b8160208601602086016137f5565b601f01601f19169290920160200192915050565b60018060a01b0380825116835280602083015116602084015250604081015160408301526060810151606083015260808101511515608083015260a0810151151560a083015260c081015160c083015260e0810151151560e08301525050565b6000815160c08452612fa460c0850182612e91565b905060208301518482036020860152612fbd8282612e91565b91505060408301518482036040860152612fd78282612e91565b91505060608301518482036060860152612ff18282612ed4565b9150506080830151848203608086015261300b8282612ed4565b91505060a083015184820360a08601526130258282612ed4565b95945050505050565b600082516130408184602087016137f5565b9190910192915050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b6001600160a01b0398891681529690971660208701526040860194909452606085019290925215156080840152151560a083015260c082015290151560e08201526101000190565b6001600160a01b0385811682526001600160e01b0319851660208301528316604082015260806060820181905260009061315090830184612f03565b9695505050505050565b6001600160a01b03929092168252602082015260400190565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561324d57603f1989840301855281516101008151600b81106131cb57634e487b7160e01b8b52602160045260248bfd5b8552818901516131dd8a870182612e84565b50878201516131ee89870182612e84565b5060608083015161320182880182612e84565b50506080828101519086015260a0808301519086015260c0808301519086015260e09182015191850181905261323981860183612f03565b968901969450505090860190600101613197565b509098975050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561329e5761328a838551612f2f565b928401926101009290920191600101613277565b50909695505050505050565b901515815260200190565b90815260200190565b600060208252610b276020830184612f03565b60208082526036908201527f47616d6d6152656465656d65723a3a6f6e6c79417574686f72697a65643a204f60408201527537363c9030baba37b6b0ba37b91037b91037bbb732b960511b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526036908201527f47616d6d6152656465656d65723a3a70726f636573734f726465723a204f7264604082015275195c881a5cc8185b1c9958591e48199a5b9a5cda195960521b606082015260800190565b6020808252602b908201527f47616d6d614f70657261746f723a3a686172766573743a20455448207472616e60408201526a1cd9995c8819985a5b195960aa1b606082015260800190565b60208082526035908201527f47616d6d6152656465656d65723a3a63616e63656c4f726465723a2053656e6460408201527432b91034b9903737ba1037b93232b91037bbb732b960591b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f47616d6d614f70657261746f723a3a73657441646472657373426f6f6b3a204160408201527f646472657373206d757374206e6f74206265207a65726f000000000000000000606082015260800190565b6020808252604b908201527f47616d6d6152656465656d65723a3a6372656174654f726465723a20416d6f7560408201527f6e74206d7573742062652030207768656e206372656174696e6720736574746c60608201526a32b6b2b73a1037b93232b960a91b608082015260a00190565b60208082526035908201527f47616d6d6152656465656d65723a3a63616e63656c4f726465723a204f7264656040820152741c881a5cc8185b1c9958591e48199a5b9a5cda1959605a1b606082015260800190565b6020808252603a908201527f47616d6d6152656465656d65723a3a70726f636573734f726465723a204f726460408201527f65722073686f756c64206e6f742062652070726f636573736564000000000000606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526032908201527f47616d6d6152656465656d65723a3a6372656174654f726465723a204f746f6b604082015271195b881b9bdd081dda1a5d195b1a5cdd195960721b606082015260800190565b61010081016112c98284612f2f565b60006040825261370d6040830185612f8f565b90508260208301529392505050565b60006060825261372f6060830186612f8f565b60208301949094525060400152919050565b9182521515602082015260400190565b60405181810167ffffffffffffffff8111828210171561377357613773613852565b604052919050565b600067ffffffffffffffff82111561379557613795613852565b5060209081020190565b6000826137ba57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156137d9576137d961383c565b500290565b6000828210156137f0576137f061383c565b500390565b60005b838110156138105781810151838201526020016137f8565b83811115611d0e5750506000910152565b60006000198214156138355761383561383c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611d8257600080fdfea264697066735822122071220139f04ce3f08fe0326331822eba79003353ef1c3dc2df77e0e3ce21a51f64736f6c634300080000330000000000000000000000001e31f2dcbad4dc572004eae6355fb18f9615cbe400000000000000000000000089a26d08c26e00ce935a775ba74a984ad346679b00000000000000000000000066e2f69df68c8f56837142be2e8c290efe76da9f