60806040523480156200001157600080fd5b50604051620046d7380380620046d78339818101604052810190620000379190620002ee565b6040518060400160405280600881526020017f4d756c74696172740000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d415400000000000000000000000000000000000000000000000000000000008152508160009081620000b49190620005ba565b508060019081620000c69190620005ba565b505050620000e9620000dd6200017b60201b60201c565b6200018360201b60201c565b82600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f81905550505050620006a1565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200027b826200024e565b9050919050565b6200028d816200026e565b81146200029957600080fd5b50565b600081519050620002ad8162000282565b92915050565b6000819050919050565b620002c881620002b3565b8114620002d457600080fd5b50565b600081519050620002e881620002bd565b92915050565b6000806000606084860312156200030a576200030962000249565b5b60006200031a868287016200029c565b93505060206200032d868287016200029c565b92505060406200034086828701620002d7565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003cc57607f821691505b602082108103620003e257620003e162000384565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200044c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200040d565b6200045886836200040d565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200049b620004956200048f84620002b3565b62000470565b620002b3565b9050919050565b6000819050919050565b620004b7836200047a565b620004cf620004c682620004a2565b8484546200041a565b825550505050565b600090565b620004e6620004d7565b620004f3818484620004ac565b505050565b5b818110156200051b576200050f600082620004dc565b600181019050620004f9565b5050565b601f8211156200056a576200053481620003e8565b6200053f84620003fd565b810160208510156200054f578190505b620005676200055e85620003fd565b830182620004f8565b50505b505050565b600082821c905092915050565b60006200058f600019846008026200056f565b1980831691505092915050565b6000620005aa83836200057c565b9150826002028217905092915050565b620005c5826200034a565b67ffffffffffffffff811115620005e157620005e062000355565b5b620005ed8254620003b3565b620005fa8282856200051f565b600060209050601f8311600181146200063257600084156200061d578287015190505b6200062985826200059c565b86555062000699565b601f1984166200064286620003e8565b60005b828110156200066c5784890151825560018201915060208501945060208101905062000645565b868310156200068c578489015162000688601f8916826200057c565b8355505b6001600288020188555050505b505050505050565b61402680620006b16000396000f3fe6080604052600436106101f95760003560e01c80638b7afe2e1161010d578063a784318a116100a0578063c87b56dd1161006f578063c87b56dd14610785578063e3084632146107c2578063e985e9c5146107eb578063f153768614610828578063f2fde38b14610865576101f9565b8063a784318a146106a5578063a8e88a55146106e2578063b88d4fde1461071f578063bacbcd5214610748576101f9565b80638ebb6cc9116100dc5780638ebb6cc9146105fd57806395d89b4114610626578063961211b514610651578063a22cb4651461067c576101f9565b80638b7afe2e1461053f5780638da5cb5b1461056a5780638df9612b146105955780638e4a7714146105d2576101f9565b806342842e0e116101905780636d9439c51161015f5780636d9439c51461044557806370a0823114610483578063715018a6146104c057806384c4bd4b146104d757806385960c2a14610502576101f9565b806342842e0e1461038657806357e52c0b146103af5780635a80a42f146103ec5780636352211e14610408576101f9565b8063095ea7b3116101cc578063095ea7b3146102e057806323b872dd1461030957806329ee566c146103325780634209a2e11461035d576101f9565b806301ffc9a7146101fe57806305d85eda1461023b57806306fdde0314610278578063081812fc146102a3575b600080fd5b34801561020a57600080fd5b506102256004803603810190610220919061287b565b61088e565b60405161023291906128c3565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d919061293c565b610970565b60405161026f9190612982565b60405180910390f35b34801561028457600080fd5b5061028d610988565b60405161029a9190612a2d565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c59190612a7b565b610a1a565b6040516102d79190612ab7565b60405180910390f35b3480156102ec57600080fd5b5061030760048036038101906103029190612ad2565b610a60565b005b34801561031557600080fd5b50610330600480360381019061032b9190612b12565b610b77565b005b34801561033e57600080fd5b50610347610bd7565b6040516103549190612982565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190612a7b565b610bdd565b005b34801561039257600080fd5b506103ad60048036038101906103a89190612b12565b610be7565b005b3480156103bb57600080fd5b506103d660048036038101906103d1919061293c565b610c07565b6040516103e39190612982565b60405180910390f35b61040660048036038101906104019190612c9a565b610c1f565b005b34801561041457600080fd5b5061042f600480360381019061042a9190612a7b565b6110f0565b60405161043c9190612ab7565b60405180910390f35b34801561045157600080fd5b5061046c60048036038101906104679190612a7b565b6111a1565b60405161047a929190612dcd565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a5919061293c565b6111e5565b6040516104b79190612982565b60405180910390f35b3480156104cc57600080fd5b506104d561129c565b005b3480156104e357600080fd5b506104ec6112b0565b6040516104f99190612982565b60405180910390f35b34801561050e57600080fd5b5061052960048036038101906105249190612df6565b6112bc565b6040516105369190612982565b60405180910390f35b34801561054b57600080fd5b506105546112ea565b6040516105619190612982565b60405180910390f35b34801561057657600080fd5b5061057f6112f2565b60405161058c9190612ab7565b60405180910390f35b3480156105a157600080fd5b506105bc60048036038101906105b79190612ad2565b61131c565b6040516105c99190612982565b60405180910390f35b3480156105de57600080fd5b506105e7611341565b6040516105f49190612ab7565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f919061293c565b611367565b005b34801561063257600080fd5b5061063b6113ab565b6040516106489190612a2d565b60405180910390f35b34801561065d57600080fd5b5061066661143d565b6040516106739190612ab7565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e9190612e6b565b611463565b005b3480156106b157600080fd5b506106cc60048036038101906106c79190612df6565b611479565b6040516106d99190612f69565b60405180910390f35b3480156106ee57600080fd5b5061070960048036038101906107049190612f8b565b6114f2565b6040516107169190612982565b60405180910390f35b34801561072b57600080fd5b506107466004803603810190610741919061306c565b611515565b005b34801561075457600080fd5b5061076f600480360381019061076a919061293c565b611577565b60405161077c9190612982565b60405180910390f35b34801561079157600080fd5b506107ac60048036038101906107a79190612a7b565b6115c0565b6040516107b99190612a2d565b60405180910390f35b3480156107ce57600080fd5b506107e960048036038101906107e4919061293c565b6115d2565b005b3480156107f757600080fd5b50610812600480360381019061080d91906130ef565b611616565b60405161081f91906128c3565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a919061293c565b6116aa565b60405161085c9190612f69565b60405180910390f35b34801561087157600080fd5b5061088c6004803603810190610887919061293c565b61181b565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061095957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061096957506109688261189e565b5b9050919050565b600a6020528060005260406000206000915090505481565b6060600080546109979061315e565b80601f01602080910402602001604051908101604052809291908181526020018280546109c39061315e565b8015610a105780601f106109e557610100808354040283529160200191610a10565b820191906000526020600020905b8154815290600101906020018083116109f357829003601f168201915b5050505050905090565b6000610a2582611908565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a6b826110f0565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad290613201565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610afa611953565b73ffffffffffffffffffffffffffffffffffffffff161480610b295750610b2881610b23611953565b611616565b5b610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f90613293565b60405180910390fd5b610b72838361195b565b505050565b610b88610b82611953565b82611a14565b610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe90613325565b60405180910390fd5b610bd2838383611aa9565b505050565b600f5481565b80600f8190555050565b610c0283838360405180602001604052806000815250611515565b505050565b60116020528060005260406000206000915090505481565b4288108015610c2d57508642105b610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6390613391565b60405180910390fd5b8482610c7891906133e0565b3414610cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb09061346e565b60405180910390fd5b6000600c87604051610ccb91906134ca565b9081526020016040518091039020549050848682610ce991906134e1565b1115610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2190613587565b60405180910390fd5b6000610d368c346114f2565b905060008134610d4691906135a7565b90506000600190505b888111610f8357610d606008611d0f565b610d6a6008611d25565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610df791906134e1565b815260200190815260200160002081905550610e1c33610e176008611d25565b611d33565b610e2f610e296008611d25565b8e611d51565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610e7f906135db565b919050555060405180604001604052804281526020018873ffffffffffffffffffffffffffffffffffffffff1681525060106000610ebd6008611d25565b81526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600b85604051610f2f91906134ca565b9081526020016040518091039020600001610f4a6008611d25565b90806001815401808255809150506001900390600052602060002001600090919091909150558080610f7b906135db565b915050610d4f565b5087600c8a604051610f9591906134ca565b90815260200160405180910390206000828254610fb291906134e1565b9250508190555080601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461100891906134e1565b92505081905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611077573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156110e0573d6000803e3d6000fd5b5050505050505050505050505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f9061366f565b60405180910390fd5b80915050919050565b60106020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90613701565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112a4611dbe565b6112ae6000611e3c565b565b60088060000154905081565b600c818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b600047905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6009602052816000526040600020602052806000526040600020600091509150505481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600180546113ba9061315e565b80601f01602080910402602001604051908101604052809291908181526020018280546113e69061315e565b80156114335780601f1061140857610100808354040283529160200191611433565b820191906000526020600020905b81548152906001019060200180831161141657829003601f168201915b5050505050905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61147561146e611953565b8383611f02565b5050565b6060600b8260405161148b91906134ca565b90815260200160405180910390206000018054806020026020016040519081016040528092919081815260200182805480156114e657602002820191906000526020600020905b8154815260200190600101908083116114d2575b50505050509050919050565b60006103e8838361150391906133e0565b61150d9190613750565b905092915050565b611526611520611953565b83611a14565b611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90613325565b60405180910390fd5b6115718484848461206e565b50505050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606115cb826120ca565b9050919050565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205467ffffffffffffffff81111561170757611706612b6f565b5b6040519080825280602002602001820160405280156117355781602001602082028036833780820191505090505b50905060005b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481101561181157600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001836117d091906134e1565b8152602001908152602001600020548282815181106117f2576117f1613781565b5b6020026020010181815250508080611809906135db565b91505061173b565b5080915050919050565b611823611dbe565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188990613822565b60405180910390fd5b61189b81611e3c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611911816121dc565b611950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119479061366f565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166119ce836110f0565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611a20836110f0565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a625750611a618185611616565b5b80611aa057508373ffffffffffffffffffffffffffffffffffffffff16611a8884610a1a565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ac9826110f0565b73ffffffffffffffffffffffffffffffffffffffff1614611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b16906138b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8590613946565b60405180910390fd5b611b99838383612248565b611ba460008261195b565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bf491906135a7565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c4b91906134e1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d0a83838361224d565b505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b611d4d828260405180602001604052806000815250612252565b5050565b611d5a826121dc565b611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d90906139d8565b60405180910390fd5b80600660008481526020019081526020016000209081611db99190613ba4565b505050565b611dc6611953565b73ffffffffffffffffffffffffffffffffffffffff16611de46112f2565b73ffffffffffffffffffffffffffffffffffffffff1614611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190613cc2565b60405180910390fd5b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6790613d2e565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161206191906128c3565b60405180910390a3505050565b612079848484611aa9565b612085848484846122ad565b6120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90613dc0565b60405180910390fd5b50505050565b60606120d582611908565b60006006600084815260200190815260200160002080546120f59061315e565b80601f01602080910402602001604051908101604052809291908181526020018280546121219061315e565b801561216e5780601f106121435761010080835404028352916020019161216e565b820191906000526020600020905b81548152906001019060200180831161215157829003601f168201915b50505050509050600061217f612434565b905060008151036121945781925050506121d7565b6000825111156121c95780826040516020016121b1929190613de0565b604051602081830303815290604052925050506121d7565b6121d28461244b565b925050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b61225c83836124b3565b61226960008484846122ad565b6122a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229f90613dc0565b60405180910390fd5b505050565b60006122ce8473ffffffffffffffffffffffffffffffffffffffff1661268c565b15612427578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026122f7611953565b8786866040518563ffffffff1660e01b81526004016123199493929190613e59565b6020604051808303816000875af192505050801561235557506040513d601f19601f820116820180604052508101906123529190613eba565b60015b6123d7573d8060008114612385576040519150601f19603f3d011682016040523d82523d6000602084013e61238a565b606091505b5060008151036123cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c690613dc0565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061242c565b600190505b949350505050565b606060405180602001604052806000815250905090565b606061245682611908565b6000612460612434565b9050600081511161248057604051806020016040528060008152506124ab565b8061248a846126af565b60405160200161249b929190613de0565b6040516020818303038152906040525b915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251990613f33565b60405180910390fd5b61252b816121dc565b1561256b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256290613f9f565b60405180910390fd5b61257760008383612248565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125c791906134e1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126886000838361224d565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060600082036126f6576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061280a565b600082905060005b60008214612728578080612711906135db565b915050600a826127219190613750565b91506126fe565b60008167ffffffffffffffff81111561274457612743612b6f565b5b6040519080825280601f01601f1916602001820160405280156127765781602001600182028036833780820191505090505b5090505b600085146128035760018261278f91906135a7565b9150600a8561279e9190613fbf565b60306127aa91906134e1565b60f81b8183815181106127c0576127bf613781565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856127fc9190613750565b945061277a565b8093505050505b919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61285881612823565b811461286357600080fd5b50565b6000813590506128758161284f565b92915050565b60006020828403121561289157612890612819565b5b600061289f84828501612866565b91505092915050565b60008115159050919050565b6128bd816128a8565b82525050565b60006020820190506128d860008301846128b4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612909826128de565b9050919050565b612919816128fe565b811461292457600080fd5b50565b60008135905061293681612910565b92915050565b60006020828403121561295257612951612819565b5b600061296084828501612927565b91505092915050565b6000819050919050565b61297c81612969565b82525050565b60006020820190506129976000830184612973565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129d75780820151818401526020810190506129bc565b60008484015250505050565b6000601f19601f8301169050919050565b60006129ff8261299d565b612a0981856129a8565b9350612a198185602086016129b9565b612a22816129e3565b840191505092915050565b60006020820190508181036000830152612a4781846129f4565b905092915050565b612a5881612969565b8114612a6357600080fd5b50565b600081359050612a7581612a4f565b92915050565b600060208284031215612a9157612a90612819565b5b6000612a9f84828501612a66565b91505092915050565b612ab1816128fe565b82525050565b6000602082019050612acc6000830184612aa8565b92915050565b60008060408385031215612ae957612ae8612819565b5b6000612af785828601612927565b9250506020612b0885828601612a66565b9150509250929050565b600080600060608486031215612b2b57612b2a612819565b5b6000612b3986828701612927565b9350506020612b4a86828701612927565b9250506040612b5b86828701612a66565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ba7826129e3565b810181811067ffffffffffffffff82111715612bc657612bc5612b6f565b5b80604052505050565b6000612bd961280f565b9050612be58282612b9e565b919050565b600067ffffffffffffffff821115612c0557612c04612b6f565b5b612c0e826129e3565b9050602081019050919050565b82818337600083830152505050565b6000612c3d612c3884612bea565b612bcf565b905082815260208101848484011115612c5957612c58612b6a565b5b612c64848285612c1b565b509392505050565b600082601f830112612c8157612c80612b65565b5b8135612c91848260208601612c2a565b91505092915050565b6000806000806000806000806000806101408b8d031215612cbe57612cbd612819565b5b6000612ccc8d828e01612a66565b9a505060208b013567ffffffffffffffff811115612ced57612cec61281e565b5b612cf98d828e01612c6c565b9950506040612d0a8d828e01612a66565b9850506060612d1b8d828e01612a66565b97505060808b013567ffffffffffffffff811115612d3c57612d3b61281e565b5b612d488d828e01612c6c565b96505060a0612d598d828e01612a66565b95505060c0612d6a8d828e01612a66565b94505060e0612d7b8d828e01612927565b935050610100612d8d8d828e01612a66565b9250506101208b013567ffffffffffffffff811115612daf57612dae61281e565b5b612dbb8d828e01612c6c565b9150509295989b9194979a5092959850565b6000604082019050612de26000830185612973565b612def6020830184612aa8565b9392505050565b600060208284031215612e0c57612e0b612819565b5b600082013567ffffffffffffffff811115612e2a57612e2961281e565b5b612e3684828501612c6c565b91505092915050565b612e48816128a8565b8114612e5357600080fd5b50565b600081359050612e6581612e3f565b92915050565b60008060408385031215612e8257612e81612819565b5b6000612e9085828601612927565b9250506020612ea185828601612e56565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ee081612969565b82525050565b6000612ef28383612ed7565b60208301905092915050565b6000602082019050919050565b6000612f1682612eab565b612f208185612eb6565b9350612f2b83612ec7565b8060005b83811015612f5c578151612f438882612ee6565b9750612f4e83612efe565b925050600181019050612f2f565b5085935050505092915050565b60006020820190508181036000830152612f838184612f0b565b905092915050565b60008060408385031215612fa257612fa1612819565b5b6000612fb085828601612a66565b9250506020612fc185828601612a66565b9150509250929050565b600067ffffffffffffffff821115612fe657612fe5612b6f565b5b612fef826129e3565b9050602081019050919050565b600061300f61300a84612fcb565b612bcf565b90508281526020810184848401111561302b5761302a612b6a565b5b613036848285612c1b565b509392505050565b600082601f83011261305357613052612b65565b5b8135613063848260208601612ffc565b91505092915050565b6000806000806080858703121561308657613085612819565b5b600061309487828801612927565b94505060206130a587828801612927565b93505060406130b687828801612a66565b925050606085013567ffffffffffffffff8111156130d7576130d661281e565b5b6130e38782880161303e565b91505092959194509250565b6000806040838503121561310657613105612819565b5b600061311485828601612927565b925050602061312585828601612927565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061317657607f821691505b6020821081036131895761318861312f565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006131eb6021836129a8565b91506131f68261318f565b604082019050919050565b6000602082019050818103600083015261321a816131de565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b600061327d603e836129a8565b915061328882613221565b604082019050919050565b600060208201905081810360008301526132ac81613270565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b600061330f602e836129a8565b915061331a826132b3565b604082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b7f54696d65204f766572666c6f7700000000000000000000000000000000000000600082015250565b600061337b600d836129a8565b915061338682613345565b602082019050919050565b600060208201905081810360008301526133aa8161336e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133eb82612969565b91506133f683612969565b925082820261340481612969565b9150828204841483151761341b5761341a6133b1565b5b5092915050565b7f496e76616c696420507269636500000000000000000000000000000000000000600082015250565b6000613458600d836129a8565b915061346382613422565b602082019050919050565b600060208201905081810360008301526134878161344b565b9050919050565b600081905092915050565b60006134a48261299d565b6134ae818561348e565b93506134be8185602086016129b9565b80840191505092915050565b60006134d68284613499565b915081905092915050565b60006134ec82612969565b91506134f783612969565b925082820190508082111561350f5761350e6133b1565b5b92915050565b7f52656d61696e696e67204e46545175616e74697479206973204c65737320746860008201527f616e20596f7572204e46545175616e7469747900000000000000000000000000602082015250565b60006135716033836129a8565b915061357c82613515565b604082019050919050565b600060208201905081810360008301526135a081613564565b9050919050565b60006135b282612969565b91506135bd83612969565b92508282039050818111156135d5576135d46133b1565b5b92915050565b60006135e682612969565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613618576136176133b1565b5b600182019050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006136596018836129a8565b915061366482613623565b602082019050919050565b600060208201905081810360008301526136888161364c565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006136eb6029836129a8565b91506136f68261368f565b604082019050919050565b6000602082019050818103600083015261371a816136de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061375b82612969565b915061376683612969565b92508261377657613775613721565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061380c6026836129a8565b9150613817826137b0565b604082019050919050565b6000602082019050818103600083015261383b816137ff565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061389e6025836129a8565b91506138a982613842565b604082019050919050565b600060208201905081810360008301526138cd81613891565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139306024836129a8565b915061393b826138d4565b604082019050919050565b6000602082019050818103600083015261395f81613923565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b60006139c2602e836129a8565b91506139cd82613966565b604082019050919050565b600060208201905081810360008301526139f1816139b5565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613a5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613a1d565b613a648683613a1d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613aa1613a9c613a9784612969565b613a7c565b612969565b9050919050565b6000819050919050565b613abb83613a86565b613acf613ac782613aa8565b848454613a2a565b825550505050565b600090565b613ae4613ad7565b613aef818484613ab2565b505050565b5b81811015613b1357613b08600082613adc565b600181019050613af5565b5050565b601f821115613b5857613b29816139f8565b613b3284613a0d565b81016020851015613b41578190505b613b55613b4d85613a0d565b830182613af4565b50505b505050565b600082821c905092915050565b6000613b7b60001984600802613b5d565b1980831691505092915050565b6000613b948383613b6a565b9150826002028217905092915050565b613bad8261299d565b67ffffffffffffffff811115613bc657613bc5612b6f565b5b613bd0825461315e565b613bdb828285613b17565b600060209050601f831160018114613c0e5760008415613bfc578287015190505b613c068582613b88565b865550613c6e565b601f198416613c1c866139f8565b60005b82811015613c4457848901518255600182019150602085019450602081019050613c1f565b86831015613c615784890151613c5d601f891682613b6a565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613cac6020836129a8565b9150613cb782613c76565b602082019050919050565b60006020820190508181036000830152613cdb81613c9f565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613d186019836129a8565b9150613d2382613ce2565b602082019050919050565b60006020820190508181036000830152613d4781613d0b565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613daa6032836129a8565b9150613db582613d4e565b604082019050919050565b60006020820190508181036000830152613dd981613d9d565b9050919050565b6000613dec8285613499565b9150613df88284613499565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000613e2b82613e04565b613e358185613e0f565b9350613e458185602086016129b9565b613e4e816129e3565b840191505092915050565b6000608082019050613e6e6000830187612aa8565b613e7b6020830186612aa8565b613e886040830185612973565b8181036060830152613e9a8184613e20565b905095945050505050565b600081519050613eb48161284f565b92915050565b600060208284031215613ed057613ecf612819565b5b6000613ede84828501613ea5565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613f1d6020836129a8565b9150613f2882613ee7565b602082019050919050565b60006020820190508181036000830152613f4c81613f10565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613f89601c836129a8565b9150613f9482613f53565b602082019050919050565b60006020820190508181036000830152613fb881613f7c565b9050919050565b6000613fca82612969565b9150613fd583612969565b925082613fe557613fe4613721565b5b82820690509291505056fea26469706673582212208911565aba463196929b4f343204f23862c76d996daa3ed20a8a06db1b6a9ea664736f6c6343000812003300000000000000000000000062e789bfce1a88704d808d86b1f196aa9f4a5f1f0000000000000000000000001ab652ce23d1875e1f9c7a4728b712a93a54c890000000000000000000000000000000000000000000000000000000000000000b