6080604052636116cf40600e553480156200001957600080fd5b506040518060400160405280601281526020017f4e6f6e2046756e6769626c65204672656e7300000000000000000000000000008152506040518060400160405280600381526020017f465245000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200009e929190620001ae565b508060019080519060200190620000b7929190620001ae565b505050620000da620000ce620000e060201b60201c565b620000e860201b60201c565b620002c3565b600033905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001bc906200025e565b90600052602060002090601f016020900481019282620001e057600085556200022c565b82601f10620001fb57805160ff19168380011785556200022c565b828001600101855582156200022c579182015b828111156200022b5782518255916020019190600101906200020e565b5b5090506200023b91906200023f565b5090565b5b808211156200025a57600081600090555060010162000240565b5090565b600060028204905060018216806200027757607f821691505b602082108114156200028e576200028d62000294565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6144a680620002d36000396000f3fe6080604052600436106101b75760003560e01c806370a08231116100ec578063ac8daba01161008a578063d5abeb0111610064578063d5abeb01146105fb578063e985e9c514610626578063eb91d37e14610663578063f2fde38b1461068e576101b7565b8063ac8daba01461056a578063b88d4fde14610595578063c87b56dd146105be576101b7565b80638ce667bc116100c65780638ce667bc146104c25780638da5cb5b146104eb57806395d89b4114610516578063a22cb46514610541576101b7565b806370a0823114610445578063715018a61461048257806382d95df514610499576101b7565b8063339181d9116101595780634f6ccce7116101335780634f6ccce71461038657806355f804b3146103c35780636352211e146103ec5780636ecd230614610429576101b7565b8063339181d91461031b5780633ccfd60b1461034657806342842e0e1461035d576101b7565b8063095ea7b311610195578063095ea7b31461026157806318160ddd1461028a57806323b872dd146102b55780632f745c59146102de576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612ea3565b6106b7565b6040516101f091906134d6565b60405180910390f35b34801561020557600080fd5b5061020e6106c9565b60405161021b91906134f1565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612f36565b61075b565b604051610258919061346f565b60405180910390f35b34801561026d57600080fd5b5061028860048036038101906102839190612e67565b6107e0565b005b34801561029657600080fd5b5061029f6108f8565b6040516102ac919061386e565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d79190612d61565b610905565b005b3480156102ea57600080fd5b5061030560048036038101906103009190612e67565b610965565b604051610312919061386e565b60405180910390f35b34801561032757600080fd5b50610330610a0a565b60405161033d91906138a4565b60405180910390f35b34801561035257600080fd5b5061035b610a13565b005b34801561036957600080fd5b50610384600480360381019061037f9190612d61565b610b88565b005b34801561039257600080fd5b506103ad60048036038101906103a89190612f36565b610ba8565b6040516103ba919061386e565b60405180910390f35b3480156103cf57600080fd5b506103ea60048036038101906103e59190612ef5565b610c3f565b005b3480156103f857600080fd5b50610413600480360381019061040e9190612f36565b610cd5565b604051610420919061346f565b60405180910390f35b610443600480360381019061043e9190612f5f565b610d87565b005b34801561045157600080fd5b5061046c60048036038101906104679190612cfc565b610f6d565b604051610479919061386e565b60405180910390f35b34801561048e57600080fd5b50610497611025565b005b3480156104a557600080fd5b506104c060048036038101906104bb9190612f36565b6110ad565b005b3480156104ce57600080fd5b506104e960048036038101906104e49190612f5f565b611133565b005b3480156104f757600080fd5b506105006112ef565b60405161050d919061346f565b60405180910390f35b34801561052257600080fd5b5061052b611319565b60405161053891906134f1565b60405180910390f35b34801561054d57600080fd5b5061056860048036038101906105639190612e2b565b6113ab565b005b34801561057657600080fd5b5061057f61152c565b60405161058c919061386e565b60405180910390f35b3480156105a157600080fd5b506105bc60048036038101906105b79190612db0565b611532565b005b3480156105ca57600080fd5b506105e560048036038101906105e09190612f36565b611594565b6040516105f291906134f1565b60405180910390f35b34801561060757600080fd5b506106106115a6565b60405161061d9190613853565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190612d25565b6115ac565b60405161065a91906134d6565b60405180910390f35b34801561066f57600080fd5b50610678611640565b6040516106859190613889565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190612cfc565b61164f565b005b60006106c282611747565b9050919050565b6060600080546106d890613b76565b80601f016020809104026020016040519081016040528092919081815260200182805461070490613b76565b80156107515780601f1061072657610100808354040283529160200191610751565b820191906000526020600020905b81548152906001019060200180831161073457829003601f168201915b5050505050905090565b6000610766826117c1565b6107a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079c906136f3565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107eb82610cd5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561085c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085390613793565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661087b61182d565b73ffffffffffffffffffffffffffffffffffffffff1614806108aa57506108a9816108a461182d565b6115ac565b5b6108e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e090613653565b60405180910390fd5b6108f38383611835565b505050565b6000600880549050905090565b61091661091061182d565b826118ee565b610955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094c90613813565b60405180910390fd5b6109608383836119cc565b505050565b600061097083610f6d565b82106109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890613513565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6000600a905090565b610a1b61182d565b73ffffffffffffffffffffffffffffffffffffffff16610a396112ef565b73ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690613713565b60405180910390fd5b60004711610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac9906135b3565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610af89061345a565b60006040518083038185875af1925050503d8060008114610b35576040519150601f19603f3d011682016040523d82523d6000602084013e610b3a565b606091505b505090506001151581151514610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90613773565b60405180910390fd5b50565b610ba383838360405180602001604052806000815250611532565b505050565b6000610bb26108f8565b8210610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea90613833565b60405180910390fd5b60088281548110610c2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610c4761182d565b73ffffffffffffffffffffffffffffffffffffffff16610c656112ef565b73ffffffffffffffffffffffffffffffffffffffff1614610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290613713565b60405180910390fd5b80600d9080519060200190610cd1929190612b0b565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590613693565b60405180910390fd5b80915050919050565b42600e541115610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc3906137f3565b60405180910390fd5b60018160ff161015610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a906137d3565b60405180910390fd5b610e1b610a0a565b60ff168160ff161115610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a906135d3565b60405180910390fd5b6103e961ffff16610e726108f8565b8260ff16610e809190613994565b1115610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb8906137b3565b60405180910390fd5b8060ff16610ecd611640565b610ed79190613a1b565b67ffffffffffffffff163414610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1990613533565b60405180910390fd5b60005b8160ff168160ff161015610f6957610f3d600c611c28565b6000610f49600c611c3e565b9050610f553382611c4c565b508080610f6190613c22565b915050610f25565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590613673565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61102d61182d565b73ffffffffffffffffffffffffffffffffffffffff1661104b6112ef565b73ffffffffffffffffffffffffffffffffffffffff16146110a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109890613713565b60405180910390fd5b6110ab6000611e1a565b565b6110b561182d565b73ffffffffffffffffffffffffffffffffffffffff166110d36112ef565b73ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112090613713565b60405180910390fd5b80600e8190555050565b61113b61182d565b73ffffffffffffffffffffffffffffffffffffffff166111596112ef565b73ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690613713565b60405180910390fd5b60018160ff1610156111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed906137d3565b60405180910390fd5b6111fe610a0a565b60ff168160ff161115611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d906135d3565b60405180910390fd5b6103e961ffff166112556108f8565b8260ff166112639190613994565b11156112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b906137b3565b60405180910390fd5b60005b8160ff168160ff1610156112eb576112bf600c611c28565b60006112cb600c611c3e565b90506112d73382611c4c565b5080806112e390613c22565b9150506112a7565b5050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461132890613b76565b80601f016020809104026020016040519081016040528092919081815260200182805461135490613b76565b80156113a15780601f10611376576101008083540402835291602001916113a1565b820191906000526020600020905b81548152906001019060200180831161138457829003601f168201915b5050505050905090565b6113b361182d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890613613565b60405180910390fd5b806005600061142e61182d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114db61182d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161152091906134d6565b60405180910390a35050565b600e5481565b61154361153d61182d565b836118ee565b611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157990613813565b60405180910390fd5b61158e84848484611ee0565b50505050565b606061159f82611f3c565b9050919050565b6103e981565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600066f5232269808000905090565b61165761182d565b73ffffffffffffffffffffffffffffffffffffffff166116756112ef565b73ffffffffffffffffffffffffffffffffffffffff16146116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c290613713565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561173b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173290613573565b60405180910390fd5b61174481611e1a565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117ba57506117b98261208e565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166118a883610cd5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006118f9826117c1565b611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f90613633565b60405180910390fd5b600061194383610cd5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806119b257508373ffffffffffffffffffffffffffffffffffffffff1661199a8461075b565b73ffffffffffffffffffffffffffffffffffffffff16145b806119c357506119c281856115ac565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166119ec82610cd5565b73ffffffffffffffffffffffffffffffffffffffff1614611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990613733565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa9906135f3565b60405180910390fd5b611abd838383612170565b611ac8600082611835565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b189190613a5d565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b6f9190613994565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb3906136b3565b60405180910390fd5b611cc5816117c1565b15611d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfc90613593565b60405180910390fd5b611d1160008383612170565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d619190613994565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611eeb8484846119cc565b611ef784848484612180565b611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d90613553565b60405180910390fd5b50505050565b6060611f47826117c1565b611f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7d906136d3565b60405180910390fd5b6000600a60008481526020019081526020016000208054611fa690613b76565b80601f0160208091040260200160405190810160405280929190818152602001828054611fd290613b76565b801561201f5780601f10611ff45761010080835404028352916020019161201f565b820191906000526020600020905b81548152906001019060200180831161200257829003601f168201915b505050505090506000612030612317565b9050600081511415612046578192505050612089565b60008251111561207b578082604051602001612063929190613436565b60405160208183030381529060405292505050612089565b612084846123a9565b925050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061215957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612169575061216882612450565b5b9050919050565b61217b8383836124ba565b505050565b60006121a18473ffffffffffffffffffffffffffffffffffffffff166125ce565b1561230a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121ca61182d565b8786866040518563ffffffff1660e01b81526004016121ec949392919061348a565b602060405180830381600087803b15801561220657600080fd5b505af192505050801561223757506040513d601f19601f820116820180604052508101906122349190612ecc565b60015b6122ba573d8060008114612267576040519150601f19603f3d011682016040523d82523d6000602084013e61226c565b606091505b506000815114156122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990613553565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061230f565b600190505b949350505050565b6060600d805461232690613b76565b80601f016020809104026020016040519081016040528092919081815260200182805461235290613b76565b801561239f5780601f106123745761010080835404028352916020019161239f565b820191906000526020600020905b81548152906001019060200180831161238257829003601f168201915b5050505050905090565b60606123b4826117c1565b6123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90613753565b60405180910390fd5b60006123fd612317565b9050600081511161241d5760405180602001604052806000815250612448565b80612427846125e1565b604051602001612438929190613436565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6124c583838361278e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125085761250381612793565b612547565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125465761254583826127dc565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561258a5761258581612949565b6125c9565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125c8576125c78282612a8c565b5b5b505050565b600080823b905060008111915050919050565b60606000821415612629576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612789565b600082905060005b6000821461265b57808061264490613bd9565b915050600a8261265491906139ea565b9150612631565b60008167ffffffffffffffff81111561269d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156126cf5781602001600182028036833780820191505090505b5090505b60008514612782576001826126e89190613a5d565b9150600a856126f79190613c4c565b60306127039190613994565b60f81b81838151811061273f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561277b91906139ea565b94506126d3565b8093505050505b919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016127e984610f6d565b6127f39190613a5d565b90506000600760008481526020019081526020016000205490508181146128d8576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061295d9190613a5d565b90506000600960008481526020019081526020016000205490506000600883815481106129b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080600883815481106129fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612a70577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000612a9783610f6d565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b828054612b1790613b76565b90600052602060002090601f016020900481019282612b395760008555612b80565b82601f10612b5257805160ff1916838001178555612b80565b82800160010185558215612b80579182015b82811115612b7f578251825591602001919060010190612b64565b5b509050612b8d9190612b91565b5090565b5b80821115612baa576000816000905550600101612b92565b5090565b6000612bc1612bbc846138e4565b6138bf565b905082815260208101848484011115612bd957600080fd5b612be4848285613b34565b509392505050565b6000612bff612bfa84613915565b6138bf565b905082815260208101848484011115612c1757600080fd5b612c22848285613b34565b509392505050565b600081359050612c39816143fd565b92915050565b600081359050612c4e81614414565b92915050565b600081359050612c638161442b565b92915050565b600081519050612c788161442b565b92915050565b600082601f830112612c8f57600080fd5b8135612c9f848260208601612bae565b91505092915050565b600082601f830112612cb957600080fd5b8135612cc9848260208601612bec565b91505092915050565b600081359050612ce181614442565b92915050565b600081359050612cf681614459565b92915050565b600060208284031215612d0e57600080fd5b6000612d1c84828501612c2a565b91505092915050565b60008060408385031215612d3857600080fd5b6000612d4685828601612c2a565b9250506020612d5785828601612c2a565b9150509250929050565b600080600060608486031215612d7657600080fd5b6000612d8486828701612c2a565b9350506020612d9586828701612c2a565b9250506040612da686828701612cd2565b9150509250925092565b60008060008060808587031215612dc657600080fd5b6000612dd487828801612c2a565b9450506020612de587828801612c2a565b9350506040612df687828801612cd2565b925050606085013567ffffffffffffffff811115612e1357600080fd5b612e1f87828801612c7e565b91505092959194509250565b60008060408385031215612e3e57600080fd5b6000612e4c85828601612c2a565b9250506020612e5d85828601612c3f565b9150509250929050565b60008060408385031215612e7a57600080fd5b6000612e8885828601612c2a565b9250506020612e9985828601612cd2565b9150509250929050565b600060208284031215612eb557600080fd5b6000612ec384828501612c54565b91505092915050565b600060208284031215612ede57600080fd5b6000612eec84828501612c69565b91505092915050565b600060208284031215612f0757600080fd5b600082013567ffffffffffffffff811115612f2157600080fd5b612f2d84828501612ca8565b91505092915050565b600060208284031215612f4857600080fd5b6000612f5684828501612cd2565b91505092915050565b600060208284031215612f7157600080fd5b6000612f7f84828501612ce7565b91505092915050565b612f9181613a91565b82525050565b612fa081613aa3565b82525050565b6000612fb182613946565b612fbb818561395c565b9350612fcb818560208601613b43565b612fd481613d39565b840191505092915050565b6000612fea82613951565b612ff48185613978565b9350613004818560208601613b43565b61300d81613d39565b840191505092915050565b600061302382613951565b61302d8185613989565b935061303d818560208601613b43565b80840191505092915050565b6000613056602b83613978565b915061306182613d4a565b604082019050919050565b6000613079602c83613978565b915061308482613d99565b604082019050919050565b600061309c603283613978565b91506130a782613de8565b604082019050919050565b60006130bf602683613978565b91506130ca82613e37565b604082019050919050565b60006130e2601c83613978565b91506130ed82613e86565b602082019050919050565b6000613105601883613978565b915061311082613eaf565b602082019050919050565b6000613128603d83613978565b915061313382613ed8565b604082019050919050565b600061314b602483613978565b915061315682613f27565b604082019050919050565b600061316e601983613978565b915061317982613f76565b602082019050919050565b6000613191602c83613978565b915061319c82613f9f565b604082019050919050565b60006131b4603883613978565b91506131bf82613fee565b604082019050919050565b60006131d7602a83613978565b91506131e28261403d565b604082019050919050565b60006131fa602983613978565b91506132058261408c565b604082019050919050565b600061321d602083613978565b9150613228826140db565b602082019050919050565b6000613240603183613978565b915061324b82614104565b604082019050919050565b6000613263602c83613978565b915061326e82614153565b604082019050919050565b6000613286602083613978565b9150613291826141a2565b602082019050919050565b60006132a9602983613978565b91506132b4826141cb565b604082019050919050565b60006132cc602f83613978565b91506132d78261421a565b604082019050919050565b60006132ef601883613978565b91506132fa82614269565b602082019050919050565b6000613312602183613978565b915061331d82614292565b604082019050919050565b6000613335601683613978565b9150613340826142e1565b602082019050919050565b6000613358601483613978565b91506133638261430a565b602082019050919050565b600061337b601083613978565b915061338682614333565b602082019050919050565b600061339e60008361396d565b91506133a98261435c565b600082019050919050565b60006133c1603183613978565b91506133cc8261435f565b604082019050919050565b60006133e4602c83613978565b91506133ef826143ae565b604082019050919050565b61340381613adb565b82525050565b61341281613b09565b82525050565b61342181613b13565b82525050565b61343081613b27565b82525050565b60006134428285613018565b915061344e8284613018565b91508190509392505050565b600061346582613391565b9150819050919050565b60006020820190506134846000830184612f88565b92915050565b600060808201905061349f6000830187612f88565b6134ac6020830186612f88565b6134b96040830185613409565b81810360608301526134cb8184612fa6565b905095945050505050565b60006020820190506134eb6000830184612f97565b92915050565b6000602082019050818103600083015261350b8184612fdf565b905092915050565b6000602082019050818103600083015261352c81613049565b9050919050565b6000602082019050818103600083015261354c8161306c565b9050919050565b6000602082019050818103600083015261356c8161308f565b9050919050565b6000602082019050818103600083015261358c816130b2565b9050919050565b600060208201905081810360008301526135ac816130d5565b9050919050565b600060208201905081810360008301526135cc816130f8565b9050919050565b600060208201905081810360008301526135ec8161311b565b9050919050565b6000602082019050818103600083015261360c8161313e565b9050919050565b6000602082019050818103600083015261362c81613161565b9050919050565b6000602082019050818103600083015261364c81613184565b9050919050565b6000602082019050818103600083015261366c816131a7565b9050919050565b6000602082019050818103600083015261368c816131ca565b9050919050565b600060208201905081810360008301526136ac816131ed565b9050919050565b600060208201905081810360008301526136cc81613210565b9050919050565b600060208201905081810360008301526136ec81613233565b9050919050565b6000602082019050818103600083015261370c81613256565b9050919050565b6000602082019050818103600083015261372c81613279565b9050919050565b6000602082019050818103600083015261374c8161329c565b9050919050565b6000602082019050818103600083015261376c816132bf565b9050919050565b6000602082019050818103600083015261378c816132e2565b9050919050565b600060208201905081810360008301526137ac81613305565b9050919050565b600060208201905081810360008301526137cc81613328565b9050919050565b600060208201905081810360008301526137ec8161334b565b9050919050565b6000602082019050818103600083015261380c8161336e565b9050919050565b6000602082019050818103600083015261382c816133b4565b9050919050565b6000602082019050818103600083015261384c816133d7565b9050919050565b600060208201905061386860008301846133fa565b92915050565b60006020820190506138836000830184613409565b92915050565b600060208201905061389e6000830184613418565b92915050565b60006020820190506138b96000830184613427565b92915050565b60006138c96138da565b90506138d58282613ba8565b919050565b6000604051905090565b600067ffffffffffffffff8211156138ff576138fe613d0a565b5b61390882613d39565b9050602081019050919050565b600067ffffffffffffffff8211156139305761392f613d0a565b5b61393982613d39565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061399f82613b09565b91506139aa83613b09565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139df576139de613c7d565b5b828201905092915050565b60006139f582613b09565b9150613a0083613b09565b925082613a1057613a0f613cac565b5b828204905092915050565b6000613a2682613b13565b9150613a3183613b13565b92508167ffffffffffffffff0483118215151615613a5257613a51613c7d565b5b828202905092915050565b6000613a6882613b09565b9150613a7383613b09565b925082821015613a8657613a85613c7d565b5b828203905092915050565b6000613a9c82613ae9565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613b61578082015181840152602081019050613b46565b83811115613b70576000848401525b50505050565b60006002820490506001821680613b8e57607f821691505b60208210811415613ba257613ba1613cdb565b5b50919050565b613bb182613d39565b810181811067ffffffffffffffff82111715613bd057613bcf613d0a565b5b80604052505050565b6000613be482613b09565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c1757613c16613c7d565b5b600182019050919050565b6000613c2d82613b27565b915060ff821415613c4157613c40613c7d565b5b600182019050919050565b6000613c5782613b09565b9150613c6283613b09565b925082613c7257613c71613cac565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4574686572207375626d697474656420646f6573206e6f74206d61746368206360008201527f757272656e742070726963650000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f42616c616e6365206d75737420626520706f7369746976650000000000000000600082015250565b7f4d6178696d756d2063757272656e7420627579206c696d697420666f7220696e60008201527f646976696475616c207472616e73616374696f6e206578636565646564000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4661696c656420746f2077697468647261772065746865720000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f45786365656473206d6178696d756d20737570706c7900000000000000000000600082015250565b7f4d757374206d696e74206174206c656173742031000000000000000000000000600082015250565b7f53616c65206973206e6f74206f70656e00000000000000000000000000000000600082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b61440681613a91565b811461441157600080fd5b50565b61441d81613aa3565b811461442857600080fd5b50565b61443481613aaf565b811461443f57600080fd5b50565b61444b81613b09565b811461445657600080fd5b50565b61446281613b27565b811461446d57600080fd5b5056fea2646970667358221220f7d97647680b7073151e29f15a4fab59519d8ddda1b338942b17412fe38351f064736f6c63430008030033