608060405273f8162a4258f2e4094dcd08bb777650f903a41143600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060800160405280605081526020016200416c60509139600a90805190602001906200008a929190620002a6565b506040518060800160405280605081526020016200416c60509139600b9080519060200190620000bc929190620002a6565b506108ae600c55660aa87bee538000600d556000600e60006101000a81548160ff021916908315150217905550348015620000f657600080fd5b506040518060400160405280601881526020017f47656e65736973205265616c20457374617465204c616e6400000000000000008152506040518060400160405280600481526020017f4c414e440000000000000000000000000000000000000000000000000000000081525081600290805190602001906200017b929190620002a6565b50806003908051906020019062000194929190620002a6565b50620001a5620001d360201b60201c565b6000819055505050620001cd620001c1620001d860201b60201c565b620001e060201b60201c565b620003bb565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002b49062000356565b90600052602060002090601f016020900481019282620002d8576000855562000324565b82601f10620002f357805160ff191683800117855562000324565b8280016001018555821562000324579182015b828111156200032357825182559160200191906001019062000306565b5b50905062000333919062000337565b5090565b5b808211156200035257600081600090555060010162000338565b5090565b600060028204905060018216806200036f57607f821691505b602082108114156200038657620003856200038c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613da180620003cb6000396000f3fe6080604052600436106102045760003560e01c806379502c5511610118578063b88d4fde116100a0578063e8a3d4851161006f578063e8a3d48514610710578063e985e9c51461073b578063ec9496ba14610778578063f2fde38b146107a1578063f43a22dc146107ca57610204565b8063b88d4fde14610654578063c66828621461067d578063c87b56dd146106a8578063cd7c0326146106e557610204565b8063938e3d7b116100e7578063938e3d7b1461059057806395d89b41146105b9578063a035b1fe146105e4578063a0712d681461060f578063a22cb4651461062b57610204565b806379502c55146104fa5780638069876d146105115780638da5cb5b1461053c57806391b7f5ed1461056757610204565b80633ccfd60b1161019b5780635c975abb1161016a5780635c975abb146104135780636352211e1461043e5780636c0360eb1461047b57806370a08231146104a6578063715018a6146104e357610204565b80633ccfd60b1461037f57806342842e0e14610396578063463fff79146103bf57806355f804b3146103ea57610204565b8063095ea7b3116101d7578063095ea7b3146102d757806318160ddd1461030057806323b872dd1461032b57806332cb6b0c1461035457610204565b806301ffc9a71461020957806302329a291461024657806306fdde031461026f578063081812fc1461029a575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b919061314d565b6107f5565b60405161023d91906135dd565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190613120565b6108d7565b005b34801561027b57600080fd5b506102846109cf565b60405161029191906135f8565b60405180910390f35b3480156102a657600080fd5b506102c160048036038101906102bc919061321d565b610a61565b6040516102ce9190613576565b60405180910390f35b3480156102e357600080fd5b506102fe60048036038101906102f991906130e0565b610add565b005b34801561030c57600080fd5b50610315610be8565b604051610322919061377a565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612fca565b610bff565b005b34801561036057600080fd5b50610369610c0f565b604051610376919061377a565b60405180910390f35b34801561038b57600080fd5b50610394610c15565b005b3480156103a257600080fd5b506103bd60048036038101906103b89190612fca565b610dac565b005b3480156103cb57600080fd5b506103d4610dcc565b6040516103e1919061377a565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c91906131d4565b610dd1565b005b34801561041f57600080fd5b50610428610ec6565b60405161043591906135dd565b60405180910390f35b34801561044a57600080fd5b506104656004803603810190610460919061321d565b610ed9565b6040516104729190613576565b60405180910390f35b34801561048757600080fd5b50610490610eef565b60405161049d91906135f8565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c89190612f5d565b610f7d565b6040516104da919061377a565b60405180910390f35b3480156104ef57600080fd5b506104f861104d565b005b34801561050657600080fd5b5061050f6110d5565b005b34801561051d57600080fd5b506105266111c4565b604051610533919061377a565b60405180910390f35b34801561054857600080fd5b506105516111ca565b60405161055e9190613576565b60405180910390f35b34801561057357600080fd5b5061058e6004803603810190610589919061321d565b6111f4565b005b34801561059c57600080fd5b506105b760048036038101906105b291906131d4565b6112d9565b005b3480156105c557600080fd5b506105ce6113ce565b6040516105db91906135f8565b60405180910390f35b3480156105f057600080fd5b506105f9611460565b604051610606919061377a565b60405180910390f35b6106296004803603810190610624919061321d565b611466565b005b34801561063757600080fd5b50610652600480360381019061064d91906130a0565b611709565b005b34801561066057600080fd5b5061067b6004803603810190610676919061301d565b611881565b005b34801561068957600080fd5b506106926118fd565b60405161069f91906135f8565b60405180910390f35b3480156106b457600080fd5b506106cf60048036038101906106ca919061321d565b611910565b6040516106dc91906135f8565b60405180910390f35b3480156106f157600080fd5b506106fa6119bf565b6040516107079190613576565b60405180910390f35b34801561071c57600080fd5b506107256119d7565b60405161073291906135f8565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190612f8a565b611a65565b60405161076f91906135dd565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a919061321d565b611b59565b005b3480156107ad57600080fd5b506107c860048036038101906107c39190612f5d565b611c3e565b005b3480156107d657600080fd5b506107df611d36565b6040516107ec919061377a565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108d057506108cf82611d3b565b5b9050919050565b6108df611da5565b73ffffffffffffffffffffffffffffffffffffffff166108fd6111ca565b73ffffffffffffffffffffffffffffffffffffffff1614806109735750610922611da5565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a9906136fa565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6060600280546109de906139f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0a906139f7565b8015610a575780601f10610a2c57610100808354040283529160200191610a57565b820191906000526020600020905b815481529060010190602001808311610a3a57829003601f168201915b5050505050905090565b6000610a6c82611dad565b610aa2576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ae882610ed9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b50576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b6f611da5565b73ffffffffffffffffffffffffffffffffffffffff1614158015610ba15750610b9f81610b9a611da5565b611a65565b155b15610bd8576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610be3838383611dfb565b505050565b6000610bf2611ead565b6001546000540303905090565b610c0a838383611eb2565b505050565b600c5481565b610c1d611da5565b73ffffffffffffffffffffffffffffffffffffffff16610c3b6111ca565b73ffffffffffffffffffffffffffffffffffffffff161480610cb15750610c60611da5565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce7906136fa565b60405180910390fd5b60004790506000610cff611da5565b73ffffffffffffffffffffffffffffffffffffffff1682604051610d2290613561565b60006040518083038185875af1925050503d8060008114610d5f576040519150601f19603f3d011682016040523d82523d6000602084013e610d64565b606091505b5050905080610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f9061373a565b60405180910390fd5b5050565b610dc783838360405180602001604052806000815250611881565b505050565b600181565b610dd9611da5565b73ffffffffffffffffffffffffffffffffffffffff16610df76111ca565b73ffffffffffffffffffffffffffffffffffffffff161480610e6d5750610e1c611da5565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea3906136fa565b60405180910390fd5b80600a9080519060200190610ec2929190612d19565b5050565b600e60009054906101000a900460ff1681565b6000610ee4826123a3565b600001519050919050565b600a8054610efc906139f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610f28906139f7565b8015610f755780601f10610f4a57610100808354040283529160200191610f75565b820191906000526020600020905b815481529060010190602001808311610f5857829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fe5576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611055611da5565b73ffffffffffffffffffffffffffffffffffffffff166110736111ca565b73ffffffffffffffffffffffffffffffffffffffff16146110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c0906136fa565b60405180910390fd5b6110d36000612632565b565b6110dd611da5565b73ffffffffffffffffffffffffffffffffffffffff166110fb6111ca565b73ffffffffffffffffffffffffffffffffffffffff1614806111715750611120611da5565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a7906136fa565b60405180910390fd5b6111c26111bb611da5565b60016126f8565b565b6101f481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111fc611da5565b73ffffffffffffffffffffffffffffffffffffffff1661121a6111ca565b73ffffffffffffffffffffffffffffffffffffffff161480611290575061123f611da5565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c6906136fa565b60405180910390fd5b80600d8190555050565b6112e1611da5565b73ffffffffffffffffffffffffffffffffffffffff166112ff6111ca565b73ffffffffffffffffffffffffffffffffffffffff1614806113755750611324611da5565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab906136fa565b60405180910390fd5b80600b90805190602001906113ca929190612d19565b5050565b6060600380546113dd906139f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611409906139f7565b80156114565780601f1061142b57610100808354040283529160200191611456565b820191906000526020600020905b81548152906001019060200180831161143957829003601f168201915b5050505050905090565b600d5481565b6000611470611da5565b9050600e60009054906101000a900460ff16156114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b99061361a565b60405180910390fd5b816114cb610be8565b6114d5919061387f565b600c541015611519576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611510906136ba565b60405180910390fd5b6000821161155c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115539061365a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146115ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c19061375a565b60405180910390fd5b816014101561160e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116059061367a565b60405180910390fd5b611616610be8565b6101f410611667578160011015611662576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116599061369a565b60405180910390fd5b6116fb565b81601410156116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a29061367a565b60405180910390fd5b34600d54836116ba91906138d5565b146116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f19061371a565b60405180910390fd5b5b61170581836126f8565b5050565b611711611da5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611776576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611783611da5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611830611da5565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161187591906135dd565b60405180910390a35050565b61188c848484611eb2565b6118ab8373ffffffffffffffffffffffffffffffffffffffff16612716565b80156118c057506118be84848484612739565b155b156118f7576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6040518060200160405280600081525081565b606061191b82611dad565b61195a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611951906136da565b60405180910390fd5b6000600a8054611969906139f7565b90501161198557604051806020016040528060008152506119b8565b600a604051806020016040528060008152506040516020016119a892919061353d565b6040516020818303038152906040525b9050919050565b7302bf710115f90e68c5bfb4d87f728a814193a2ab81565b600b80546119e4906139f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611a10906139f7565b8015611a5d5780601f10611a3257610100808354040283529160200191611a5d565b820191906000526020600020905b815481529060010190602001808311611a4057829003601f168201915b505050505081565b6000807302bf710115f90e68c5bfb4d87f728a814193a2ab90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b8152600401611acf9190613576565b60206040518083038186803b158015611ae757600080fd5b505afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f91906131a7565b73ffffffffffffffffffffffffffffffffffffffff161415611b45576001915050611b53565b611b4f8484612899565b9150505b92915050565b611b61611da5565b73ffffffffffffffffffffffffffffffffffffffff16611b7f6111ca565b73ffffffffffffffffffffffffffffffffffffffff161480611bf55750611ba4611da5565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b906136fa565b60405180910390fd5b80600c8190555050565b611c46611da5565b73ffffffffffffffffffffffffffffffffffffffff16611c646111ca565b73ffffffffffffffffffffffffffffffffffffffff1614611cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb1906136fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d219061363a565b60405180910390fd5b611d3381612632565b50565b601481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600081611db8611ead565b11158015611dc7575060005482105b8015611df4575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6000611ebd826123a3565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611ee4611da5565b73ffffffffffffffffffffffffffffffffffffffff161480611f175750611f168260000151611f11611da5565b611a65565b5b80611f5c5750611f25611da5565b73ffffffffffffffffffffffffffffffffffffffff16611f4484610a61565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611f95576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611ffe576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612065576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612072858585600161292d565b6120826000848460000151611dfb565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612333576000548110156123325782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461239c8585856001612933565b5050505050565b6123ab612d9f565b6000829050806123b9611ead565b111580156123c8575060005481105b156125fb576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516125f957600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124dd57809250505061262d565b5b6001156125f857818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146125f357809250505061262d565b6124de565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612712828260405180602001604052806000815250612939565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261275f611da5565b8786866040518563ffffffff1660e01b81526004016127819493929190613591565b602060405180830381600087803b15801561279b57600080fd5b505af19250505080156127cc57506040513d601f19601f820116820180604052508101906127c9919061317a565b60015b612846573d80600081146127fc576040519150601f19603f3d011682016040523d82523d6000602084013e612801565b606091505b5060008151141561283e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b50505050565b50505050565b612946838383600161294b565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156129b8576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156129f3576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a00600086838761292d565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612bca5750612bc98773ffffffffffffffffffffffffffffffffffffffff16612716565b5b15612c90575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c3f6000888480600101955088612739565b612c75576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415612bd0578260005414612c8b57600080fd5b612cfc565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415612c91575b816000819055505050612d126000868387612933565b5050505050565b828054612d25906139f7565b90600052602060002090601f016020900481019282612d475760008555612d8e565b82601f10612d6057805160ff1916838001178555612d8e565b82800160010185558215612d8e579182015b82811115612d8d578251825591602001919060010190612d72565b5b509050612d9b9190612de2565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115612dfb576000816000905550600101612de3565b5090565b6000612e12612e0d846137ba565b613795565b905082815260208101848484011115612e2e57612e2d613aec565b5b612e398482856139b5565b509392505050565b6000612e54612e4f846137eb565b613795565b905082815260208101848484011115612e7057612e6f613aec565b5b612e7b8482856139b5565b509392505050565b600081359050612e9281613cf8565b92915050565b600081359050612ea781613d0f565b92915050565b600081359050612ebc81613d26565b92915050565b600081519050612ed181613d26565b92915050565b600082601f830112612eec57612eeb613ae7565b5b8135612efc848260208601612dff565b91505092915050565b600081519050612f1481613d3d565b92915050565b600082601f830112612f2f57612f2e613ae7565b5b8135612f3f848260208601612e41565b91505092915050565b600081359050612f5781613d54565b92915050565b600060208284031215612f7357612f72613af6565b5b6000612f8184828501612e83565b91505092915050565b60008060408385031215612fa157612fa0613af6565b5b6000612faf85828601612e83565b9250506020612fc085828601612e83565b9150509250929050565b600080600060608486031215612fe357612fe2613af6565b5b6000612ff186828701612e83565b935050602061300286828701612e83565b925050604061301386828701612f48565b9150509250925092565b6000806000806080858703121561303757613036613af6565b5b600061304587828801612e83565b945050602061305687828801612e83565b935050604061306787828801612f48565b925050606085013567ffffffffffffffff81111561308857613087613af1565b5b61309487828801612ed7565b91505092959194509250565b600080604083850312156130b7576130b6613af6565b5b60006130c585828601612e83565b92505060206130d685828601612e98565b9150509250929050565b600080604083850312156130f7576130f6613af6565b5b600061310585828601612e83565b925050602061311685828601612f48565b9150509250929050565b60006020828403121561313657613135613af6565b5b600061314484828501612e98565b91505092915050565b60006020828403121561316357613162613af6565b5b600061317184828501612ead565b91505092915050565b6000602082840312156131905761318f613af6565b5b600061319e84828501612ec2565b91505092915050565b6000602082840312156131bd576131bc613af6565b5b60006131cb84828501612f05565b91505092915050565b6000602082840312156131ea576131e9613af6565b5b600082013567ffffffffffffffff81111561320857613207613af1565b5b61321484828501612f1a565b91505092915050565b60006020828403121561323357613232613af6565b5b600061324184828501612f48565b91505092915050565b6132538161392f565b82525050565b61326281613941565b82525050565b600061327382613831565b61327d8185613847565b935061328d8185602086016139c4565b61329681613afb565b840191505092915050565b60006132ac8261383c565b6132b68185613863565b93506132c68185602086016139c4565b6132cf81613afb565b840191505092915050565b60006132e58261383c565b6132ef8185613874565b93506132ff8185602086016139c4565b80840191505092915050565b60008154613318816139f7565b6133228186613874565b9450600182166000811461333d576001811461334e57613381565b60ff19831686528186019350613381565b6133578561381c565b60005b838110156133795781548189015260018201915060208101905061335a565b838801955050505b50505092915050565b6000613397600683613863565b91506133a282613b0c565b602082019050919050565b60006133ba602683613863565b91506133c582613b35565b604082019050919050565b60006133dd600a83613863565b91506133e882613b84565b602082019050919050565b6000613400601683613863565b915061340b82613bad565b602082019050919050565b6000613423601683613863565b915061342e82613bd6565b602082019050919050565b6000613446601283613863565b915061345182613bff565b602082019050919050565b6000613469601583613863565b915061347482613c28565b602082019050919050565b600061348c602083613863565b915061349782613c51565b602082019050919050565b60006134af601683613863565b91506134ba82613c7a565b602082019050919050565b60006134d2600083613858565b91506134dd82613ca3565b600082019050919050565b60006134f5600e83613863565b915061350082613ca6565b602082019050919050565b6000613518600c83613863565b915061352382613ccf565b602082019050919050565b613537816139ab565b82525050565b6000613549828561330b565b915061355582846132da565b91508190509392505050565b600061356c826134c5565b9150819050919050565b600060208201905061358b600083018461324a565b92915050565b60006080820190506135a6600083018761324a565b6135b3602083018661324a565b6135c0604083018561352e565b81810360608301526135d28184613268565b905095945050505050565b60006020820190506135f26000830184613259565b92915050565b6000602082019050818103600083015261361281846132a1565b905092915050565b600060208201905081810360008301526136338161338a565b9050919050565b60006020820190508181036000830152613653816133ad565b9050919050565b60006020820190508181036000830152613673816133d0565b9050919050565b60006020820190508181036000830152613693816133f3565b9050919050565b600060208201905081810360008301526136b381613416565b9050919050565b600060208201905081810360008301526136d381613439565b9050919050565b600060208201905081810360008301526136f38161345c565b9050919050565b600060208201905081810360008301526137138161347f565b9050919050565b60006020820190508181036000830152613733816134a2565b9050919050565b60006020820190508181036000830152613753816134e8565b9050919050565b600060208201905081810360008301526137738161350b565b9050919050565b600060208201905061378f600083018461352e565b92915050565b600061379f6137b0565b90506137ab8282613a29565b919050565b6000604051905090565b600067ffffffffffffffff8211156137d5576137d4613ab8565b5b6137de82613afb565b9050602081019050919050565b600067ffffffffffffffff82111561380657613805613ab8565b5b61380f82613afb565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061388a826139ab565b9150613895836139ab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138ca576138c9613a5a565b5b828201905092915050565b60006138e0826139ab565b91506138eb836139ab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561392457613923613a5a565b5b828202905092915050565b600061393a8261398b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006139848261392f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156139e25780820151818401526020810190506139c7565b838111156139f1576000848401525b50505050565b60006002820490506001821680613a0f57607f821691505b60208210811415613a2357613a22613a89565b5b50919050565b613a3282613afb565b810181811067ffffffffffffffff82111715613a5157613a50613ab8565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b7f457863657373206d617820706572207061696420747800000000000000000000600082015250565b7f457863657373206d617820706572206672656520747800000000000000000000600082015250565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b7f546f6b656e20646f6573206e6f742065786973742e0000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b50565b7f4661696c656420746f2073656e64000000000000000000000000000000000000600082015250565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b613d018161392f565b8114613d0c57600080fd5b50565b613d1881613941565b8114613d2357600080fd5b50565b613d2f8161394d565b8114613d3a57600080fd5b50565b613d4681613979565b8114613d5157600080fd5b50565b613d5d816139ab565b8114613d6857600080fd5b5056fea26469706673582212205add7254388e02d57e1bb30892163977e4d02a670d419e1ee704d1f6024bf90164736f6c6343000807003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d63314d71596f756f5a6a367a6434595363466f4d55727831535141474835424b73374b336e33635159696d32