0x0000000000000000000000000000000000000000000000000000000000000000611c9c61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8062be7f54146100b257806324e7c85b146100ef57806325cadfb3146101415780634e5c7751146101765780635c99dd3b146101895780635d6d9477146101ce578063951ae434146102035780639a90e48314610223578063a5588bc314610243578063c8a8542114610283578063d3b9f69114610296578063e259be05146102a9575b600080fd5b8180156100be57600080fd5b506100d26100cd3660046116b7565b6102e6565b6040516001600160801b0390911681526020015b60405180910390f35b8180156100fb57600080fd5b5061010f61010a3660046116e8565b610399565b604080516001600160801b0390961686526020860194909452928401919091526060830152608082015260a0016100e6565b81801561014d57600080fd5b5061016161015c36600461172e565b610542565b604080519283526020830191909152016100e6565b610161610184366004611796565b61085f565b81801561019557600080fd5b506101a96101a43660046117ce565b610901565b604080516001600160801b0390941684526020840192909252908201526060016100e6565b6101e16101dc366004611802565b610991565b604080516001600160a01b03909316835260029190910b6020830152016100e6565b81801561020f57600080fd5b506101a961021e3660046117ce565b610a05565b81801561022f57600080fd5b5061016161023e36600461181f565b610bd9565b81801561024f57600080fd5b5061026361025e366004611796565b610c76565b6040805194855260208501939093529183015260608201526080016100e6565b6100d26102913660046117ce565b610de0565b6101616102a436600461187a565b610e80565b6102bc6102b73660046118be565b610eb5565b604080516001600160801b03948516815292841660208401529216918101919091526060016100e6565b60006102ff826000015183602001518460400151610eb5565b50909150506001600160801b0381161561039457815160208301516040808501519051631d9de38760e11b81526001600160a01b0390931692633b3bc70e9261034f929091600090600401611909565b60408051808303816000875af115801561036d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610391919061193e565b50505b919050565b6000808080806001600160801b03871615610537576103d26103cd886001600160801b031688670de0b6b3a7640000610f5c565b610ff5565b8854604051631d9de38760e11b81529196506001600160a01b03811691633b3bc70e9161041a91600160a01b8204600290810b92600160b81b9004900b908a90600401611909565b60408051808303816000875af1158015610438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045c919061193e565b90945092508315158061046f5750600083115b156105375787546040516309e3d67b60e31b815260009182916001600160a01b03821691634f1eb3d8916104c9913091600160a01b8204600290810b92600160b81b9004900b906001600160801b03908190600401611962565b60408051808303816000875af11580156104e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050b919061199f565b6001600160801b03918216935016905061052586836119e4565b61052f86836119e4565b909450925050505b939792965093509350565b60008082156106d357866001600160a01b0316639e4e0227303089898960405180604001604052808f6001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cc91906119fd565b6001600160a01b031681526020018f6001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063c91906119fd565b6001600160a01b031690526040516106579190602001611a1a565b6040516020818303038152906040526040518763ffffffff1660e01b815260040161068796959493929190611a83565b60408051808303816000875af11580156106a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c9919061193e565b9092509050610855565b866001600160a01b031663128acb083088888860405180604001604052808e6001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075391906119fd565b6001600160a01b031681526020018e6001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c391906119fd565b6001600160a01b031690526040516107de9190602001611a1a565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161080d959493929190611ad2565b60408051808303816000875af115801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f919061193e565b90925090505b9550959350505050565b600080600084600001516001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa1580156108a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ca9190611b2a565b505050505090506108f5816108e28760200151611062565b6108ef8860400151611062565b8761133d565b90969095509350505050565b600080600080600061091c886001600160801b038030610bd9565b909250905060008061092e8985611baf565b6109388985611baf565b9150915060006109498b8484610de0565b6001600160801b03161115610984576109638a8383610a05565b9198509450925061097484836119e4565b61097e84836119e4565b90965094505b5050505093509350939050565b600080826001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa1580156109d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f69190611b2a565b50939792965091945050505050565b6000806000610a15868686610de0565b925085600001516001600160a01b031663aafe29c0303089602001518a604001518860405180606001604052808e600001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa891906119fd565b6001600160a01b031681526020018e600001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1c91906119fd565b6001600160a01b0390811682523060209283015260408051845183168185015292840151821683820152929092015190911660608201526080016040516020818303038152906040526040518763ffffffff1660e01b8152600401610b8696959493929190611bc2565b6060604051808303816000875af1158015610ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc99190611c0f565b5093979096509294509192505050565b60008085600001516001600160a01b0316634f1eb3d8848860200151896040015189896040518663ffffffff1660e01b8152600401610c1c959493929190611962565b60408051808303816000875af1158015610c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5e919061199f565b6001600160801b039182169891169650945050505050565b60008080806001600160801b03851615610dd757855160208701516040808901519051631d9de38760e11b81526001600160a01b0390931692633b3bc70e92610cc59290918a90600401611909565b60408051808303816000875af1158015610ce3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d07919061193e565b909450925083151580610d1a5750600083115b15610dd75760008087600001516001600160a01b0316634f1eb3d8308a602001518b604001516001600160801b03806040518663ffffffff1660e01b8152600401610d69959493929190611962565b60408051808303816000875af1158015610d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dab919061199f565b6001600160801b039182169350169050610dc586836119e4565b610dcf86836119e4565b909450925050505b92959194509250565b60008084600001516001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e499190611b2a565b50505050509050610e7581610e618760200151611062565b610e6e8860400151611062565b87876113d9565b9150505b9392505050565b60008086610ea157610e928487611baf565b610e9c84876119e4565b61084f565b610eab84876119e4565b61084f8487611baf565b60008060008060008030905062ffffff871662ffffff89168260181b1760181b179150886001600160a01b031663514ea4bf836040518263ffffffff1660e01b8152600401610f0691815260200190565b60a060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f479190611c3d565b939d909c50929a509198505050505050505050565b60008383028160001985870982811083820303915050808411610f7e57600080fd5b80600003610f9157508290049050610e79565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b6000600160801b821061105e5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840160405180910390fd5b5090565b6000600282900b60171d62ffffff818401821816620d89e881111561109a57604051633c10250f60e01b815260040160405180910390fd5b600160801b60018216156110bb57506ffffcb933bd6fad37aa2d162d1a5940015b60028216156110da576ffff97272373d413259a46990580e213a0260801c5b60048216156110f9576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611118576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611137576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611156576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611175576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611194576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156111b4576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156111d4576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156111f4576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611214576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611234576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611254576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611274576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611294576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156112b5576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156112d5576e5d6af8dedb81196699c329225ee6040260801c5b62040000821061131b57620400008216156112fe576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561131b576b048a170391f7dc42444e8fa20260801c5b60008560020b131561132c57600019045b63ffffffff0160201c949350505050565b600080836001600160a01b0316856001600160a01b0316111561135e579293925b846001600160a01b0316866001600160a01b0316116113895761138285858561149d565b91506113d0565b836001600160a01b0316866001600160a01b031610156113c2576113ae86858561149d565b91506113bb85878561150c565b90506113d0565b6113cd85858561150c565b90505b94509492505050565b6000836001600160a01b0316856001600160a01b031611156113f9579293925b846001600160a01b0316866001600160a01b0316116114245761141d858585611557565b9050611494565b836001600160a01b0316866001600160a01b0316101561148657600061144b878686611557565b9050600061145a8789866115ba565b9050806001600160801b0316826001600160801b03161061147b578061147d565b815b92505050611494565b6114918585846115ba565b90505b95945050505050565b6000826001600160a01b0316846001600160a01b031611156114bd579192915b836001600160a01b03166114f6606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b0316610f5c565b8161150357611503611c86565b04949350505050565b6000826001600160a01b0316846001600160a01b0316111561152c579192915b61154f826001600160801b03168585036001600160a01b0316600160601b610f5c565b949350505050565b6000826001600160a01b0316846001600160a01b03161115611577579192915b600061159a856001600160a01b0316856001600160a01b0316600160601b610f5c565b9050610e756115b584838888036001600160a01b0316610f5c565b6115f7565b6000826001600160a01b0316846001600160a01b031611156115da579192915b61154f6115b583600160601b8787036001600160a01b0316610f5c565b806001600160801b038116811461039457600080fd5b6001600160a01b038116811461162257600080fd5b50565b8060020b811461162257600080fd5b60006060828403121561164657600080fd5b604051606081016001600160401b038111828210171561167657634e487b7160e01b600052604160045260246000fd5b60405290508082356116878161160d565b8152602083013561169781611625565b602082015260408301356116aa81611625565b6040919091015292915050565b6000606082840312156116c957600080fd5b610e798383611634565b6001600160801b038116811461162257600080fd5b6000806000606084860312156116fd57600080fd5b83359250602084013561170f816116d3565b929592945050506040919091013590565b801515811461162257600080fd5b600080600080600060a0868803121561174657600080fd5b85356117518161160d565b9450602086013561176181611720565b93506040860135925060608601356117788161160d565b9150608086013561178881611720565b809150509295509295909350565b600080608083850312156117a957600080fd5b6117b38484611634565b915060608301356117c3816116d3565b809150509250929050565b600080600060a084860312156117e357600080fd5b6117ed8585611634565b95606085013595506080909401359392505050565b60006020828403121561181457600080fd5b8135610e798161160d565b60008060008060c0858703121561183557600080fd5b61183f8686611634565b9350606085013561184f816116d3565b9250608085013561185f816116d3565b915060a085013561186f8161160d565b939692955090935050565b600080600080600060a0868803121561189257600080fd5b853561189d81611720565b97602087013597506040870135966060810135965060800135945092505050565b6000806000606084860312156118d357600080fd5b83356118de8161160d565b925060208401356118ee81611625565b915060408401356118fe81611625565b809150509250925092565b600293840b81529190920b60208201526001600160801b03909116604082015260806060820181905260009082015260a00190565b6000806040838503121561195157600080fd5b505080516020909101519092909150565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b600080604083850312156119b257600080fd5b82516119bd816116d3565b60208401519092506117c3816116d3565b634e487b7160e01b600052601160045260246000fd5b818103818111156119f7576119f76119ce565b92915050565b600060208284031215611a0f57600080fd5b8151610e798161160d565b81516001600160a01b039081168252602092830151169181019190915260400190565b6000815180845260005b81811015611a6357602081850181015186830182015201611a47565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03878116825286811660208301528515156040830152606082018590528316608082015260c060a08201819052600090611ac690830184611a3d565b98975050505050505050565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a060808201819052600090611b0d90830184611a3d565b979650505050505050565b805161ffff8116811461039457600080fd5b60008060008060008060c08789031215611b4357600080fd5b8651611b4e8161160d565b6020880151909650611b5f81611625565b9450611b6d60408801611b18565b9350606087015160ff81168114611b8357600080fd5b9250611b9160808801611b18565b915060a0870151611ba181611720565b809150509295509295509295565b808201808211156119f7576119f76119ce565b6001600160a01b03878116825286166020820152600285810b604083015284900b60608201526001600160801b038316608082015260c060a08201819052600090611ac690830184611a3d565b600080600060608486031215611c2457600080fd5b835192506020840151915060408401516118fe816116d3565b600080600080600060a08688031215611c5557600080fd5b8551945060208601519350604086015192506060860151611c75816116d3565b6080870151909250611788816116d3565b634e487b7160e01b600052601260045260246000fd