60806040526040518060400160405280601981526020017f204845583a2041697264726f70204e465420566f756368657200000000000000815250600490816200004a919062000995565b506040518060400160405280601d81526020017f4f6666696369616c20417574686f72697a652063726564656e7469616c0000008152506005908162000091919062000995565b506000600755348015620000a457600080fd5b5060405162004715380380620047158339818101604052810190620000ca919062000af0565b6040518060400160405280601781526020017f68747470733a2f2f706c616365686f6c6465722e636f6d0000000000000000008152506200011181620001a960201b60201c565b506200013262000126620001be60201b60201c565b620001c660201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001a233600060016040518060600160405280602a8152602001620046eb602a91396200028c60201b60201c565b50620010d8565b8060029081620001ba919062000995565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603620002fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f59062000ba9565b60405180910390fd5b600062000310620001be60201b60201c565b9050600062000325856200047360201b60201c565b905060006200033a856200047360201b60201c565b90506200035383600089858589620004f460201b60201c565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003b4919062000bfa565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516200043492919062000c46565b60405180910390a46200045383600089858589620004fc60201b60201c565b6200046a836000898989896200050460201b60201c565b50505050505050565b60606000600167ffffffffffffffff81111562000495576200049462000726565b5b604051908082528060200260200182016040528015620004c45781602001602082028036833780820191505090505b5090508281600081518110620004df57620004de62000c73565b5b60200260200101818152505080915050919050565b505050505050565b505050505050565b6200052b8473ffffffffffffffffffffffffffffffffffffffff16620006f860201b60201c565b15620006f0578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016200057495949392919062000d4d565b6020604051808303816000875af1925050508015620005b357506040513d601f19601f82011682018060405250810190620005b0919062000e0e565b60015b6200066457620005c262000e4d565b806308c379a003620006255750620005d962000ea8565b80620005e6575062000627565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200061c919062000f84565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200065b906200101e565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614620006ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e590620010b6565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200079d57607f821691505b602082108103620007b357620007b262000755565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200081d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007de565b620008298683620007de565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000876620008706200086a8462000841565b6200084b565b62000841565b9050919050565b6000819050919050565b620008928362000855565b620008aa620008a1826200087d565b848454620007eb565b825550505050565b600090565b620008c1620008b2565b620008ce81848462000887565b505050565b5b81811015620008f657620008ea600082620008b7565b600181019050620008d4565b5050565b601f82111562000945576200090f81620007b9565b6200091a84620007ce565b810160208510156200092a578190505b620009426200093985620007ce565b830182620008d3565b50505b505050565b600082821c905092915050565b60006200096a600019846008026200094a565b1980831691505092915050565b600062000985838362000957565b9150826002028217905092915050565b620009a0826200071b565b67ffffffffffffffff811115620009bc57620009bb62000726565b5b620009c8825462000784565b620009d5828285620008fa565b600060209050601f83116001811462000a0d5760008415620009f8578287015190505b62000a04858262000977565b86555062000a74565b601f19841662000a1d86620007b9565b60005b8281101562000a475784890151825560018201915060208501945060208101905062000a20565b8683101562000a67578489015162000a63601f89168262000957565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ab88262000a8b565b9050919050565b62000aca8162000aab565b811462000ad657600080fd5b50565b60008151905062000aea8162000abf565b92915050565b60006020828403121562000b095762000b0862000a86565b5b600062000b198482850162000ad9565b91505092915050565b600082825260208201905092915050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600062000b9160218362000b22565b915062000b9e8262000b33565b604082019050919050565b6000602082019050818103600083015262000bc48162000b82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c078262000841565b915062000c148362000841565b925082820190508082111562000c2f5762000c2e62000bcb565b5b92915050565b62000c408162000841565b82525050565b600060408201905062000c5d600083018562000c35565b62000c6c602083018462000c35565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b62000cad8162000aab565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000cef57808201518184015260208101905062000cd2565b60008484015250505050565b6000601f19601f8301169050919050565b600062000d198262000cb3565b62000d25818562000cbe565b935062000d3781856020860162000ccf565b62000d428162000cfb565b840191505092915050565b600060a08201905062000d64600083018862000ca2565b62000d73602083018762000ca2565b62000d82604083018662000c35565b62000d91606083018562000c35565b818103608083015262000da5818462000d0c565b90509695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62000de88162000db1565b811462000df457600080fd5b50565b60008151905062000e088162000ddd565b92915050565b60006020828403121562000e275762000e2662000a86565b5b600062000e378482850162000df7565b91505092915050565b60008160e01c9050919050565b600060033d111562000e6f5760046000803e62000e6c60005162000e40565b90505b90565b62000e7d8262000cfb565b810181811067ffffffffffffffff8211171562000e9f5762000e9e62000726565b5b80604052505050565b600060443d1062000f405762000ebd62000a7c565b60043d036004823e80513d602482011167ffffffffffffffff8211171562000ee757505062000f40565b808201805167ffffffffffffffff81111562000f07575050505062000f40565b80602083010160043d03850181111562000f2657505050505062000f40565b62000f378260200185018662000e72565b82955050505050505b90565b600062000f50826200071b565b62000f5c818562000b22565b935062000f6e81856020860162000ccf565b62000f798162000cfb565b840191505092915050565b6000602082019050818103600083015262000fa0818462000f43565b905092915050565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b60006200100660348362000b22565b9150620010138262000fa8565b604082019050919050565b60006020820190508181036000830152620010398162000ff7565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b60006200109e60288362000b22565b9150620010ab8262001040565b604082019050919050565b60006020820190508181036000830152620010d1816200108f565b9050919050565b61360380620010e86000396000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c806355f804b3116100a2578063a22cb46511610071578063a22cb465146102ca578063c204642c146102e6578063e985e9c514610302578063f242432a14610332578063f2fde38b1461034e57610115565b806355f804b314610268578063715018a6146102845780638da5cb5b1461028e57806395d89b41146102ac57610115565b8063198b474a116100e9578063198b474a146101c85780632eb2c2d6146101e457806336020d601461020057806340c10f191461021c5780634e1273f41461023857610115565b8062fdd58e1461011a57806301ffc9a71461014a57806306fdde031461017a5780630e89341c14610198575b600080fd5b610134600480360381019061012f9190611cb8565b61036a565b6040516101419190611d07565b60405180910390f35b610164600480360381019061015f9190611d7a565b610432565b6040516101719190611dc2565b60405180910390f35b610182610514565b60405161018f9190611e6d565b60405180910390f35b6101b260048036038101906101ad9190611e8f565b6105a2565b6040516101bf9190611e6d565b60405180910390f35b6101e260048036038101906101dd9190611ebc565b610641565b005b6101fe60048036038101906101f991906120e6565b61068d565b005b61021a60048036038101906102159190612210565b61072e565b005b61023660048036038101906102319190611cb8565b610804565b005b610252600480360381019061024d9190612347565b61082c565b60405161025f919061247d565b60405180910390f35b610282600480360381019061027d9190612540565b610945565b005b61028c610959565b005b61029661096d565b6040516102a39190612598565b60405180910390f35b6102b4610997565b6040516102c19190611e6d565b60405180910390f35b6102e460048036038101906102df91906125df565b610a25565b005b61030060048036038101906102fb919061261f565b610a3b565b005b61031c6004803603810190610317919061267f565b610b5c565b6040516103299190611dc2565b60405180910390f35b61034c600480360381019061034791906126bf565b610bf0565b005b61036860048036038101906103639190611ebc565b610c91565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d1906127c8565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104fd57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061050d575061050c82610d14565b5b9050919050565b6004805461052190612817565b80601f016020809104026020016040519081016040528092919081815260200182805461054d90612817565b801561059a5780601f1061056f5761010080835404028352916020019161059a565b820191906000526020600020905b81548152906001019060200180831161057d57829003601f168201915b505050505081565b6060600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663714c53986040518163ffffffff1660e01b8152600401600060405180830381865afa158015610611573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061063a91906128b8565b9050919050565b610649610d7e565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610695610dfc565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806106db57506106da856106d5610dfc565b610b5c565b5b61071a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071190612973565b60405180910390fd5b6107278585858585610e04565b5050505050565b610736610d7e565b60005b848490508110156107fd5784848281811061075757610756612993565b5b905060200201602081019061076c9190611ebc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628660016040516107e2929190612a07565b60405180910390a480806107f590612a5f565b915050610739565b5050505050565b61080c610d7e565b6108288282600160405180602001604052806000815250611125565b5050565b60608151835114610872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086990612b19565b60405180910390fd5b6000835167ffffffffffffffff81111561088f5761088e611eee565b5b6040519080825280602002602001820160405280156108bd5781602001602082028036833780820191505090505b50905060005b845181101561093a5761090a8582815181106108e2576108e1612993565b5b60200260200101518583815181106108fd576108fc612993565b5b602002602001015161036a565b82828151811061091d5761091c612993565b5b6020026020010181815250508061093390612a5f565b90506108c3565b508091505092915050565b61094d610d7e565b610956816112d5565b50565b610961610d7e565b61096b60006112e8565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600580546109a490612817565b80601f01602080910402602001604051908101604052809291908181526020018280546109d090612817565b8015610a1d5780601f106109f257610100808354040283529160200191610a1d565b820191906000526020600020905b815481529060010190602001808311610a0057829003601f168201915b505050505081565b610a37610a30610dfc565b83836113ae565b5050565b610a43610d7e565b60005b83839050811015610b565760006007544340604051602001610a69929190612b85565b6040516020818303038152906040528051906020012060001c9050848483818110610a9757610a96612993565b5b9050602002016020810190610aac9190611ebc565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62866001604051610b22929190612a07565b60405180910390a460076000815480929190610b3d90612a5f565b9190505550508080610b4e90612a5f565b915050610a46565b50505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610bf8610dfc565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610c3e5750610c3d85610c38610dfc565b610b5c565b5b610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490612973565b60405180910390fd5b610c8a858585858561151a565b5050505050565b610c99610d7e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff90612c23565b60405180910390fd5b610d11816112e8565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610d86610dfc565b73ffffffffffffffffffffffffffffffffffffffff16610da461096d565b73ffffffffffffffffffffffffffffffffffffffff1614610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190612c8f565b60405180910390fd5b565b600033905090565b8151835114610e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3f90612d21565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eae90612db3565b60405180910390fd5b6000610ec1610dfc565b9050610ed18187878787876117b5565b60005b8451811015611082576000858281518110610ef257610ef1612993565b5b602002602001015190506000858381518110610f1157610f10612993565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa990612e45565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110679190612e65565b925050819055505050508061107b90612a5f565b9050610ed4565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516110f9929190612e99565b60405180910390a461110f8187878787876117bd565b61111d8187878787876117c5565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b90612f42565b60405180910390fd5b600061119e610dfc565b905060006111ab8561199c565b905060006111b88561199c565b90506111c9836000898585896117b5565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112289190612e65565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516112a6929190612f62565b60405180910390a46112bd836000898585896117bd565b6112cc83600089898989611a16565b50505050505050565b80600290816112e4919061312d565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390613271565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161150d9190611dc2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158090612db3565b60405180910390fd5b6000611593610dfc565b905060006115a08561199c565b905060006115ad8561199c565b90506115bd8389898585896117b5565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b90612e45565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117099190612e65565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051611786929190612f62565b60405180910390a461179c848a8a86868a6117bd565b6117aa848a8a8a8a8a611a16565b505050505050505050565b505050505050565b505050505050565b6117e48473ffffffffffffffffffffffffffffffffffffffff16611bed565b15611994578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161182a9594939291906132e6565b6020604051808303816000875af192505050801561186657506040513d601f19601f820116820180604052508101906118639190613363565b60015b61190b5761187261339d565b806308c379a0036118ce57506118866133bf565b8061189157506118d0565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c59190611e6d565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611902906134c1565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990613553565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156119bb576119ba611eee565b5b6040519080825280602002602001820160405280156119e95781602001602082028036833780820191505090505b5090508281600081518110611a0157611a00612993565b5b60200260200101818152505080915050919050565b611a358473ffffffffffffffffffffffffffffffffffffffff16611bed565b15611be5578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611a7b959493929190613573565b6020604051808303816000875af1925050508015611ab757506040513d601f19601f82011682018060405250810190611ab49190613363565b60015b611b5c57611ac361339d565b806308c379a003611b1f5750611ad76133bf565b80611ae25750611b21565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b169190611e6d565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b53906134c1565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613553565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c4f82611c24565b9050919050565b611c5f81611c44565b8114611c6a57600080fd5b50565b600081359050611c7c81611c56565b92915050565b6000819050919050565b611c9581611c82565b8114611ca057600080fd5b50565b600081359050611cb281611c8c565b92915050565b60008060408385031215611ccf57611cce611c1a565b5b6000611cdd85828601611c6d565b9250506020611cee85828601611ca3565b9150509250929050565b611d0181611c82565b82525050565b6000602082019050611d1c6000830184611cf8565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611d5781611d22565b8114611d6257600080fd5b50565b600081359050611d7481611d4e565b92915050565b600060208284031215611d9057611d8f611c1a565b5b6000611d9e84828501611d65565b91505092915050565b60008115159050919050565b611dbc81611da7565b82525050565b6000602082019050611dd76000830184611db3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e17578082015181840152602081019050611dfc565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e3f82611ddd565b611e498185611de8565b9350611e59818560208601611df9565b611e6281611e23565b840191505092915050565b60006020820190508181036000830152611e878184611e34565b905092915050565b600060208284031215611ea557611ea4611c1a565b5b6000611eb384828501611ca3565b91505092915050565b600060208284031215611ed257611ed1611c1a565b5b6000611ee084828501611c6d565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611f2682611e23565b810181811067ffffffffffffffff82111715611f4557611f44611eee565b5b80604052505050565b6000611f58611c10565b9050611f648282611f1d565b919050565b600067ffffffffffffffff821115611f8457611f83611eee565b5b602082029050602081019050919050565b600080fd5b6000611fad611fa884611f69565b611f4e565b90508083825260208201905060208402830185811115611fd057611fcf611f95565b5b835b81811015611ff95780611fe58882611ca3565b845260208401935050602081019050611fd2565b5050509392505050565b600082601f83011261201857612017611ee9565b5b8135612028848260208601611f9a565b91505092915050565b600080fd5b600067ffffffffffffffff82111561205157612050611eee565b5b61205a82611e23565b9050602081019050919050565b82818337600083830152505050565b600061208961208484612036565b611f4e565b9050828152602081018484840111156120a5576120a4612031565b5b6120b0848285612067565b509392505050565b600082601f8301126120cd576120cc611ee9565b5b81356120dd848260208601612076565b91505092915050565b600080600080600060a0868803121561210257612101611c1a565b5b600061211088828901611c6d565b955050602061212188828901611c6d565b945050604086013567ffffffffffffffff81111561214257612141611c1f565b5b61214e88828901612003565b935050606086013567ffffffffffffffff81111561216f5761216e611c1f565b5b61217b88828901612003565b925050608086013567ffffffffffffffff81111561219c5761219b611c1f565b5b6121a8888289016120b8565b9150509295509295909350565b600080fd5b60008083601f8401126121d0576121cf611ee9565b5b8235905067ffffffffffffffff8111156121ed576121ec6121b5565b5b60208301915083602082028301111561220957612208611f95565b5b9250929050565b6000806000806060858703121561222a57612229611c1a565b5b600085013567ffffffffffffffff81111561224857612247611c1f565b5b612254878288016121ba565b9450945050602061226787828801611ca3565b925050604061227887828801611c6d565b91505092959194509250565b600067ffffffffffffffff82111561229f5761229e611eee565b5b602082029050602081019050919050565b60006122c36122be84612284565b611f4e565b905080838252602082019050602084028301858111156122e6576122e5611f95565b5b835b8181101561230f57806122fb8882611c6d565b8452602084019350506020810190506122e8565b5050509392505050565b600082601f83011261232e5761232d611ee9565b5b813561233e8482602086016122b0565b91505092915050565b6000806040838503121561235e5761235d611c1a565b5b600083013567ffffffffffffffff81111561237c5761237b611c1f565b5b61238885828601612319565b925050602083013567ffffffffffffffff8111156123a9576123a8611c1f565b5b6123b585828601612003565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123f481611c82565b82525050565b600061240683836123eb565b60208301905092915050565b6000602082019050919050565b600061242a826123bf565b61243481856123ca565b935061243f836123db565b8060005b8381101561247057815161245788826123fa565b975061246283612412565b925050600181019050612443565b5085935050505092915050565b60006020820190508181036000830152612497818461241f565b905092915050565b600067ffffffffffffffff8211156124ba576124b9611eee565b5b6124c382611e23565b9050602081019050919050565b60006124e36124de8461249f565b611f4e565b9050828152602081018484840111156124ff576124fe612031565b5b61250a848285612067565b509392505050565b600082601f83011261252757612526611ee9565b5b81356125378482602086016124d0565b91505092915050565b60006020828403121561255657612555611c1a565b5b600082013567ffffffffffffffff81111561257457612573611c1f565b5b61258084828501612512565b91505092915050565b61259281611c44565b82525050565b60006020820190506125ad6000830184612589565b92915050565b6125bc81611da7565b81146125c757600080fd5b50565b6000813590506125d9816125b3565b92915050565b600080604083850312156125f6576125f5611c1a565b5b600061260485828601611c6d565b9250506020612615858286016125ca565b9150509250929050565b60008060006040848603121561263857612637611c1a565b5b600084013567ffffffffffffffff81111561265657612655611c1f565b5b612662868287016121ba565b9350935050602061267586828701611ca3565b9150509250925092565b6000806040838503121561269657612695611c1a565b5b60006126a485828601611c6d565b92505060206126b585828601611c6d565b9150509250929050565b600080600080600060a086880312156126db576126da611c1a565b5b60006126e988828901611c6d565b95505060206126fa88828901611c6d565b945050604061270b88828901611ca3565b935050606061271c88828901611ca3565b925050608086013567ffffffffffffffff81111561273d5761273c611c1f565b5b612749888289016120b8565b9150509295509295909350565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b60006127b2602a83611de8565b91506127bd82612756565b604082019050919050565b600060208201905081810360008301526127e1816127a5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061282f57607f821691505b602082108103612842576128416127e8565b5b50919050565b600061285b6128568461249f565b611f4e565b90508281526020810184848401111561287757612876612031565b5b612882848285611df9565b509392505050565b600082601f83011261289f5761289e611ee9565b5b81516128af848260208601612848565b91505092915050565b6000602082840312156128ce576128cd611c1a565b5b600082015167ffffffffffffffff8111156128ec576128eb611c1f565b5b6128f88482850161288a565b91505092915050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b600061295d602e83611de8565b915061296882612901565b604082019050919050565b6000602082019050818103600083015261298c81612950565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b60006129f16129ec6129e7846129c2565b6129cc565b611c82565b9050919050565b612a01816129d6565b82525050565b6000604082019050612a1c6000830185611cf8565b612a2960208301846129f8565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a6a82611c82565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a9c57612a9b612a30565b5b600182019050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b6000612b03602983611de8565b9150612b0e82612aa7565b604082019050919050565b60006020820190508181036000830152612b3281612af6565b9050919050565b6000819050919050565b612b54612b4f82611c82565b612b39565b82525050565b6000819050919050565b6000819050919050565b612b7f612b7a82612b5a565b612b64565b82525050565b6000612b918285612b43565b602082019150612ba18284612b6e565b6020820191508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612c0d602683611de8565b9150612c1882612bb1565b604082019050919050565b60006020820190508181036000830152612c3c81612c00565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c79602083611de8565b9150612c8482612c43565b602082019050919050565b60006020820190508181036000830152612ca881612c6c565b9050919050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b6000612d0b602883611de8565b9150612d1682612caf565b604082019050919050565b60006020820190508181036000830152612d3a81612cfe565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d9d602583611de8565b9150612da882612d41565b604082019050919050565b60006020820190508181036000830152612dcc81612d90565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000612e2f602a83611de8565b9150612e3a82612dd3565b604082019050919050565b60006020820190508181036000830152612e5e81612e22565b9050919050565b6000612e7082611c82565b9150612e7b83611c82565b9250828201905080821115612e9357612e92612a30565b5b92915050565b60006040820190508181036000830152612eb3818561241f565b90508181036020830152612ec7818461241f565b90509392505050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f2c602183611de8565b9150612f3782612ed0565b604082019050919050565b60006020820190508181036000830152612f5b81612f1f565b9050919050565b6000604082019050612f776000830185611cf8565b612f846020830184611cf8565b9392505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612fed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612fb0565b612ff78683612fb0565b95508019841693508086168417925050509392505050565b600061302a61302561302084611c82565b6129cc565b611c82565b9050919050565b6000819050919050565b6130448361300f565b61305861305082613031565b848454612fbd565b825550505050565b600090565b61306d613060565b61307881848461303b565b505050565b5b8181101561309c57613091600082613065565b60018101905061307e565b5050565b601f8211156130e1576130b281612f8b565b6130bb84612fa0565b810160208510156130ca578190505b6130de6130d685612fa0565b83018261307d565b50505b505050565b600082821c905092915050565b6000613104600019846008026130e6565b1980831691505092915050565b600061311d83836130f3565b9150826002028217905092915050565b61313682611ddd565b67ffffffffffffffff81111561314f5761314e611eee565b5b6131598254612817565b6131648282856130a0565b600060209050601f8311600181146131975760008415613185578287015190505b61318f8582613111565b8655506131f7565b601f1984166131a586612f8b565b60005b828110156131cd578489015182556001820191506020850194506020810190506131a8565b868310156131ea57848901516131e6601f8916826130f3565b8355505b6001600288020188555050505b505050505050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b600061325b602983611de8565b9150613266826131ff565b604082019050919050565b6000602082019050818103600083015261328a8161324e565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006132b882613291565b6132c2818561329c565b93506132d2818560208601611df9565b6132db81611e23565b840191505092915050565b600060a0820190506132fb6000830188612589565b6133086020830187612589565b818103604083015261331a818661241f565b9050818103606083015261332e818561241f565b9050818103608083015261334281846132ad565b90509695505050505050565b60008151905061335d81611d4e565b92915050565b60006020828403121561337957613378611c1a565b5b60006133878482850161334e565b91505092915050565b60008160e01c9050919050565b600060033d11156133bc5760046000803e6133b9600051613390565b90505b90565b600060443d1061344c576133d1611c10565b60043d036004823e80513d602482011167ffffffffffffffff821117156133f957505061344c565b808201805167ffffffffffffffff811115613417575050505061344c565b80602083010160043d03850181111561343457505050505061344c565b61344382602001850186611f1d565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b60006134ab603483611de8565b91506134b68261344f565b604082019050919050565b600060208201905081810360008301526134da8161349e565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b600061353d602883611de8565b9150613548826134e1565b604082019050919050565b6000602082019050818103600083015261356c81613530565b9050919050565b600060a0820190506135886000830188612589565b6135956020830187612589565b6135a26040830186611cf8565b6135af6060830185611cf8565b81810360808301526135c181846132ad565b9050969550505050505056fea2646970667358221220a8eed3dcfa082acc879837d1701d5ccd3edeb31d5a19e8e0fa37c64a3ca6b49d64736f6c6343000813003330783261613833423436304244624143353537423862303835416434663541333262626666343061613000000000000000000000000080d362969d77a191a8a79d3670e15a22bb552b2a