From 2c081a72f14bdc0b4cf54412dafd9ddc335d3388 Mon Sep 17 00:00:00 2001 From: Walter Schulze Date: Tue, 22 Oct 2024 21:37:29 +0100 Subject: [PATCH] check in generated test suite --- .gitignore | 1 - .../goreflect/APocketRoses/valid.goreflect | 7 + .../goreflect/APocketRoses/validator.json | 60 + .../goreflect/APocketRoses/validator.txt | 1 + .../goreflect/APocketRoses/validator.xml | 63 + .../tests/goreflect/Ab21Any/valid.goreflect | 12 + .../tests/goreflect/Ab21Any/validator.json | 9 + .../tests/goreflect/Ab21Any/validator.txt | 1 + .../tests/goreflect/Ab21Any/validator.xml | 9 + .../invalid.goreflect | 12 + .../Ab21InAnyExceptSaladWorry/validator.json | 93 + .../Ab21InAnyExceptSaladWorry/validator.txt | 1 + .../Ab21InAnyExceptSaladWorry/validator.xml | 96 + .../Ab21MagazineFrameA/valid.goreflect | 12 + .../Ab21MagazineFrameA/validator.json | 137 + .../Ab21MagazineFrameA/validator.txt | 1 + .../Ab21MagazineFrameA/validator.xml | 141 + .../invalid.goreflect | 12 + .../Ab21MagazineFrameSingleA/validator.json | 106 + .../Ab21MagazineFrameSingleA/validator.txt | 1 + .../Ab21MagazineFrameSingleA/validator.xml | 110 + .../goreflect/Ab21None/invalid.goreflect | 12 + .../tests/goreflect/Ab21None/validator.json | 22 + .../tests/goreflect/Ab21None/validator.txt | 1 + .../tests/goreflect/Ab21None/validator.xml | 22 + .../Ab21NotAFieldName/valid.goreflect | 12 + .../Ab21NotAFieldName/validator.json | 124 + .../goreflect/Ab21NotAFieldName/validator.txt | 1 + .../goreflect/Ab21NotAFieldName/validator.xml | 127 + .../goreflect/Ab21Spirit1/valid.goreflect | 12 + .../goreflect/Ab21Spirit1/validator.json | 89 + .../tests/goreflect/Ab21Spirit1/validator.txt | 2 + .../tests/goreflect/Ab21Spirit1/validator.xml | 87 + .../goreflect/Ab21Spirit2/invalid.goreflect | 12 + .../goreflect/Ab21Spirit2/validator.json | 89 + .../tests/goreflect/Ab21Spirit2/validator.txt | 2 + .../tests/goreflect/Ab21Spirit2/validator.xml | 87 + .../goreflect/AbcPocketRoses/valid.goreflect | 7 + .../goreflect/AbcPocketRoses/validator.json | 118 + .../goreflect/AbcPocketRoses/validator.txt | 1 + .../goreflect/AbcPocketRoses/validator.xml | 125 + .../goreflect/AndAnyName/valid.goreflect | 14 + .../tests/goreflect/AndAnyName/validator.json | 91 + .../tests/goreflect/AndAnyName/validator.txt | 1 + .../tests/goreflect/AndAnyName/validator.xml | 93 + .../AndNameTelephoneDavid/valid.goreflect | 14 + .../AndNameTelephoneDavid/validator.json | 141 + .../AndNameTelephoneDavid/validator.txt | 1 + .../AndNameTelephoneDavid/validator.xml | 145 + .../AndNameTelephoneJohn/invalid.goreflect | 10 + .../AndNameTelephoneJohn/validator.json | 141 + .../AndNameTelephoneJohn/validator.txt | 1 + .../AndNameTelephoneJohn/validator.xml | 145 + .../AndNameTelephoneMover/invalid.goreflect | 30 + .../AndNameTelephoneMover/validator.json | 141 + .../AndNameTelephoneMover/validator.txt | 1 + .../AndNameTelephoneMover/validator.xml | 145 + .../AndNameTelephoneSmith/invalid.goreflect | 10 + .../AndNameTelephoneSmith/validator.json | 141 + .../AndNameTelephoneSmith/validator.txt | 1 + .../AndNameTelephoneSmith/validator.xml | 145 + .../goreflect/BightTurn/invalid.goreflect | 7 + .../tests/goreflect/BightTurn/validator.json | 59 + .../tests/goreflect/BightTurn/validator.txt | 1 + .../tests/goreflect/BightTurn/validator.xml | 61 + .../goreflect/ContextDavid/invalid.goreflect | 14 + .../goreflect/ContextDavid/validator.json | 103 + .../goreflect/ContextDavid/validator.txt | 1 + .../goreflect/ContextDavid/validator.xml | 108 + .../goreflect/ContextRobert/valid.goreflect | 10 + .../goreflect/ContextRobert/validator.json | 103 + .../goreflect/ContextRobert/validator.txt | 1 + .../goreflect/ContextRobert/validator.xml | 108 + .../CorrectTypeRobert/valid.goreflect | 10 + .../CorrectTypeRobert/validator.json | 62 + .../goreflect/CorrectTypeRobert/validator.txt | 1 + .../goreflect/CorrectTypeRobert/validator.xml | 62 + .../goreflect/DPocketRoses/invalid.goreflect | 7 + .../goreflect/DPocketRoses/validator.json | 60 + .../goreflect/DPocketRoses/validator.txt | 1 + .../goreflect/DPocketRoses/validator.xml | 63 + .../DontErrorGivenWrongType/invalid.goreflect | 9 + .../DontErrorGivenWrongType/validator.json | 94 + .../DontErrorGivenWrongType/validator.txt | 1 + .../DontErrorGivenWrongType/validator.xml | 97 + .../EmptyOrNilJohn/invalid.goreflect | 10 + .../goreflect/EmptyOrNilJohn/validator.json | 196 + .../goreflect/EmptyOrNilJohn/validator.txt | 3 + .../goreflect/EmptyOrNilJohn/validator.xml | 190 + .../EmptyOrNilNoname/valid.goreflect | 9 + .../goreflect/EmptyOrNilNoname/validator.json | 196 + .../goreflect/EmptyOrNilNoname/validator.txt | 3 + .../goreflect/EmptyOrNilNoname/validator.xml | 190 + .../goreflect/EmptyOrNilSmith/valid.goreflect | 10 + .../goreflect/EmptyOrNilSmith/validator.json | 196 + .../goreflect/EmptyOrNilSmith/validator.txt | 3 + .../goreflect/EmptyOrNilSmith/validator.xml | 190 + .../FinalCPocketRoses/valid.goreflect | 7 + .../FinalCPocketRoses/validator.json | 60 + .../goreflect/FinalCPocketRoses/validator.txt | 1 + .../goreflect/FinalCPocketRoses/validator.xml | 63 + .../HiddenLeftRecursionDavid/valid.goreflect | 14 + .../HiddenLeftRecursionDavid/validator.json | 96 + .../HiddenLeftRecursionDavid/validator.txt | 2 + .../HiddenLeftRecursionDavid/validator.xml | 94 + .../invalid.goreflect | 10 + .../HiddenLeftRecursionRobert/validator.json | 96 + .../HiddenLeftRecursionRobert/validator.txt | 2 + .../HiddenLeftRecursionRobert/validator.xml | 94 + .../InSetPersonDavid/invalid.goreflect | 14 + .../goreflect/InSetPersonDavid/validator.json | 89 + .../goreflect/InSetPersonDavid/validator.txt | 1 + .../goreflect/InSetPersonDavid/validator.xml | 90 + .../InSetPersonRobert/valid.goreflect | 10 + .../InSetPersonRobert/validator.json | 89 + .../goreflect/InSetPersonRobert/validator.txt | 1 + .../goreflect/InSetPersonRobert/validator.xml | 90 + .../goreflect/KnotKnotElbow/valid.goreflect | 7 + .../goreflect/KnotKnotElbow/validator.json | 59 + .../goreflect/KnotKnotElbow/validator.txt | 1 + .../goreflect/KnotKnotElbow/validator.xml | 61 + .../invalid.goreflect | 12 + .../LatentSimplificationFalse/validator.json | 727 + .../LatentSimplificationFalse/validator.txt | 1 + .../LatentSimplificationFalse/validator.xml | 754 + .../LatentSimplificationTrue/valid.goreflect | 12 + .../LatentSimplificationTrue/validator.json | 727 + .../LatentSimplificationTrue/validator.txt | 1 + .../LatentSimplificationTrue/validator.xml | 754 + .../LeftRecursionDavid/valid.goreflect | 14 + .../LeftRecursionDavid/validator.json | 72 + .../LeftRecursionDavid/validator.txt | 1 + .../LeftRecursionDavid/validator.xml | 74 + .../LeftRecursionRobert/invalid.goreflect | 10 + .../LeftRecursionRobert/validator.json | 72 + .../LeftRecursionRobert/validator.txt | 1 + .../LeftRecursionRobert/validator.xml | 74 + .../goreflect/LenNameJohn/invalid.goreflect | 10 + .../goreflect/LenNameJohn/validator.json | 98 + .../tests/goreflect/LenNameJohn/validator.txt | 1 + .../tests/goreflect/LenNameJohn/validator.xml | 97 + .../goreflect/LenNameNoname/invalid.goreflect | 9 + .../goreflect/LenNameNoname/validator.json | 98 + .../goreflect/LenNameNoname/validator.txt | 1 + .../goreflect/LenNameNoname/validator.xml | 97 + .../goreflect/LenNameSmith/valid.goreflect | 10 + .../goreflect/LenNameSmith/validator.json | 98 + .../goreflect/LenNameSmith/validator.txt | 1 + .../goreflect/LenNameSmith/validator.xml | 97 + .../ListIndexAddressMover/invalid.goreflect | 30 + .../ListIndexAddressMover/validator.json | 172 + .../ListIndexAddressMover/validator.txt | 1 + .../ListIndexAddressMover/validator.xml | 177 + .../ListIndexAddressRoutine/invalid.goreflect | 10 + .../ListIndexAddressRoutine/validator.json | 172 + .../ListIndexAddressRoutine/validator.txt | 1 + .../ListIndexAddressRoutine/validator.xml | 177 + .../ListIndexAddressShaker/valid.goreflect | 22 + .../ListIndexAddressShaker/validator.json | 172 + .../ListIndexAddressShaker/validator.txt | 1 + .../ListIndexAddressShaker/validator.xml | 177 + .../ListOfTelephonesDavid/valid.goreflect | 14 + .../ListOfTelephonesDavid/validator.json | 131 + .../ListOfTelephonesDavid/validator.txt | 1 + .../ListOfTelephonesDavid/validator.xml | 130 + .../ListOfTelephonesRoutine/invalid.goreflect | 10 + .../ListOfTelephonesRoutine/validator.json | 131 + .../ListOfTelephonesRoutine/validator.txt | 1 + .../ListOfTelephonesRoutine/validator.xml | 130 + .../ListOfTelephonesShaker/valid.goreflect | 22 + .../ListOfTelephonesShaker/validator.json | 131 + .../ListOfTelephonesShaker/validator.txt | 1 + .../ListOfTelephonesShaker/validator.xml | 130 + .../NaiveNotNameDavid/invalid.goreflect | 14 + .../NaiveNotNameDavid/validator.json | 98 + .../goreflect/NaiveNotNameDavid/validator.txt | 1 + .../goreflect/NaiveNotNameDavid/validator.xml | 97 + .../NaiveNotNameNoname/invalid.goreflect | 9 + .../NaiveNotNameNoname/validator.json | 98 + .../NaiveNotNameNoname/validator.txt | 1 + .../NaiveNotNameNoname/validator.xml | 97 + .../NaiveNotNameRobert/valid.goreflect | 10 + .../NaiveNotNameRobert/validator.json | 98 + .../NaiveNotNameRobert/validator.txt | 1 + .../NaiveNotNameRobert/validator.xml | 97 + .../NaiveNotNameSmith/valid.goreflect | 10 + .../NaiveNotNameSmith/validator.json | 98 + .../goreflect/NaiveNotNameSmith/validator.txt | 1 + .../goreflect/NaiveNotNameSmith/validator.xml | 97 + .../NextAPocketRoses/invalid.goreflect | 7 + .../goreflect/NextAPocketRoses/validator.json | 118 + .../goreflect/NextAPocketRoses/validator.txt | 1 + .../goreflect/NextAPocketRoses/validator.xml | 125 + .../goreflect/NilNameJohn/invalid.goreflect | 10 + .../goreflect/NilNameJohn/validator.json | 41 + .../tests/goreflect/NilNameJohn/validator.txt | 1 + .../tests/goreflect/NilNameJohn/validator.xml | 42 + .../goreflect/NilNameNoname/valid.goreflect | 9 + .../goreflect/NilNameNoname/validator.json | 41 + .../goreflect/NilNameNoname/validator.txt | 1 + .../goreflect/NilNameNoname/validator.xml | 42 + .../goreflect/NilNameSmith/invalid.goreflect | 10 + .../goreflect/NilNameSmith/validator.json | 41 + .../goreflect/NilNameSmith/validator.txt | 1 + .../goreflect/NilNameSmith/validator.xml | 42 + .../valid.goreflect | 14 + .../OptionalAddressDavidPerson/validator.json | 178 + .../OptionalAddressDavidPerson/validator.txt | 1 + .../OptionalAddressDavidPerson/validator.xml | 184 + .../invalid.goreflect | 30 + .../OptionalAddressMoverPerson/validator.json | 178 + .../OptionalAddressMoverPerson/validator.txt | 1 + .../OptionalAddressMoverPerson/validator.xml | 184 + .../valid.goreflect | 10 + .../validator.json | 178 + .../OptionalAddressRobertPerson/validator.txt | 1 + .../OptionalAddressRobertPerson/validator.xml | 184 + .../OptionalNameJohnPerson/invalid.goreflect | 10 + .../OptionalNameJohnPerson/validator.json | 102 + .../OptionalNameJohnPerson/validator.txt | 1 + .../OptionalNameJohnPerson/validator.xml | 106 + .../OptionalNameNonamePerson/valid.goreflect | 9 + .../OptionalNameNonamePerson/validator.json | 102 + .../OptionalNameNonamePerson/validator.txt | 1 + .../OptionalNameNonamePerson/validator.xml | 106 + .../invalid.goreflect | 10 + .../OptionalNameRoutinePerson/validator.json | 102 + .../OptionalNameRoutinePerson/validator.txt | 1 + .../OptionalNameRoutinePerson/validator.xml | 106 + .../OptionalNameShakerPerson/valid.goreflect | 22 + .../OptionalNameShakerPerson/validator.json | 102 + .../OptionalNameShakerPerson/validator.txt | 1 + .../OptionalNameShakerPerson/validator.xml | 106 + .../OptionalNameSmithPerson/valid.goreflect | 10 + .../OptionalNameSmithPerson/validator.json | 102 + .../OptionalNameSmithPerson/validator.txt | 1 + .../OptionalNameSmithPerson/validator.xml | 106 + .../OrNameTelephoneDavid/valid.goreflect | 14 + .../OrNameTelephoneDavid/validator.json | 87 + .../OrNameTelephoneDavid/validator.txt | 1 + .../OrNameTelephoneDavid/validator.xml | 91 + .../OrNameTelephoneJohn/valid.goreflect | 10 + .../OrNameTelephoneJohn/validator.json | 87 + .../OrNameTelephoneJohn/validator.txt | 1 + .../OrNameTelephoneJohn/validator.xml | 91 + .../OrNameTelephoneMover/valid.goreflect | 30 + .../OrNameTelephoneMover/validator.json | 87 + .../OrNameTelephoneMover/validator.txt | 1 + .../OrNameTelephoneMover/validator.xml | 91 + .../OrNameTelephoneSmith/invalid.goreflect | 10 + .../OrNameTelephoneSmith/validator.json | 87 + .../OrNameTelephoneSmith/validator.txt | 1 + .../OrNameTelephoneSmith/validator.xml | 91 + .../invalid.goreflect | 14 + .../ProperNotNamePersonDavid/validator.json | 196 + .../ProperNotNamePersonDavid/validator.txt | 3 + .../ProperNotNamePersonDavid/validator.xml | 190 + .../ProperNotNamePersonNoname/valid.goreflect | 9 + .../ProperNotNamePersonNoname/validator.json | 196 + .../ProperNotNamePersonNoname/validator.txt | 3 + .../ProperNotNamePersonNoname/validator.xml | 190 + .../ProperNotNamePersonRobert/valid.goreflect | 10 + .../ProperNotNamePersonRobert/validator.json | 196 + .../ProperNotNamePersonRobert/validator.txt | 3 + .../ProperNotNamePersonRobert/validator.xml | 190 + .../ProperNotNamePersonSmith/valid.goreflect | 10 + .../ProperNotNamePersonSmith/validator.json | 196 + .../ProperNotNamePersonSmith/validator.txt | 3 + .../ProperNotNamePersonSmith/validator.xml | 190 + .../PuddingMilkShakeNotAny1/invalid.goreflect | 14 + .../PuddingMilkShakeNotAny1/validator.json | 621 + .../PuddingMilkShakeNotAny1/validator.txt | 11 + .../PuddingMilkShakeNotAny1/validator.xml | 592 + .../PuddingMilkShakeNotAny2/invalid.goreflect | 14 + .../PuddingMilkShakeNotAny2/validator.json | 621 + .../PuddingMilkShakeNotAny2/validator.txt | 11 + .../PuddingMilkShakeNotAny2/validator.xml | 592 + .../RecursiveElbowBightTurn/invalid.goreflect | 7 + .../RecursiveElbowBightTurn/validator.json | 66 + .../RecursiveElbowBightTurn/validator.txt | 1 + .../RecursiveElbowBightTurn/validator.xml | 68 + .../valid.goreflect | 7 + .../validator.json | 66 + .../RecursiveElbowKnotKnotElbow/validator.txt | 1 + .../RecursiveElbowKnotKnotElbow/validator.xml | 68 + .../goreflect/RecursiveIoUtil/valid.goreflect | 30 + .../goreflect/RecursiveIoUtil/validator.json | 149 + .../goreflect/RecursiveIoUtil/validator.txt | 1 + .../goreflect/RecursiveIoUtil/validator.xml | 152 + .../goreflect/RecursivePath/valid.goreflect | 28 + .../goreflect/RecursivePath/validator.json | 149 + .../goreflect/RecursivePath/validator.txt | 1 + .../goreflect/RecursivePath/validator.xml | 152 + .../RecursiveRuntime/invalid.goreflect | 8 + .../goreflect/RecursiveRuntime/validator.json | 149 + .../goreflect/RecursiveRuntime/validator.txt | 1 + .../goreflect/RecursiveRuntime/validator.xml | 152 + .../RecursiveSyscall/invalid.goreflect | 25 + .../goreflect/RecursiveSyscall/validator.json | 149 + .../goreflect/RecursiveSyscall/validator.txt | 1 + .../goreflect/RecursiveSyscall/validator.xml | 152 + .../RecursiveTurnBightTurn/valid.goreflect | 7 + .../RecursiveTurnBightTurn/validator.json | 66 + .../RecursiveTurnBightTurn/validator.txt | 1 + .../RecursiveTurnBightTurn/validator.xml | 68 + .../invalid.goreflect | 7 + .../RecursiveTurnKnotKnotElbow/validator.json | 66 + .../RecursiveTurnKnotKnotElbow/validator.txt | 1 + .../RecursiveTurnKnotKnotElbow/validator.xml | 68 + .../tests/goreflect/TopTop1/valid.goreflect | 5 + .../tests/goreflect/TopTop1/validator.json | 45 + .../tests/goreflect/TopTop1/validator.txt | 1 + .../tests/goreflect/TopTop1/validator.xml | 47 + .../goreflect/TurfTurf1/invalid.goreflect | 5 + .../tests/goreflect/TurfTurf1/validator.json | 45 + .../tests/goreflect/TurfTurf1/validator.txt | 1 + .../tests/goreflect/TurfTurf1/validator.xml | 47 + .../WrongTypeRobert/invalid.goreflect | 10 + .../goreflect/WrongTypeRobert/validator.json | 62 + .../goreflect/WrongTypeRobert/validator.txt | 1 + .../goreflect/WrongTypeRobert/validator.xml | 62 + validator/tests/json/APocketRoses/valid.json | 7 + .../tests/json/APocketRoses/validator.json | 60 + .../tests/json/APocketRoses/validator.txt | 1 + .../tests/json/APocketRoses/validator.xml | 63 + validator/tests/json/Ab21Any/valid.json | 12 + validator/tests/json/Ab21Any/validator.json | 9 + validator/tests/json/Ab21Any/validator.txt | 1 + validator/tests/json/Ab21Any/validator.xml | 9 + .../Ab21InAnyExceptSaladWorry/invalid.json | 12 + .../Ab21InAnyExceptSaladWorry/validator.json | 93 + .../Ab21InAnyExceptSaladWorry/validator.txt | 1 + .../Ab21InAnyExceptSaladWorry/validator.xml | 96 + .../tests/json/Ab21MagazineFrameA/valid.json | 12 + .../json/Ab21MagazineFrameA/validator.json | 137 + .../json/Ab21MagazineFrameA/validator.txt | 1 + .../json/Ab21MagazineFrameA/validator.xml | 141 + .../Ab21MagazineFrameSingleA/invalid.json | 12 + .../Ab21MagazineFrameSingleA/validator.json | 106 + .../Ab21MagazineFrameSingleA/validator.txt | 1 + .../Ab21MagazineFrameSingleA/validator.xml | 110 + validator/tests/json/Ab21None/invalid.json | 12 + validator/tests/json/Ab21None/validator.json | 22 + validator/tests/json/Ab21None/validator.txt | 1 + validator/tests/json/Ab21None/validator.xml | 22 + .../tests/json/Ab21NotAFieldName/valid.json | 12 + .../json/Ab21NotAFieldName/validator.json | 124 + .../json/Ab21NotAFieldName/validator.txt | 1 + .../json/Ab21NotAFieldName/validator.xml | 127 + validator/tests/json/Ab21Spirit1/valid.json | 12 + .../tests/json/Ab21Spirit1/validator.json | 89 + .../tests/json/Ab21Spirit1/validator.txt | 2 + .../tests/json/Ab21Spirit1/validator.xml | 87 + validator/tests/json/Ab21Spirit2/invalid.json | 12 + .../tests/json/Ab21Spirit2/validator.json | 89 + .../tests/json/Ab21Spirit2/validator.txt | 2 + .../tests/json/Ab21Spirit2/validator.xml | 87 + .../tests/json/AbcPocketRoses/valid.json | 7 + .../tests/json/AbcPocketRoses/validator.json | 118 + .../tests/json/AbcPocketRoses/validator.txt | 1 + .../tests/json/AbcPocketRoses/validator.xml | 125 + validator/tests/json/AndAnyName/valid.json | 14 + .../tests/json/AndAnyName/validator.json | 91 + validator/tests/json/AndAnyName/validator.txt | 1 + validator/tests/json/AndAnyName/validator.xml | 93 + .../json/AndNameTelephoneDavid/valid.json | 14 + .../json/AndNameTelephoneDavid/validator.json | 141 + .../json/AndNameTelephoneDavid/validator.txt | 1 + .../json/AndNameTelephoneDavid/validator.xml | 145 + .../json/AndNameTelephoneJohn/invalid.json | 10 + .../json/AndNameTelephoneJohn/validator.json | 141 + .../json/AndNameTelephoneJohn/validator.txt | 1 + .../json/AndNameTelephoneJohn/validator.xml | 145 + .../json/AndNameTelephoneMover/invalid.json | 30 + .../json/AndNameTelephoneMover/validator.json | 141 + .../json/AndNameTelephoneMover/validator.txt | 1 + .../json/AndNameTelephoneMover/validator.xml | 145 + .../json/AndNameTelephoneSmith/invalid.json | 10 + .../json/AndNameTelephoneSmith/validator.json | 141 + .../json/AndNameTelephoneSmith/validator.txt | 1 + .../json/AndNameTelephoneSmith/validator.xml | 145 + validator/tests/json/BightTurn/invalid.json | 7 + validator/tests/json/BightTurn/validator.json | 59 + validator/tests/json/BightTurn/validator.txt | 1 + validator/tests/json/BightTurn/validator.xml | 61 + .../tests/json/ContextDavid/invalid.json | 14 + .../tests/json/ContextDavid/validator.json | 103 + .../tests/json/ContextDavid/validator.txt | 1 + .../tests/json/ContextDavid/validator.xml | 108 + validator/tests/json/ContextRobert/valid.json | 10 + .../tests/json/ContextRobert/validator.json | 103 + .../tests/json/ContextRobert/validator.txt | 1 + .../tests/json/ContextRobert/validator.xml | 108 + .../tests/json/CorrectTypeRobert/valid.json | 10 + .../json/CorrectTypeRobert/validator.json | 62 + .../json/CorrectTypeRobert/validator.txt | 1 + .../json/CorrectTypeRobert/validator.xml | 62 + .../tests/json/DPocketRoses/invalid.json | 7 + .../tests/json/DPocketRoses/validator.json | 60 + .../tests/json/DPocketRoses/validator.txt | 1 + .../tests/json/DPocketRoses/validator.xml | 63 + validator/tests/json/DeepLeft811/valid.json | 32 + .../tests/json/DeepLeft811/validator.json | 314 + .../tests/json/DeepLeft811/validator.txt | 3 + .../tests/json/DeepLeft811/validator.xml | 320 + .../json/DontErrorGivenWrongType/invalid.json | 9 + .../DontErrorGivenWrongType/validator.json | 94 + .../DontErrorGivenWrongType/validator.txt | 1 + .../DontErrorGivenWrongType/validator.xml | 97 + .../tests/json/EmptyOrNilJohn/invalid.json | 10 + .../tests/json/EmptyOrNilJohn/validator.json | 196 + .../tests/json/EmptyOrNilJohn/validator.txt | 3 + .../tests/json/EmptyOrNilJohn/validator.xml | 190 + .../tests/json/EmptyOrNilNoname/valid.json | 9 + .../json/EmptyOrNilNoname/validator.json | 196 + .../tests/json/EmptyOrNilNoname/validator.txt | 3 + .../tests/json/EmptyOrNilNoname/validator.xml | 190 + .../tests/json/EmptyOrNilSmith/valid.json | 10 + .../tests/json/EmptyOrNilSmith/validator.json | 196 + .../tests/json/EmptyOrNilSmith/validator.txt | 3 + .../tests/json/EmptyOrNilSmith/validator.xml | 190 + .../tests/json/FinalCPocketRoses/valid.json | 7 + .../json/FinalCPocketRoses/validator.json | 60 + .../json/FinalCPocketRoses/validator.txt | 1 + .../json/FinalCPocketRoses/validator.xml | 63 + validator/tests/json/GoBigOr10/valid.json | 1 + validator/tests/json/GoBigOr10/validator.json | 3011 ++++ validator/tests/json/GoBigOr10/validator.txt | 1 + validator/tests/json/GoBigOr10/validator.xml | 3151 ++++ validator/tests/json/GoBigOr5/valid.json | 1 + validator/tests/json/GoBigOr5/validator.json | 3011 ++++ validator/tests/json/GoBigOr5/validator.txt | 1 + validator/tests/json/GoBigOr5/validator.xml | 3151 ++++ validator/tests/json/GoBigOr6/valid.json | 1 + validator/tests/json/GoBigOr6/validator.json | 3011 ++++ validator/tests/json/GoBigOr6/validator.txt | 1 + validator/tests/json/GoBigOr6/validator.xml | 3151 ++++ validator/tests/json/GoBigOr7/valid.json | 1 + validator/tests/json/GoBigOr7/validator.json | 3011 ++++ validator/tests/json/GoBigOr7/validator.txt | 1 + validator/tests/json/GoBigOr7/validator.xml | 3151 ++++ validator/tests/json/GoBigOr8/valid.json | 1 + validator/tests/json/GoBigOr8/validator.json | 3011 ++++ validator/tests/json/GoBigOr8/validator.txt | 1 + validator/tests/json/GoBigOr8/validator.xml | 3151 ++++ validator/tests/json/GoBigOr9/valid.json | 1 + validator/tests/json/GoBigOr9/validator.json | 3011 ++++ validator/tests/json/GoBigOr9/validator.txt | 1 + validator/tests/json/GoBigOr9/validator.xml | 3151 ++++ .../json/HiddenLeftRecursionDavid/valid.json | 14 + .../HiddenLeftRecursionDavid/validator.json | 96 + .../HiddenLeftRecursionDavid/validator.txt | 2 + .../HiddenLeftRecursionDavid/validator.xml | 94 + .../HiddenLeftRecursionRobert/invalid.json | 10 + .../HiddenLeftRecursionRobert/validator.json | 96 + .../HiddenLeftRecursionRobert/validator.txt | 2 + .../HiddenLeftRecursionRobert/validator.xml | 94 + .../tests/json/InSetPersonDavid/invalid.json | 14 + .../json/InSetPersonDavid/validator.json | 89 + .../tests/json/InSetPersonDavid/validator.txt | 1 + .../tests/json/InSetPersonDavid/validator.xml | 90 + .../tests/json/InSetPersonRobert/valid.json | 10 + .../json/InSetPersonRobert/validator.json | 89 + .../json/InSetPersonRobert/validator.txt | 1 + .../json/InSetPersonRobert/validator.xml | 90 + validator/tests/json/KnotKnotElbow/valid.json | 7 + .../tests/json/KnotKnotElbow/validator.json | 59 + .../tests/json/KnotKnotElbow/validator.txt | 1 + .../tests/json/KnotKnotElbow/validator.xml | 61 + .../LatentSimplificationFalse/invalid.json | 12 + .../LatentSimplificationFalse/validator.json | 727 + .../LatentSimplificationFalse/validator.txt | 1 + .../LatentSimplificationFalse/validator.xml | 754 + .../json/LatentSimplificationTrue/valid.json | 12 + .../LatentSimplificationTrue/validator.json | 727 + .../LatentSimplificationTrue/validator.txt | 1 + .../LatentSimplificationTrue/validator.xml | 754 + .../tests/json/LeftRecursionDavid/valid.json | 14 + .../json/LeftRecursionDavid/validator.json | 72 + .../json/LeftRecursionDavid/validator.txt | 1 + .../json/LeftRecursionDavid/validator.xml | 74 + .../json/LeftRecursionRobert/invalid.json | 10 + .../json/LeftRecursionRobert/validator.json | 72 + .../json/LeftRecursionRobert/validator.txt | 1 + .../json/LeftRecursionRobert/validator.xml | 74 + validator/tests/json/LenNameJohn/invalid.json | 10 + .../tests/json/LenNameJohn/validator.json | 98 + .../tests/json/LenNameJohn/validator.txt | 1 + .../tests/json/LenNameJohn/validator.xml | 97 + .../tests/json/LenNameNoname/invalid.json | 9 + .../tests/json/LenNameNoname/validator.json | 98 + .../tests/json/LenNameNoname/validator.txt | 1 + .../tests/json/LenNameNoname/validator.xml | 97 + validator/tests/json/LenNameSmith/valid.json | 10 + .../tests/json/LenNameSmith/validator.json | 98 + .../tests/json/LenNameSmith/validator.txt | 1 + .../tests/json/LenNameSmith/validator.xml | 97 + .../json/ListIndexAddressMover/invalid.json | 30 + .../json/ListIndexAddressMover/validator.json | 172 + .../json/ListIndexAddressMover/validator.txt | 1 + .../json/ListIndexAddressMover/validator.xml | 177 + .../json/ListIndexAddressRoutine/invalid.json | 10 + .../ListIndexAddressRoutine/validator.json | 172 + .../ListIndexAddressRoutine/validator.txt | 1 + .../ListIndexAddressRoutine/validator.xml | 177 + .../json/ListIndexAddressShaker/valid.json | 22 + .../ListIndexAddressShaker/validator.json | 172 + .../json/ListIndexAddressShaker/validator.txt | 1 + .../json/ListIndexAddressShaker/validator.xml | 177 + .../json/ListOfTelephonesDavid/valid.json | 14 + .../json/ListOfTelephonesDavid/validator.json | 131 + .../json/ListOfTelephonesDavid/validator.txt | 1 + .../json/ListOfTelephonesDavid/validator.xml | 130 + .../json/ListOfTelephonesRoutine/invalid.json | 10 + .../ListOfTelephonesRoutine/validator.json | 131 + .../ListOfTelephonesRoutine/validator.txt | 1 + .../ListOfTelephonesRoutine/validator.xml | 130 + .../json/ListOfTelephonesShaker/valid.json | 22 + .../ListOfTelephonesShaker/validator.json | 131 + .../json/ListOfTelephonesShaker/validator.txt | 1 + .../json/ListOfTelephonesShaker/validator.xml | 130 + .../tests/json/NaiveNotNameDavid/invalid.json | 14 + .../json/NaiveNotNameDavid/validator.json | 98 + .../json/NaiveNotNameDavid/validator.txt | 1 + .../json/NaiveNotNameDavid/validator.xml | 97 + .../json/NaiveNotNameNoname/invalid.json | 9 + .../json/NaiveNotNameNoname/validator.json | 98 + .../json/NaiveNotNameNoname/validator.txt | 1 + .../json/NaiveNotNameNoname/validator.xml | 97 + .../tests/json/NaiveNotNameRobert/valid.json | 10 + .../json/NaiveNotNameRobert/validator.json | 98 + .../json/NaiveNotNameRobert/validator.txt | 1 + .../json/NaiveNotNameRobert/validator.xml | 97 + .../tests/json/NaiveNotNameSmith/valid.json | 10 + .../json/NaiveNotNameSmith/validator.json | 98 + .../json/NaiveNotNameSmith/validator.txt | 1 + .../json/NaiveNotNameSmith/validator.xml | 97 + .../tests/json/NextAPocketRoses/invalid.json | 7 + .../json/NextAPocketRoses/validator.json | 118 + .../tests/json/NextAPocketRoses/validator.txt | 1 + .../tests/json/NextAPocketRoses/validator.xml | 125 + validator/tests/json/NilNameJohn/invalid.json | 10 + .../tests/json/NilNameJohn/validator.json | 41 + .../tests/json/NilNameJohn/validator.txt | 1 + .../tests/json/NilNameJohn/validator.xml | 42 + validator/tests/json/NilNameNoname/valid.json | 9 + .../tests/json/NilNameNoname/validator.json | 41 + .../tests/json/NilNameNoname/validator.txt | 1 + .../tests/json/NilNameNoname/validator.xml | 42 + .../tests/json/NilNameSmith/invalid.json | 10 + .../tests/json/NilNameSmith/validator.json | 41 + .../tests/json/NilNameSmith/validator.txt | 1 + .../tests/json/NilNameSmith/validator.xml | 42 + validator/tests/json/OneHash811/invalid.json | 9 + .../tests/json/OneHash811/validator.json | 314 + validator/tests/json/OneHash811/validator.txt | 3 + validator/tests/json/OneHash811/validator.xml | 320 + .../OneLeftAndTwoRightHashes811/valid.json | 23 + .../validator.json | 314 + .../OneLeftAndTwoRightHashes811/validator.txt | 3 + .../OneLeftAndTwoRightHashes811/validator.xml | 320 + .../OptionalAddressDavidPerson/valid.json | 14 + .../OptionalAddressDavidPerson/validator.json | 178 + .../OptionalAddressDavidPerson/validator.txt | 1 + .../OptionalAddressDavidPerson/validator.xml | 184 + .../OptionalAddressMoverPerson/invalid.json | 30 + .../OptionalAddressMoverPerson/validator.json | 178 + .../OptionalAddressMoverPerson/validator.txt | 1 + .../OptionalAddressMoverPerson/validator.xml | 184 + .../OptionalAddressRobertPerson/valid.json | 10 + .../validator.json | 178 + .../OptionalAddressRobertPerson/validator.txt | 1 + .../OptionalAddressRobertPerson/validator.xml | 184 + .../json/OptionalNameJohnPerson/invalid.json | 10 + .../OptionalNameJohnPerson/validator.json | 102 + .../json/OptionalNameJohnPerson/validator.txt | 1 + .../json/OptionalNameJohnPerson/validator.xml | 106 + .../json/OptionalNameNonamePerson/valid.json | 9 + .../OptionalNameNonamePerson/validator.json | 102 + .../OptionalNameNonamePerson/validator.txt | 1 + .../OptionalNameNonamePerson/validator.xml | 106 + .../OptionalNameRoutinePerson/invalid.json | 10 + .../OptionalNameRoutinePerson/validator.json | 102 + .../OptionalNameRoutinePerson/validator.txt | 1 + .../OptionalNameRoutinePerson/validator.xml | 106 + .../json/OptionalNameShakerPerson/valid.json | 22 + .../OptionalNameShakerPerson/validator.json | 102 + .../OptionalNameShakerPerson/validator.txt | 1 + .../OptionalNameShakerPerson/validator.xml | 106 + .../json/OptionalNameSmithPerson/valid.json | 10 + .../OptionalNameSmithPerson/validator.json | 102 + .../OptionalNameSmithPerson/validator.txt | 1 + .../OptionalNameSmithPerson/validator.xml | 106 + .../json/OrNameTelephoneDavid/valid.json | 14 + .../json/OrNameTelephoneDavid/validator.json | 87 + .../json/OrNameTelephoneDavid/validator.txt | 1 + .../json/OrNameTelephoneDavid/validator.xml | 91 + .../tests/json/OrNameTelephoneJohn/valid.json | 10 + .../json/OrNameTelephoneJohn/validator.json | 87 + .../json/OrNameTelephoneJohn/validator.txt | 1 + .../json/OrNameTelephoneJohn/validator.xml | 91 + .../json/OrNameTelephoneMover/valid.json | 30 + .../json/OrNameTelephoneMover/validator.json | 87 + .../json/OrNameTelephoneMover/validator.txt | 1 + .../json/OrNameTelephoneMover/validator.xml | 91 + .../json/OrNameTelephoneSmith/invalid.json | 10 + .../json/OrNameTelephoneSmith/validator.json | 87 + .../json/OrNameTelephoneSmith/validator.txt | 1 + .../json/OrNameTelephoneSmith/validator.xml | 91 + validator/tests/json/Page194abcd/valid.json | 6 + .../tests/json/Page194abcd/validator.json | 117 + .../tests/json/Page194abcd/validator.txt | 1 + .../tests/json/Page194abcd/validator.xml | 121 + validator/tests/json/Page194abdc/invalid.json | 6 + .../tests/json/Page194abdc/validator.json | 117 + .../tests/json/Page194abdc/validator.txt | 1 + .../tests/json/Page194abdc/validator.xml | 121 + validator/tests/json/Page194acbd/valid.json | 6 + .../tests/json/Page194acbd/validator.json | 117 + .../tests/json/Page194acbd/validator.txt | 1 + .../tests/json/Page194acbd/validator.xml | 121 + validator/tests/json/Page194acdb/valid.json | 6 + .../tests/json/Page194acdb/validator.json | 117 + .../tests/json/Page194acdb/validator.txt | 1 + .../tests/json/Page194acdb/validator.xml | 121 + validator/tests/json/Page194adbc/invalid.json | 6 + .../tests/json/Page194adbc/validator.json | 117 + .../tests/json/Page194adbc/validator.txt | 1 + .../tests/json/Page194adbc/validator.xml | 121 + validator/tests/json/Page194adcb/invalid.json | 6 + .../tests/json/Page194adcb/validator.json | 117 + .../tests/json/Page194adcb/validator.txt | 1 + .../tests/json/Page194adcb/validator.xml | 121 + validator/tests/json/Page194bacd/invalid.json | 6 + .../tests/json/Page194bacd/validator.json | 117 + .../tests/json/Page194bacd/validator.txt | 1 + .../tests/json/Page194bacd/validator.xml | 121 + validator/tests/json/Page194badc/invalid.json | 6 + .../tests/json/Page194badc/validator.json | 117 + .../tests/json/Page194badc/validator.txt | 1 + .../tests/json/Page194badc/validator.xml | 121 + validator/tests/json/Page194bcad/invalid.json | 6 + .../tests/json/Page194bcad/validator.json | 117 + .../tests/json/Page194bcad/validator.txt | 1 + .../tests/json/Page194bcad/validator.xml | 121 + validator/tests/json/Page194bcda/invalid.json | 6 + .../tests/json/Page194bcda/validator.json | 117 + .../tests/json/Page194bcda/validator.txt | 1 + .../tests/json/Page194bcda/validator.xml | 121 + validator/tests/json/Page194bdac/invalid.json | 6 + .../tests/json/Page194bdac/validator.json | 117 + .../tests/json/Page194bdac/validator.txt | 1 + .../tests/json/Page194bdac/validator.xml | 121 + validator/tests/json/Page194bdca/invalid.json | 6 + .../tests/json/Page194bdca/validator.json | 117 + .../tests/json/Page194bdca/validator.txt | 1 + .../tests/json/Page194bdca/validator.xml | 121 + validator/tests/json/Page194cabd/valid.json | 6 + .../tests/json/Page194cabd/validator.json | 117 + .../tests/json/Page194cabd/validator.txt | 1 + .../tests/json/Page194cabd/validator.xml | 121 + validator/tests/json/Page194cadb/valid.json | 6 + .../tests/json/Page194cadb/validator.json | 117 + .../tests/json/Page194cadb/validator.txt | 1 + .../tests/json/Page194cadb/validator.xml | 121 + validator/tests/json/Page194cbad/invalid.json | 6 + .../tests/json/Page194cbad/validator.json | 117 + .../tests/json/Page194cbad/validator.txt | 1 + .../tests/json/Page194cbad/validator.xml | 121 + validator/tests/json/Page194cbda/invalid.json | 6 + .../tests/json/Page194cbda/validator.json | 117 + .../tests/json/Page194cbda/validator.txt | 1 + .../tests/json/Page194cbda/validator.xml | 121 + validator/tests/json/Page194cdab/valid.json | 6 + .../tests/json/Page194cdab/validator.json | 117 + .../tests/json/Page194cdab/validator.txt | 1 + .../tests/json/Page194cdab/validator.xml | 121 + validator/tests/json/Page194cdba/invalid.json | 6 + .../tests/json/Page194cdba/validator.json | 117 + .../tests/json/Page194cdba/validator.txt | 1 + .../tests/json/Page194cdba/validator.xml | 121 + validator/tests/json/Page194dabc/invalid.json | 6 + .../tests/json/Page194dabc/validator.json | 117 + .../tests/json/Page194dabc/validator.txt | 1 + .../tests/json/Page194dabc/validator.xml | 121 + validator/tests/json/Page194dacb/invalid.json | 6 + .../tests/json/Page194dacb/validator.json | 117 + .../tests/json/Page194dacb/validator.txt | 1 + .../tests/json/Page194dacb/validator.xml | 121 + validator/tests/json/Page194dbac/invalid.json | 6 + .../tests/json/Page194dbac/validator.json | 117 + .../tests/json/Page194dbac/validator.txt | 1 + .../tests/json/Page194dbac/validator.xml | 121 + validator/tests/json/Page194dbca/invalid.json | 6 + .../tests/json/Page194dbca/validator.json | 117 + .../tests/json/Page194dbca/validator.txt | 1 + .../tests/json/Page194dbca/validator.xml | 121 + validator/tests/json/Page194dcab/invalid.json | 6 + .../tests/json/Page194dcab/validator.json | 117 + .../tests/json/Page194dcab/validator.txt | 1 + .../tests/json/Page194dcab/validator.xml | 121 + validator/tests/json/Page194dcba/invalid.json | 6 + .../tests/json/Page194dcba/validator.json | 117 + .../tests/json/Page194dcba/validator.txt | 1 + .../tests/json/Page194dcba/validator.xml | 121 + .../tests/json/PlaygroundFalse/invalid.json | 42 + .../tests/json/PlaygroundFalse/validator.json | 506 + .../tests/json/PlaygroundFalse/validator.txt | 8 + .../tests/json/PlaygroundFalse/validator.xml | 465 + .../tests/json/PlaygroundTrue/valid.json | 42 + .../tests/json/PlaygroundTrue/validator.json | 506 + .../tests/json/PlaygroundTrue/validator.txt | 8 + .../tests/json/PlaygroundTrue/validator.xml | 465 + .../ProperNotNamePersonDavid/invalid.json | 14 + .../ProperNotNamePersonDavid/validator.json | 196 + .../ProperNotNamePersonDavid/validator.txt | 3 + .../ProperNotNamePersonDavid/validator.xml | 190 + .../json/ProperNotNamePersonNoname/valid.json | 9 + .../ProperNotNamePersonNoname/validator.json | 196 + .../ProperNotNamePersonNoname/validator.txt | 3 + .../ProperNotNamePersonNoname/validator.xml | 190 + .../json/ProperNotNamePersonRobert/valid.json | 10 + .../ProperNotNamePersonRobert/validator.json | 196 + .../ProperNotNamePersonRobert/validator.txt | 3 + .../ProperNotNamePersonRobert/validator.xml | 190 + .../json/ProperNotNamePersonSmith/valid.json | 10 + .../ProperNotNamePersonSmith/validator.json | 196 + .../ProperNotNamePersonSmith/validator.txt | 3 + .../ProperNotNamePersonSmith/validator.xml | 190 + .../json/PuddingMilkShakeNotAny1/invalid.json | 14 + .../PuddingMilkShakeNotAny1/validator.json | 621 + .../PuddingMilkShakeNotAny1/validator.txt | 11 + .../PuddingMilkShakeNotAny1/validator.xml | 592 + .../json/PuddingMilkShakeNotAny2/invalid.json | 14 + .../PuddingMilkShakeNotAny2/validator.json | 621 + .../PuddingMilkShakeNotAny2/validator.txt | 11 + .../PuddingMilkShakeNotAny2/validator.xml | 592 + .../json/RecursiveElbowBightTurn/invalid.json | 7 + .../RecursiveElbowBightTurn/validator.json | 66 + .../RecursiveElbowBightTurn/validator.txt | 1 + .../RecursiveElbowBightTurn/validator.xml | 68 + .../RecursiveElbowKnotKnotElbow/valid.json | 7 + .../validator.json | 66 + .../RecursiveElbowKnotKnotElbow/validator.txt | 1 + .../RecursiveElbowKnotKnotElbow/validator.xml | 68 + .../tests/json/RecursiveIoUtil/valid.json | 30 + .../tests/json/RecursiveIoUtil/validator.json | 149 + .../tests/json/RecursiveIoUtil/validator.txt | 1 + .../tests/json/RecursiveIoUtil/validator.xml | 152 + validator/tests/json/RecursivePath/valid.json | 28 + .../tests/json/RecursivePath/validator.json | 149 + .../tests/json/RecursivePath/validator.txt | 1 + .../tests/json/RecursivePath/validator.xml | 152 + .../tests/json/RecursiveRuntime/invalid.json | 8 + .../json/RecursiveRuntime/validator.json | 149 + .../tests/json/RecursiveRuntime/validator.txt | 1 + .../tests/json/RecursiveRuntime/validator.xml | 152 + .../tests/json/RecursiveSyscall/invalid.json | 25 + .../json/RecursiveSyscall/validator.json | 149 + .../tests/json/RecursiveSyscall/validator.txt | 1 + .../tests/json/RecursiveSyscall/validator.xml | 152 + .../json/RecursiveTurnBightTurn/valid.json | 7 + .../RecursiveTurnBightTurn/validator.json | 66 + .../json/RecursiveTurnBightTurn/validator.txt | 1 + .../json/RecursiveTurnBightTurn/validator.xml | 68 + .../RecursiveTurnKnotKnotElbow/invalid.json | 7 + .../RecursiveTurnKnotKnotElbow/validator.json | 66 + .../RecursiveTurnKnotKnotElbow/validator.txt | 1 + .../RecursiveTurnKnotKnotElbow/validator.xml | 68 + validator/tests/json/TopTop1/valid.json | 5 + validator/tests/json/TopTop1/validator.json | 45 + validator/tests/json/TopTop1/validator.txt | 1 + validator/tests/json/TopTop1/validator.xml | 47 + validator/tests/json/TurfTurf1/invalid.json | 5 + validator/tests/json/TurfTurf1/validator.json | 45 + validator/tests/json/TurfTurf1/validator.txt | 1 + validator/tests/json/TurfTurf1/validator.xml | 47 + validator/tests/json/TwoHashes811/valid.json | 14 + .../tests/json/TwoHashes811/validator.json | 314 + .../tests/json/TwoHashes811/validator.txt | 3 + .../tests/json/TwoHashes811/validator.xml | 320 + .../TwoLeftAndOneRightHashes811/valid.json | 23 + .../validator.json | 314 + .../TwoLeftAndOneRightHashes811/validator.txt | 3 + .../TwoLeftAndOneRightHashes811/validator.xml | 320 + .../tests/json/WrongTypeRobert/invalid.json | 10 + .../tests/json/WrongTypeRobert/validator.json | 62 + .../tests/json/WrongTypeRobert/validator.txt | 1 + .../tests/json/WrongTypeRobert/validator.xml | 62 + .../valid.main.PocketRoses.desc.pb | 1 + .../tests/pb/APocketRoses/validator.json | 60 + validator/tests/pb/APocketRoses/validator.txt | 1 + validator/tests/pb/APocketRoses/validator.xml | 63 + .../pb/Ab21Any/valid.main.FinanceJudo.desc.pb | 3 + validator/tests/pb/Ab21Any/validator.json | 9 + validator/tests/pb/Ab21Any/validator.txt | 1 + validator/tests/pb/Ab21Any/validator.xml | 9 + .../invalid.main.FinanceJudo.desc.pb | 3 + .../Ab21InAnyExceptSaladWorry/validator.json | 93 + .../Ab21InAnyExceptSaladWorry/validator.txt | 1 + .../Ab21InAnyExceptSaladWorry/validator.xml | 96 + .../valid.main.FinanceJudo.desc.pb | 3 + .../pb/Ab21MagazineFrameA/validator.json | 137 + .../tests/pb/Ab21MagazineFrameA/validator.txt | 1 + .../tests/pb/Ab21MagazineFrameA/validator.xml | 141 + .../invalid.main.FinanceJudo.desc.pb | 3 + .../Ab21MagazineFrameSingleA/validator.json | 106 + .../pb/Ab21MagazineFrameSingleA/validator.txt | 1 + .../pb/Ab21MagazineFrameSingleA/validator.xml | 110 + .../Ab21None/invalid.main.FinanceJudo.desc.pb | 3 + validator/tests/pb/Ab21None/validator.json | 22 + validator/tests/pb/Ab21None/validator.txt | 1 + validator/tests/pb/Ab21None/validator.xml | 22 + .../valid.main.FinanceJudo.desc.pb | 3 + .../tests/pb/Ab21NotAFieldName/validator.json | 124 + .../tests/pb/Ab21NotAFieldName/validator.txt | 1 + .../tests/pb/Ab21NotAFieldName/validator.xml | 127 + .../valid.main.FinanceJudo.desc.pb | 3 + validator/tests/pb/Ab21Spirit1/validator.json | 89 + validator/tests/pb/Ab21Spirit1/validator.txt | 2 + validator/tests/pb/Ab21Spirit1/validator.xml | 87 + .../invalid.main.FinanceJudo.desc.pb | 3 + validator/tests/pb/Ab21Spirit2/validator.json | 89 + validator/tests/pb/Ab21Spirit2/validator.txt | 2 + validator/tests/pb/Ab21Spirit2/validator.xml | 87 + .../valid.main.PocketRoses.desc.pb | 1 + .../tests/pb/AbcPocketRoses/validator.json | 118 + .../tests/pb/AbcPocketRoses/validator.txt | 1 + .../tests/pb/AbcPocketRoses/validator.xml | 125 + .../pb/AndAnyName/valid.main.Person.desc.pb | 4 + validator/tests/pb/AndAnyName/validator.json | 91 + validator/tests/pb/AndAnyName/validator.txt | 1 + validator/tests/pb/AndAnyName/validator.xml | 93 + .../valid.main.Person.desc.pb | 4 + .../pb/AndNameTelephoneDavid/validator.json | 141 + .../pb/AndNameTelephoneDavid/validator.txt | 1 + .../pb/AndNameTelephoneDavid/validator.xml | 145 + .../invalid.main.Person.desc.pb | 4 + .../pb/AndNameTelephoneJohn/validator.json | 141 + .../pb/AndNameTelephoneJohn/validator.txt | 1 + .../pb/AndNameTelephoneJohn/validator.xml | 145 + .../invalid.main.Person.desc.pb | 8 + .../pb/AndNameTelephoneMover/validator.json | 141 + .../pb/AndNameTelephoneMover/validator.txt | 1 + .../pb/AndNameTelephoneMover/validator.xml | 145 + .../invalid.main.Person.desc.pb | Bin 0 -> 30 bytes .../pb/AndNameTelephoneSmith/validator.json | 141 + .../pb/AndNameTelephoneSmith/validator.txt | 1 + .../pb/AndNameTelephoneSmith/validator.xml | 145 + .../valid.main.BananaTuple.desc.pb | Bin 0 -> 152 bytes .../tests/pb/BananaLargeMatch/validator.json | 12494 +++++++++++++++ .../tests/pb/BananaLargeMatch/validator.txt | 1 + .../tests/pb/BananaLargeMatch/validator.xml | 12641 ++++++++++++++++ .../valid.main.BananaTuple.desc.pb | Bin 0 -> 66 bytes .../pb/BananaLarger800Match/validator.txt | 1 + .../valid.main.PuddingMilkshake.desc.pb | 4 + .../validator.json | 247 + .../validator.txt | 1 + .../validator.xml | 254 + .../pb/BightTurn/invalid.main.Knot.desc.pb | 2 + validator/tests/pb/BightTurn/validator.json | 59 + validator/tests/pb/BightTurn/validator.txt | 1 + validator/tests/pb/BightTurn/validator.xml | 61 + .../valid.main.PuddingMilkshake.desc.pb | 3 + .../tests/pb/BridgePepper/validator.json | 208 + validator/tests/pb/BridgePepper/validator.txt | 1 + validator/tests/pb/BridgePepper/validator.xml | 213 + .../ContextDavid/invalid.main.Person.desc.pb | 4 + .../tests/pb/ContextDavid/validator.json | 103 + validator/tests/pb/ContextDavid/validator.txt | 1 + validator/tests/pb/ContextDavid/validator.xml | 108 + .../ContextRobert/valid.main.Person.desc.pb | 3 + .../tests/pb/ContextRobert/validator.json | 103 + .../tests/pb/ContextRobert/validator.txt | 1 + .../tests/pb/ContextRobert/validator.xml | 108 + .../valid.main.Person.desc.pb | 3 + .../tests/pb/CorrectTypeRobert/validator.json | 62 + .../tests/pb/CorrectTypeRobert/validator.txt | 1 + .../tests/pb/CorrectTypeRobert/validator.xml | 62 + .../invalid.main.PocketRoses.desc.pb | 1 + .../tests/pb/DPocketRoses/validator.json | 60 + validator/tests/pb/DPocketRoses/validator.txt | 1 + validator/tests/pb/DPocketRoses/validator.xml | 63 + .../invalid.main.Person.desc.pb | 3 + .../pb/DontErrorGivenWrongType/validator.json | 94 + .../pb/DontErrorGivenWrongType/validator.txt | 1 + .../pb/DontErrorGivenWrongType/validator.xml | 97 + .../invalid.main.Person.desc.pb | 4 + .../tests/pb/EmptyOrNilJohn/validator.json | 196 + .../tests/pb/EmptyOrNilJohn/validator.txt | 3 + .../tests/pb/EmptyOrNilJohn/validator.xml | 190 + .../valid.main.Person.desc.pb | 3 + .../tests/pb/EmptyOrNilNoname/validator.json | 196 + .../tests/pb/EmptyOrNilNoname/validator.txt | 3 + .../tests/pb/EmptyOrNilNoname/validator.xml | 190 + .../EmptyOrNilSmith/valid.main.Person.desc.pb | Bin 0 -> 30 bytes .../tests/pb/EmptyOrNilSmith/validator.json | 196 + .../tests/pb/EmptyOrNilSmith/validator.txt | 3 + .../tests/pb/EmptyOrNilSmith/validator.xml | 190 + .../valid.main.PocketRoses.desc.pb | 1 + .../tests/pb/FinalCPocketRoses/validator.json | 60 + .../tests/pb/FinalCPocketRoses/validator.txt | 1 + .../tests/pb/FinalCPocketRoses/validator.xml | 63 + .../valid.main.Person.desc.pb | 4 + .../HiddenLeftRecursionDavid/validator.json | 96 + .../pb/HiddenLeftRecursionDavid/validator.txt | 2 + .../pb/HiddenLeftRecursionDavid/validator.xml | 94 + .../invalid.main.Person.desc.pb | 3 + .../HiddenLeftRecursionRobert/validator.json | 96 + .../HiddenLeftRecursionRobert/validator.txt | 2 + .../HiddenLeftRecursionRobert/validator.xml | 94 + .../invalid.main.Person.desc.pb | 4 + .../tests/pb/InSetPersonDavid/validator.json | 89 + .../tests/pb/InSetPersonDavid/validator.txt | 1 + .../tests/pb/InSetPersonDavid/validator.xml | 90 + .../valid.main.Person.desc.pb | 3 + .../tests/pb/InSetPersonRobert/validator.json | 89 + .../tests/pb/InSetPersonRobert/validator.txt | 1 + .../tests/pb/InSetPersonRobert/validator.xml | 90 + .../pb/KnotKnotElbow/valid.main.Knot.desc.pb | 1 + .../tests/pb/KnotKnotElbow/validator.json | 59 + .../tests/pb/KnotKnotElbow/validator.txt | 1 + .../tests/pb/KnotKnotElbow/validator.xml | 61 + .../invalid.main.TypewriterPrison.desc.pb | Bin 0 -> 12 bytes .../LatentSimplificationFalse/validator.json | 727 + .../LatentSimplificationFalse/validator.txt | 1 + .../LatentSimplificationFalse/validator.xml | 754 + .../valid.main.TypewriterPrison.desc.pb | 2 + .../LatentSimplificationTrue/validator.json | 727 + .../pb/LatentSimplificationTrue/validator.txt | 1 + .../pb/LatentSimplificationTrue/validator.xml | 754 + .../valid.main.Person.desc.pb | 4 + .../pb/LeftRecursionDavid/validator.json | 72 + .../tests/pb/LeftRecursionDavid/validator.txt | 1 + .../tests/pb/LeftRecursionDavid/validator.xml | 74 + .../invalid.main.Person.desc.pb | 3 + .../pb/LeftRecursionRobert/validator.json | 72 + .../pb/LeftRecursionRobert/validator.txt | 1 + .../pb/LeftRecursionRobert/validator.xml | 74 + .../LenNameJohn/invalid.main.Person.desc.pb | 4 + validator/tests/pb/LenNameJohn/validator.json | 98 + validator/tests/pb/LenNameJohn/validator.txt | 1 + validator/tests/pb/LenNameJohn/validator.xml | 97 + .../LenNameNoname/invalid.main.Person.desc.pb | 3 + .../tests/pb/LenNameNoname/validator.json | 98 + .../tests/pb/LenNameNoname/validator.txt | 1 + .../tests/pb/LenNameNoname/validator.xml | 97 + .../pb/LenNameSmith/valid.main.Person.desc.pb | Bin 0 -> 30 bytes .../tests/pb/LenNameSmith/validator.json | 98 + validator/tests/pb/LenNameSmith/validator.txt | 1 + validator/tests/pb/LenNameSmith/validator.xml | 97 + .../invalid.main.Person.desc.pb | 8 + .../pb/ListIndexAddressMover/validator.json | 172 + .../pb/ListIndexAddressMover/validator.txt | 1 + .../pb/ListIndexAddressMover/validator.xml | 177 + .../invalid.main.Person.desc.pb | 4 + .../pb/ListIndexAddressRoutine/validator.json | 172 + .../pb/ListIndexAddressRoutine/validator.txt | 1 + .../pb/ListIndexAddressRoutine/validator.xml | 177 + .../valid.main.Person.desc.pb | 7 + .../pb/ListIndexAddressShaker/validator.json | 172 + .../pb/ListIndexAddressShaker/validator.txt | 1 + .../pb/ListIndexAddressShaker/validator.xml | 177 + .../valid.main.Person.desc.pb | 4 + .../pb/ListOfTelephonesDavid/validator.json | 131 + .../pb/ListOfTelephonesDavid/validator.txt | 1 + .../pb/ListOfTelephonesDavid/validator.xml | 130 + .../invalid.main.Person.desc.pb | 4 + .../pb/ListOfTelephonesRoutine/validator.json | 131 + .../pb/ListOfTelephonesRoutine/validator.txt | 1 + .../pb/ListOfTelephonesRoutine/validator.xml | 130 + .../valid.main.Person.desc.pb | 7 + .../pb/ListOfTelephonesShaker/validator.json | 131 + .../pb/ListOfTelephonesShaker/validator.txt | 1 + .../pb/ListOfTelephonesShaker/validator.xml | 130 + .../invalid.main.Person.desc.pb | 4 + .../tests/pb/NaiveNotNameDavid/validator.json | 98 + .../tests/pb/NaiveNotNameDavid/validator.txt | 1 + .../tests/pb/NaiveNotNameDavid/validator.xml | 97 + .../invalid.main.Person.desc.pb | 3 + .../pb/NaiveNotNameNoname/validator.json | 98 + .../tests/pb/NaiveNotNameNoname/validator.txt | 1 + .../tests/pb/NaiveNotNameNoname/validator.xml | 97 + .../valid.main.Person.desc.pb | 3 + .../pb/NaiveNotNameRobert/validator.json | 98 + .../tests/pb/NaiveNotNameRobert/validator.txt | 1 + .../tests/pb/NaiveNotNameRobert/validator.xml | 97 + .../valid.main.Person.desc.pb | Bin 0 -> 30 bytes .../tests/pb/NaiveNotNameSmith/validator.json | 98 + .../tests/pb/NaiveNotNameSmith/validator.txt | 1 + .../tests/pb/NaiveNotNameSmith/validator.xml | 97 + .../invalid.main.PocketRoses.desc.pb | 1 + .../tests/pb/NextAPocketRoses/validator.json | 118 + .../tests/pb/NextAPocketRoses/validator.txt | 1 + .../tests/pb/NextAPocketRoses/validator.xml | 125 + .../NilNameJohn/invalid.main.Person.desc.pb | 4 + validator/tests/pb/NilNameJohn/validator.json | 41 + validator/tests/pb/NilNameJohn/validator.txt | 1 + validator/tests/pb/NilNameJohn/validator.xml | 42 + .../NilNameNoname/valid.main.Person.desc.pb | 3 + .../tests/pb/NilNameNoname/validator.json | 41 + .../tests/pb/NilNameNoname/validator.txt | 1 + .../tests/pb/NilNameNoname/validator.xml | 42 + .../NilNameSmith/invalid.main.Person.desc.pb | Bin 0 -> 30 bytes .../tests/pb/NilNameSmith/validator.json | 41 + validator/tests/pb/NilNameSmith/validator.txt | 1 + validator/tests/pb/NilNameSmith/validator.xml | 42 + .../valid.main.Person.desc.pb | 4 + .../OptionalAddressDavidPerson/validator.json | 178 + .../OptionalAddressDavidPerson/validator.txt | 1 + .../OptionalAddressDavidPerson/validator.xml | 184 + .../invalid.main.Person.desc.pb | 8 + .../OptionalAddressMoverPerson/validator.json | 178 + .../OptionalAddressMoverPerson/validator.txt | 1 + .../OptionalAddressMoverPerson/validator.xml | 184 + .../valid.main.Person.desc.pb | 3 + .../validator.json | 178 + .../OptionalAddressRobertPerson/validator.txt | 1 + .../OptionalAddressRobertPerson/validator.xml | 184 + .../invalid.main.Person.desc.pb | 4 + .../pb/OptionalNameJohnPerson/validator.json | 102 + .../pb/OptionalNameJohnPerson/validator.txt | 1 + .../pb/OptionalNameJohnPerson/validator.xml | 106 + .../valid.main.Person.desc.pb | 3 + .../OptionalNameNonamePerson/validator.json | 102 + .../pb/OptionalNameNonamePerson/validator.txt | 1 + .../pb/OptionalNameNonamePerson/validator.xml | 106 + .../invalid.main.Person.desc.pb | 4 + .../OptionalNameRoutinePerson/validator.json | 102 + .../OptionalNameRoutinePerson/validator.txt | 1 + .../OptionalNameRoutinePerson/validator.xml | 106 + .../valid.main.Person.desc.pb | 7 + .../OptionalNameShakerPerson/validator.json | 102 + .../pb/OptionalNameShakerPerson/validator.txt | 1 + .../pb/OptionalNameShakerPerson/validator.xml | 106 + .../valid.main.Person.desc.pb | Bin 0 -> 30 bytes .../pb/OptionalNameSmithPerson/validator.json | 102 + .../pb/OptionalNameSmithPerson/validator.txt | 1 + .../pb/OptionalNameSmithPerson/validator.xml | 106 + .../valid.main.Person.desc.pb | 4 + .../pb/OrNameTelephoneDavid/validator.json | 87 + .../pb/OrNameTelephoneDavid/validator.txt | 1 + .../pb/OrNameTelephoneDavid/validator.xml | 91 + .../valid.main.Person.desc.pb | 4 + .../pb/OrNameTelephoneJohn/validator.json | 87 + .../pb/OrNameTelephoneJohn/validator.txt | 1 + .../pb/OrNameTelephoneJohn/validator.xml | 91 + .../valid.main.Person.desc.pb | 8 + .../pb/OrNameTelephoneMover/validator.json | 87 + .../pb/OrNameTelephoneMover/validator.txt | 1 + .../pb/OrNameTelephoneMover/validator.xml | 91 + .../invalid.main.Person.desc.pb | Bin 0 -> 30 bytes .../pb/OrNameTelephoneSmith/validator.json | 87 + .../pb/OrNameTelephoneSmith/validator.txt | 1 + .../pb/OrNameTelephoneSmith/validator.xml | 91 + .../invalid.main.Person.desc.pb | 4 + .../ProperNotNamePersonDavid/validator.json | 196 + .../pb/ProperNotNamePersonDavid/validator.txt | 3 + .../pb/ProperNotNamePersonDavid/validator.xml | 190 + .../valid.main.Person.desc.pb | 3 + .../ProperNotNamePersonNoname/validator.json | 196 + .../ProperNotNamePersonNoname/validator.txt | 3 + .../ProperNotNamePersonNoname/validator.xml | 190 + .../valid.main.Person.desc.pb | 3 + .../ProperNotNamePersonRobert/validator.json | 196 + .../ProperNotNamePersonRobert/validator.txt | 3 + .../ProperNotNamePersonRobert/validator.xml | 190 + .../valid.main.Person.desc.pb | Bin 0 -> 30 bytes .../ProperNotNamePersonSmith/validator.json | 196 + .../pb/ProperNotNamePersonSmith/validator.txt | 3 + .../pb/ProperNotNamePersonSmith/validator.xml | 190 + .../invalid.main.PuddingMilkshake.desc.pb | 3 + .../pb/PuddingMilkShakeNotAny1/validator.json | 621 + .../pb/PuddingMilkShakeNotAny1/validator.txt | 11 + .../pb/PuddingMilkShakeNotAny1/validator.xml | 592 + .../invalid.main.PuddingMilkshake.desc.pb | 3 + .../pb/PuddingMilkShakeNotAny2/validator.json | 621 + .../pb/PuddingMilkShakeNotAny2/validator.txt | 11 + .../pb/PuddingMilkShakeNotAny2/validator.xml | 592 + .../invalid.main.Knot.desc.pb | 2 + .../pb/RecursiveElbowBightTurn/validator.json | 66 + .../pb/RecursiveElbowBightTurn/validator.txt | 1 + .../pb/RecursiveElbowBightTurn/validator.xml | 68 + .../valid.main.Knot.desc.pb | 1 + .../validator.json | 66 + .../RecursiveElbowKnotKnotElbow/validator.txt | 1 + .../RecursiveElbowKnotKnotElbow/validator.xml | 68 + .../valid.main.SrcTree.desc.pb | 9 + .../tests/pb/RecursiveIoUtil/validator.json | 149 + .../tests/pb/RecursiveIoUtil/validator.txt | 1 + .../tests/pb/RecursiveIoUtil/validator.xml | 152 + .../RecursivePath/valid.main.SrcTree.desc.pb | 9 + .../tests/pb/RecursivePath/validator.json | 149 + .../tests/pb/RecursivePath/validator.txt | 1 + .../tests/pb/RecursivePath/validator.xml | 152 + .../invalid.main.SrcTree.desc.pb | 3 + .../tests/pb/RecursiveRuntime/validator.json | 149 + .../tests/pb/RecursiveRuntime/validator.txt | 1 + .../tests/pb/RecursiveRuntime/validator.xml | 152 + .../invalid.main.SrcTree.desc.pb | 8 + .../tests/pb/RecursiveSyscall/validator.json | 149 + .../tests/pb/RecursiveSyscall/validator.txt | 1 + .../tests/pb/RecursiveSyscall/validator.xml | 152 + .../valid.main.Knot.desc.pb | 2 + .../pb/RecursiveTurnBightTurn/validator.json | 66 + .../pb/RecursiveTurnBightTurn/validator.txt | 1 + .../pb/RecursiveTurnBightTurn/validator.xml | 68 + .../invalid.main.Knot.desc.pb | 1 + .../RecursiveTurnKnotKnotElbow/validator.json | 66 + .../RecursiveTurnKnotKnotElbow/validator.txt | 1 + .../RecursiveTurnKnotKnotElbow/validator.xml | 68 + .../pb/TopTop1/valid.main.TopsyTurvy.desc.pb | 2 + validator/tests/pb/TopTop1/validator.json | 45 + validator/tests/pb/TopTop1/validator.txt | 1 + validator/tests/pb/TopTop1/validator.xml | 47 + .../TurfTurf1/invalid.main.TopsyTurvy.desc.pb | 1 + validator/tests/pb/TurfTurf1/validator.json | 45 + validator/tests/pb/TurfTurf1/validator.txt | 1 + validator/tests/pb/TurfTurf1/validator.xml | 47 + .../valid.main.TypewriterPrison.desc.pb | 1 + .../TypewriterPrisonDaisySled/validator.json | 108 + .../TypewriterPrisonDaisySled/validator.txt | 1 + .../TypewriterPrisonDaisySled/validator.xml | 111 + .../valid.main.TypewriterPrison.desc.pb | 1 + .../TypewriterPrisonMapShark/validator.json | 108 + .../pb/TypewriterPrisonMapShark/validator.txt | 1 + .../pb/TypewriterPrisonMapShark/validator.xml | 111 + .../valid.main.TypewriterPrison.desc.pb | 1 + .../validator.json | 139 + .../validator.txt | 1 + .../validator.xml | 142 + .../valid.main.TypewriterPrison.desc.pb | 2 + .../validator.json | 108 + .../TypewriterPrisonScarBusStop/validator.txt | 1 + .../TypewriterPrisonScarBusStop/validator.xml | 111 + .../valid.main.TypewriterPrison.desc.pb | 1 + .../validator.json | 106 + .../TypewriterPrisonSmileLetter/validator.txt | 1 + .../TypewriterPrisonSmileLetter/validator.xml | 109 + .../invalid.main.Person.desc.pb | 3 + .../tests/pb/WrongTypeRobert/validator.json | 62 + .../tests/pb/WrongTypeRobert/validator.txt | 1 + .../tests/pb/WrongTypeRobert/validator.xml | 62 + validator/tests/pb/main.BananaTuple.desc | Bin 0 -> 14514 bytes validator/tests/pb/main.FinanceJudo.desc | Bin 0 -> 17558 bytes validator/tests/pb/main.Knot.desc | Bin 0 -> 13298 bytes validator/tests/pb/main.Person.desc | Bin 0 -> 13294 bytes validator/tests/pb/main.PocketRoses.desc | Bin 0 -> 14921 bytes validator/tests/pb/main.PuddingMilkshake.desc | Bin 0 -> 17558 bytes validator/tests/pb/main.SrcTree.desc | Bin 0 -> 13217 bytes validator/tests/pb/main.TopsyTurvy.desc | Bin 0 -> 13300 bytes validator/tests/pb/main.TypewriterPrison.desc | Bin 0 -> 14921 bytes validator/tests/xml/ABStarAAA/invalid.xml | 5 + validator/tests/xml/ABStarAAA/validator.json | 99 + validator/tests/xml/ABStarAAA/validator.txt | 1 + validator/tests/xml/ABStarAAA/validator.xml | 104 + validator/tests/xml/ABStarABC/valid.xml | 5 + validator/tests/xml/ABStarABC/validator.json | 99 + validator/tests/xml/ABStarABC/validator.txt | 1 + validator/tests/xml/ABStarABC/validator.xml | 104 + validator/tests/xml/ABStarBB/invalid.xml | 4 + validator/tests/xml/ABStarBB/validator.json | 99 + validator/tests/xml/ABStarBB/validator.txt | 1 + validator/tests/xml/ABStarBB/validator.xml | 104 + validator/tests/xml/ABStarBBAAA/valid.xml | 7 + .../tests/xml/ABStarBBAAA/validator.json | 99 + validator/tests/xml/ABStarBBAAA/validator.txt | 1 + validator/tests/xml/ABStarBBAAA/validator.xml | 104 + validator/tests/xml/ABStarBBC/invalid.xml | 5 + validator/tests/xml/ABStarBBC/validator.json | 99 + validator/tests/xml/ABStarBBC/validator.txt | 1 + validator/tests/xml/ABStarBBC/validator.xml | 104 + validator/tests/xml/ABStarBBCAC/valid.xml | 7 + .../tests/xml/ABStarBBCAC/validator.json | 99 + validator/tests/xml/ABStarBBCAC/validator.txt | 1 + validator/tests/xml/ABStarBBCAC/validator.xml | 104 + validator/tests/xml/ABStarCACBC/valid.xml | 7 + .../tests/xml/ABStarCACBC/validator.json | 99 + validator/tests/xml/ABStarCACBC/validator.txt | 1 + validator/tests/xml/ABStarCACBC/validator.xml | 104 + validator/tests/xml/ABStarCBCAC/valid.xml | 7 + .../tests/xml/ABStarCBCAC/validator.json | 99 + validator/tests/xml/ABStarCBCAC/validator.txt | 1 + validator/tests/xml/ABStarCBCAC/validator.xml | 104 + validator/tests/xml/BasicAB_AB/valid.xml | 1 + validator/tests/xml/BasicAB_AB/validator.json | 33 + validator/tests/xml/BasicAB_AB/validator.txt | 1 + validator/tests/xml/BasicAB_AB/validator.xml | 35 + validator/tests/xml/BasicAB_BB/invalid.xml | 1 + validator/tests/xml/BasicAB_BB/validator.json | 33 + validator/tests/xml/BasicAB_BB/validator.txt | 1 + validator/tests/xml/BasicAB_BB/validator.xml | 35 + .../tests/xml/BasicAContainsB_0/invalid.xml | 1 + .../xml/BasicAContainsB_0/validator.json | 40 + .../tests/xml/BasicAContainsB_0/validator.txt | 1 + .../tests/xml/BasicAContainsB_0/validator.xml | 42 + .../tests/xml/BasicAContainsB_B/valid.xml | 1 + .../xml/BasicAContainsB_B/validator.json | 40 + .../tests/xml/BasicAContainsB_B/validator.txt | 1 + .../tests/xml/BasicAContainsB_B/validator.xml | 42 + .../tests/xml/BasicAContainsB_CBC/valid.xml | 1 + .../xml/BasicAContainsB_CBC/validator.json | 40 + .../xml/BasicAContainsB_CBC/validator.txt | 1 + .../xml/BasicAContainsB_CBC/validator.xml | 42 + .../tests/xml/BasicAContainsB_CC/invalid.xml | 1 + .../xml/BasicAContainsB_CC/validator.json | 40 + .../xml/BasicAContainsB_CC/validator.txt | 1 + .../xml/BasicAContainsB_CC/validator.xml | 42 + .../invalid.xml | 1 + .../validator.json | 83 + .../validator.txt | 1 + .../validator.xml | 86 + .../valid.xml | 1 + .../validator.json | 83 + .../validator.txt | 1 + .../validator.xml | 86 + validator/tests/xml/BasicALeafB_AB/valid.xml | 1 + .../tests/xml/BasicALeafB_AB/validator.json | 31 + .../tests/xml/BasicALeafB_AB/validator.txt | 1 + .../tests/xml/BasicALeafB_AB/validator.xml | 33 + .../tests/xml/BasicALeafB_BB/invalid.xml | 1 + .../tests/xml/BasicALeafB_BB/validator.json | 31 + .../tests/xml/BasicALeafB_BB/validator.txt | 1 + .../tests/xml/BasicALeafB_BB/validator.xml | 33 + validator/tests/xml/BasicA_A/valid.xml | 1 + validator/tests/xml/BasicA_A/validator.json | 21 + validator/tests/xml/BasicA_A/validator.txt | 1 + validator/tests/xml/BasicA_A/validator.xml | 22 + validator/tests/xml/BasicA_B/invalid.xml | 1 + validator/tests/xml/BasicA_B/validator.json | 21 + validator/tests/xml/BasicA_B/validator.txt | 1 + validator/tests/xml/BasicA_B/validator.xml | 22 + .../tests/xml/BasicAndBAnyC_B/invalid.xml | 1 + .../tests/xml/BasicAndBAnyC_B/validator.json | 105 + .../tests/xml/BasicAndBAnyC_B/validator.txt | 1 + .../tests/xml/BasicAndBAnyC_B/validator.xml | 108 + .../tests/xml/BasicAndBAnyC_BC/valid.xml | 1 + .../tests/xml/BasicAndBAnyC_BC/validator.json | 105 + .../tests/xml/BasicAndBAnyC_BC/validator.txt | 1 + .../tests/xml/BasicAndBAnyC_BC/validator.xml | 108 + .../tests/xml/BasicAndBAnyC_BXXXC/valid.xml | 1 + .../xml/BasicAndBAnyC_BXXXC/validator.json | 105 + .../xml/BasicAndBAnyC_BXXXC/validator.txt | 1 + .../xml/BasicAndBAnyC_BXXXC/validator.xml | 108 + .../tests/xml/BasicAndBAnyC_C/invalid.xml | 1 + .../tests/xml/BasicAndBAnyC_C/validator.json | 105 + .../tests/xml/BasicAndBAnyC_C/validator.txt | 1 + .../tests/xml/BasicAndBAnyC_C/validator.xml | 108 + .../tests/xml/BasicAndBAnyC_CB/invalid.xml | 1 + .../tests/xml/BasicAndBAnyC_CB/validator.json | 105 + .../tests/xml/BasicAndBAnyC_CB/validator.txt | 1 + .../tests/xml/BasicAndBAnyC_CB/validator.xml | 108 + .../xml/BasicAndContainsTree_BC/invalid.xml | 1 + .../BasicAndContainsTree_BC/validator.json | 103 + .../xml/BasicAndContainsTree_BC/validator.txt | 1 + .../xml/BasicAndContainsTree_BC/validator.xml | 108 + .../xml/BasicAndContainsTree_BCBD/valid.xml | 1 + .../BasicAndContainsTree_BCBD/validator.json | 103 + .../BasicAndContainsTree_BCBD/validator.txt | 1 + .../BasicAndContainsTree_BCBD/validator.xml | 108 + .../tests/xml/BasicAndNotAB_A/invalid.xml | 1 + .../tests/xml/BasicAndNotAB_A/validator.json | 79 + .../tests/xml/BasicAndNotAB_A/validator.txt | 1 + .../tests/xml/BasicAndNotAB_A/validator.xml | 81 + .../tests/xml/BasicAndNotAB_B/invalid.xml | 1 + .../tests/xml/BasicAndNotAB_B/validator.json | 79 + .../tests/xml/BasicAndNotAB_B/validator.txt | 1 + .../tests/xml/BasicAndNotAB_B/validator.xml | 81 + validator/tests/xml/BasicAndNotAB_C/valid.xml | 1 + .../tests/xml/BasicAndNotAB_C/validator.json | 79 + .../tests/xml/BasicAndNotAB_C/validator.txt | 1 + .../tests/xml/BasicAndNotAB_C/validator.xml | 81 + validator/tests/xml/BasicAnyNotB_B/valid.xml | 1 + .../tests/xml/BasicAnyNotB_B/validator.json | 63 + .../tests/xml/BasicAnyNotB_B/validator.txt | 1 + .../tests/xml/BasicAnyNotB_B/validator.xml | 65 + validator/tests/xml/BasicAnyNotB_C/valid.xml | 1 + .../tests/xml/BasicAnyNotB_C/validator.json | 63 + .../tests/xml/BasicAnyNotB_C/validator.txt | 1 + .../tests/xml/BasicAnyNotB_C/validator.xml | 65 + validator/tests/xml/BasicAorB_A/valid.xml | 1 + .../tests/xml/BasicAorB_A/validator.json | 53 + validator/tests/xml/BasicAorB_A/validator.txt | 1 + validator/tests/xml/BasicAorB_A/validator.xml | 55 + validator/tests/xml/BasicAorB_C/invalid.xml | 1 + .../tests/xml/BasicAorB_C/validator.json | 53 + validator/tests/xml/BasicAorB_C/validator.txt | 1 + validator/tests/xml/BasicAorB_C/validator.xml | 55 + .../tests/xml/BasicConcatBC_BB/invalid.xml | 1 + .../tests/xml/BasicConcatBC_BB/validator.json | 62 + .../tests/xml/BasicConcatBC_BB/validator.txt | 1 + .../tests/xml/BasicConcatBC_BB/validator.xml | 65 + .../tests/xml/BasicConcatBC_BC/valid.xml | 1 + .../tests/xml/BasicConcatBC_BC/validator.json | 62 + .../tests/xml/BasicConcatBC_BC/validator.txt | 1 + .../tests/xml/BasicConcatBC_BC/validator.xml | 65 + .../xml/BasicConcatBOptionalD_B/valid.xml | 1 + .../BasicConcatBOptionalD_B/validator.json | 75 + .../xml/BasicConcatBOptionalD_B/validator.txt | 1 + .../xml/BasicConcatBOptionalD_B/validator.xml | 78 + .../xml/BasicConcatBOptionalD_BD/valid.xml | 1 + .../BasicConcatBOptionalD_BD/validator.json | 75 + .../BasicConcatBOptionalD_BD/validator.txt | 1 + .../BasicConcatBOptionalD_BD/validator.xml | 78 + .../xml/BasicConcatBOptionalD_D/invalid.xml | 1 + .../BasicConcatBOptionalD_D/validator.json | 75 + .../xml/BasicConcatBOptionalD_D/validator.txt | 1 + .../xml/BasicConcatBOptionalD_D/validator.xml | 78 + .../tests/xml/BasicConcatCStar_0/invalid.xml | 1 + .../xml/BasicConcatCStar_0/validator.json | 75 + .../xml/BasicConcatCStar_0/validator.txt | 1 + .../xml/BasicConcatCStar_0/validator.xml | 78 + .../tests/xml/BasicConcatCStar_1/valid.xml | 1 + .../xml/BasicConcatCStar_1/validator.json | 75 + .../xml/BasicConcatCStar_1/validator.txt | 1 + .../xml/BasicConcatCStar_1/validator.xml | 78 + .../tests/xml/BasicConcatCStar_2/valid.xml | 1 + .../xml/BasicConcatCStar_2/validator.json | 75 + .../xml/BasicConcatCStar_2/validator.txt | 1 + .../xml/BasicConcatCStar_2/validator.xml | 78 + .../tests/xml/BasicConcatCStar_3/valid.xml | 1 + .../xml/BasicConcatCStar_3/validator.json | 75 + .../xml/BasicConcatCStar_3/validator.txt | 1 + .../xml/BasicConcatCStar_3/validator.xml | 78 + .../tests/xml/BasicConcatCStar_B/invalid.xml | 1 + .../xml/BasicConcatCStar_B/validator.json | 75 + .../xml/BasicConcatCStar_B/validator.txt | 1 + .../xml/BasicConcatCStar_B/validator.xml | 78 + .../tests/xml/BasicConcatCStar_CB/invalid.xml | 1 + .../xml/BasicConcatCStar_CB/validator.json | 75 + .../xml/BasicConcatCStar_CB/validator.txt | 1 + .../xml/BasicConcatCStar_CB/validator.xml | 78 + .../tests/xml/BasicConcatOrEmpty_BC/valid.xml | 1 + .../xml/BasicConcatOrEmpty_BC/validator.json | 82 + .../xml/BasicConcatOrEmpty_BC/validator.txt | 1 + .../xml/BasicConcatOrEmpty_BC/validator.xml | 85 + .../xml/BasicConcatOrEmpty_BD/invalid.xml | 1 + .../xml/BasicConcatOrEmpty_BD/validator.json | 82 + .../xml/BasicConcatOrEmpty_BD/validator.txt | 1 + .../xml/BasicConcatOrEmpty_BD/validator.xml | 85 + .../tests/xml/BasicConcatOrEmpty_C/valid.xml | 1 + .../xml/BasicConcatOrEmpty_C/validator.json | 82 + .../xml/BasicConcatOrEmpty_C/validator.txt | 1 + .../xml/BasicConcatOrEmpty_C/validator.xml | 85 + .../tests/xml/BasicConcatZAnyC_AB/invalid.xml | 1 + .../xml/BasicConcatZAnyC_AB/validator.json | 50 + .../xml/BasicConcatZAnyC_AB/validator.txt | 1 + .../xml/BasicConcatZAnyC_AB/validator.xml | 52 + .../tests/xml/BasicConcatZAnyC_ABC/valid.xml | 1 + .../xml/BasicConcatZAnyC_ABC/validator.json | 50 + .../xml/BasicConcatZAnyC_ABC/validator.txt | 1 + .../xml/BasicConcatZAnyC_ABC/validator.xml | 52 + .../tests/xml/BasicConcatZAnyC_AC/valid.xml | 1 + .../xml/BasicConcatZAnyC_AC/validator.json | 50 + .../xml/BasicConcatZAnyC_AC/validator.txt | 1 + .../xml/BasicConcatZAnyC_AC/validator.xml | 52 + .../invalid.xml | 1 + .../validator.json | 50 + .../validator.txt | 1 + .../validator.xml | 52 + .../tests/xml/BasicConcatZAnyC_BBBC/valid.xml | 1 + .../xml/BasicConcatZAnyC_BBBC/validator.json | 50 + .../xml/BasicConcatZAnyC_BBBC/validator.txt | 1 + .../xml/BasicConcatZAnyC_BBBC/validator.xml | 52 + .../tests/xml/BasicConcatZAnyC_BCBC/valid.xml | 1 + .../xml/BasicConcatZAnyC_BCBC/validator.json | 50 + .../xml/BasicConcatZAnyC_BCBC/validator.txt | 1 + .../xml/BasicConcatZAnyC_BCBC/validator.xml | 52 + .../tests/xml/BasicConcatZAnyC_BCCC/valid.xml | 1 + .../xml/BasicConcatZAnyC_BCCC/validator.json | 50 + .../xml/BasicConcatZAnyC_BCCC/validator.txt | 1 + .../xml/BasicConcatZAnyC_BCCC/validator.xml | 52 + .../xml/BasicInterleaveBAnyC_ABAA/invalid.xml | 1 + .../BasicInterleaveBAnyC_ABAA/validator.json | 85 + .../BasicInterleaveBAnyC_ABAA/validator.txt | 1 + .../BasicInterleaveBAnyC_ABAA/validator.xml | 88 + .../xml/BasicInterleaveBAnyC_ABACA/valid.xml | 1 + .../BasicInterleaveBAnyC_ABACA/validator.json | 85 + .../BasicInterleaveBAnyC_ABACA/validator.txt | 1 + .../BasicInterleaveBAnyC_ABACA/validator.xml | 88 + .../xml/BasicInterleaveBAnyC_ACCBA/valid.xml | 1 + .../BasicInterleaveBAnyC_ACCBA/validator.json | 85 + .../BasicInterleaveBAnyC_ACCBA/validator.txt | 1 + .../BasicInterleaveBAnyC_ACCBA/validator.xml | 88 + .../BasicInterleaveBAnyC_ACCCA/invalid.xml | 1 + .../BasicInterleaveBAnyC_ACCCA/validator.json | 85 + .../BasicInterleaveBAnyC_ACCCA/validator.txt | 1 + .../BasicInterleaveBAnyC_ACCCA/validator.xml | 88 + .../xml/BasicInterleaveBAnyC_BAC/valid.xml | 1 + .../BasicInterleaveBAnyC_BAC/validator.json | 85 + .../BasicInterleaveBAnyC_BAC/validator.txt | 1 + .../BasicInterleaveBAnyC_BAC/validator.xml | 88 + .../xml/BasicInterleaveBAnyC_BC/valid.xml | 1 + .../BasicInterleaveBAnyC_BC/validator.json | 85 + .../xml/BasicInterleaveBAnyC_BC/validator.txt | 1 + .../xml/BasicInterleaveBAnyC_BC/validator.xml | 88 + .../tests/xml/BasicInterleaveBC_BC/valid.xml | 1 + .../xml/BasicInterleaveBC_BC/validator.json | 65 + .../xml/BasicInterleaveBC_BC/validator.txt | 1 + .../xml/BasicInterleaveBC_BC/validator.xml | 68 + .../tests/xml/BasicInterleaveBC_C/invalid.xml | 1 + .../xml/BasicInterleaveBC_C/validator.json | 65 + .../xml/BasicInterleaveBC_C/validator.txt | 1 + .../xml/BasicInterleaveBC_C/validator.xml | 68 + .../tests/xml/BasicInterleaveBC_CB/valid.xml | 1 + .../xml/BasicInterleaveBC_CB/validator.json | 65 + .../xml/BasicInterleaveBC_CB/validator.txt | 1 + .../xml/BasicInterleaveBC_CB/validator.xml | 68 + validator/tests/xml/BasicNone_A/invalid.xml | 1 + .../tests/xml/BasicNone_A/validator.json | 22 + validator/tests/xml/BasicNone_A/validator.txt | 1 + validator/tests/xml/BasicNone_A/validator.xml | 22 + validator/tests/xml/BasicNotA_A/invalid.xml | 1 + .../tests/xml/BasicNotA_A/validator.json | 34 + validator/tests/xml/BasicNotA_A/validator.txt | 1 + validator/tests/xml/BasicNotA_A/validator.xml | 35 + validator/tests/xml/BasicNotA_B/valid.xml | 1 + .../tests/xml/BasicNotA_B/validator.json | 34 + validator/tests/xml/BasicNotA_B/validator.txt | 1 + validator/tests/xml/BasicNotA_B/validator.xml | 35 + .../xml/BasicNotAndBStarC_BC/invalid.xml | 1 + .../xml/BasicNotAndBStarC_BC/validator.json | 118 + .../xml/BasicNotAndBStarC_BC/validator.txt | 1 + .../xml/BasicNotAndBStarC_BC/validator.xml | 121 + .../tests/xml/BasicNotAndBStarC_CB/valid.xml | 1 + .../xml/BasicNotAndBStarC_CB/validator.json | 118 + .../xml/BasicNotAndBStarC_CB/validator.txt | 1 + .../xml/BasicNotAndBStarC_CB/validator.xml | 121 + .../tests/xml/BasicNotConcatBC_BB/valid.xml | 1 + .../xml/BasicNotConcatBC_BB/validator.json | 75 + .../xml/BasicNotConcatBC_BB/validator.txt | 1 + .../xml/BasicNotConcatBC_BB/validator.xml | 78 + .../tests/xml/BasicNotConcatBC_BC/invalid.xml | 1 + .../xml/BasicNotConcatBC_BC/validator.json | 75 + .../xml/BasicNotConcatBC_BC/validator.txt | 1 + .../xml/BasicNotConcatBC_BC/validator.xml | 78 + .../tests/xml/BasicOptionalB_B/valid.xml | 1 + .../tests/xml/BasicOptionalB_B/validator.json | 46 + .../tests/xml/BasicOptionalB_B/validator.txt | 1 + .../tests/xml/BasicOptionalB_B/validator.xml | 48 + .../tests/xml/BasicOptionalB_BB/invalid.xml | 1 + .../xml/BasicOptionalB_BB/validator.json | 46 + .../tests/xml/BasicOptionalB_BB/validator.txt | 1 + .../tests/xml/BasicOptionalB_BB/validator.xml | 48 + .../tests/xml/BasicOptionalB_C/invalid.xml | 1 + .../tests/xml/BasicOptionalB_C/validator.json | 46 + .../tests/xml/BasicOptionalB_C/validator.txt | 1 + .../tests/xml/BasicOptionalB_C/validator.xml | 48 + .../tests/xml/BasicOptionalB_Empty/valid.xml | 1 + .../xml/BasicOptionalB_Empty/validator.json | 46 + .../xml/BasicOptionalB_Empty/validator.txt | 1 + .../xml/BasicOptionalB_Empty/validator.xml | 48 + validator/tests/xml/BasicOrNotAB_A/valid.xml | 1 + .../tests/xml/BasicOrNotAB_A/validator.json | 79 + .../tests/xml/BasicOrNotAB_A/validator.txt | 1 + .../tests/xml/BasicOrNotAB_A/validator.xml | 81 + validator/tests/xml/BasicOrNotAB_C/valid.xml | 1 + .../tests/xml/BasicOrNotAB_C/validator.json | 79 + .../tests/xml/BasicOrNotAB_C/validator.txt | 1 + .../tests/xml/BasicOrNotAB_C/validator.xml | 81 + validator/tests/xml/BasicRefLoop_A/valid.xml | 1 + .../tests/xml/BasicRefLoop_A/validator.json | 42 + .../tests/xml/BasicRefLoop_A/validator.txt | 1 + .../tests/xml/BasicRefLoop_A/validator.xml | 43 + validator/tests/xml/BasicRefLoop_AA/valid.xml | 1 + .../tests/xml/BasicRefLoop_AA/validator.json | 42 + .../tests/xml/BasicRefLoop_AA/validator.txt | 1 + .../tests/xml/BasicRefLoop_AA/validator.xml | 43 + .../tests/xml/BasicRefLoop_AB/invalid.xml | 1 + .../tests/xml/BasicRefLoop_AB/validator.json | 42 + .../tests/xml/BasicRefLoop_AB/validator.txt | 1 + .../tests/xml/BasicRefLoop_AB/validator.xml | 43 + .../tests/xml/BasicTreeAAorBB_AA/valid.xml | 1 + .../xml/BasicTreeAAorBB_AA/validator.json | 77 + .../xml/BasicTreeAAorBB_AA/validator.txt | 1 + .../xml/BasicTreeAAorBB_AA/validator.xml | 81 + .../tests/xml/BasicTreeAAorBB_AB/invalid.xml | 1 + .../xml/BasicTreeAAorBB_AB/validator.json | 77 + .../xml/BasicTreeAAorBB_AB/validator.txt | 1 + .../xml/BasicTreeAAorBB_AB/validator.xml | 81 + .../tests/xml/BasicTreeAOrOrC_AB/valid.xml | 1 + .../xml/BasicTreeAOrOrC_AB/validator.json | 141 + .../xml/BasicTreeAOrOrC_AB/validator.txt | 1 + .../xml/BasicTreeAOrOrC_AB/validator.xml | 147 + .../tests/xml/BasicTreeAOrOrC_CA/invalid.xml | 1 + .../xml/BasicTreeAOrOrC_CA/validator.json | 141 + .../xml/BasicTreeAOrOrC_CA/validator.txt | 1 + .../xml/BasicTreeAOrOrC_CA/validator.xml | 147 + .../tests/xml/BasicTreeAandA_A/valid.xml | 1 + .../tests/xml/BasicTreeAandA_A/validator.json | 77 + .../tests/xml/BasicTreeAandA_A/validator.txt | 1 + .../tests/xml/BasicTreeAandA_A/validator.xml | 81 + .../tests/xml/BasicTreeAandA_B/invalid.xml | 1 + .../tests/xml/BasicTreeAandA_B/validator.json | 77 + .../tests/xml/BasicTreeAandA_B/validator.txt | 1 + .../tests/xml/BasicTreeAandA_B/validator.xml | 81 + .../tests/xml/BasicTreeAandB_B/invalid.xml | 1 + .../tests/xml/BasicTreeAandB_B/validator.json | 77 + .../tests/xml/BasicTreeAandB_B/validator.txt | 1 + .../tests/xml/BasicTreeAandB_B/validator.xml | 81 + .../tests/xml/BasicTreeAndBAnyC_BC/valid.xml | 1 + .../xml/BasicTreeAndBAnyC_BC/validator.json | 129 + .../xml/BasicTreeAndBAnyC_BC/validator.txt | 1 + .../xml/BasicTreeAndBAnyC_BC/validator.xml | 134 + .../xml/BasicTreeAndBAnyC_BXXXC/valid.xml | 1 + .../BasicTreeAndBAnyC_BXXXC/validator.json | 129 + .../xml/BasicTreeAndBAnyC_BXXXC/validator.txt | 1 + .../xml/BasicTreeAndBAnyC_BXXXC/validator.xml | 134 + .../xml/BasicTreeAndBAnyC_CB/invalid.xml | 1 + .../xml/BasicTreeAndBAnyC_CB/validator.json | 129 + .../xml/BasicTreeAndBAnyC_CB/validator.txt | 1 + .../xml/BasicTreeAndBAnyC_CB/validator.xml | 134 + .../xml/BasicTreeAndBAnyC_CBC/invalid.xml | 1 + .../xml/BasicTreeAndBAnyC_CBC/validator.json | 129 + .../xml/BasicTreeAndBAnyC_CBC/validator.txt | 1 + .../xml/BasicTreeAndBAnyC_CBC/validator.xml | 134 + .../tests/xml/BasicTreeBAorBB_AA/invalid.xml | 1 + .../xml/BasicTreeBAorBB_AA/validator.json | 77 + .../xml/BasicTreeBAorBB_AA/validator.txt | 1 + .../xml/BasicTreeBAorBB_AA/validator.xml | 81 + .../tests/xml/BasicTreeBAorBB_BA/valid.xml | 1 + .../xml/BasicTreeBAorBB_BA/validator.json | 77 + .../xml/BasicTreeBAorBB_BA/validator.txt | 1 + .../xml/BasicTreeBAorBB_BA/validator.xml | 81 + .../xml/BasicZeroOrMoreBOrEmpty_BB/valid.xml | 1 + .../BasicZeroOrMoreBOrEmpty_BB/validator.json | 66 + .../BasicZeroOrMoreBOrEmpty_BB/validator.txt | 1 + .../BasicZeroOrMoreBOrEmpty_BB/validator.xml | 68 + .../BasicZeroOrMoreBOrEmpty_BC/invalid.xml | 1 + .../BasicZeroOrMoreBOrEmpty_BC/validator.json | 66 + .../BasicZeroOrMoreBOrEmpty_BC/validator.txt | 1 + .../BasicZeroOrMoreBOrEmpty_BC/validator.xml | 68 + .../tests/xml/BasicZeroOrMoreB_0/valid.xml | 1 + .../xml/BasicZeroOrMoreB_0/validator.json | 46 + .../xml/BasicZeroOrMoreB_0/validator.txt | 1 + .../xml/BasicZeroOrMoreB_0/validator.xml | 48 + .../tests/xml/BasicZeroOrMoreB_1/valid.xml | 1 + .../xml/BasicZeroOrMoreB_1/validator.json | 46 + .../xml/BasicZeroOrMoreB_1/validator.txt | 1 + .../xml/BasicZeroOrMoreB_1/validator.xml | 48 + .../tests/xml/BasicZeroOrMoreB_3/valid.xml | 1 + .../xml/BasicZeroOrMoreB_3/validator.json | 46 + .../xml/BasicZeroOrMoreB_3/validator.txt | 1 + .../xml/BasicZeroOrMoreB_3/validator.xml | 48 + .../tests/xml/BasicZeroOrMoreB_BC/invalid.xml | 1 + .../xml/BasicZeroOrMoreB_BC/validator.json | 46 + .../xml/BasicZeroOrMoreB_BC/validator.txt | 1 + .../xml/BasicZeroOrMoreB_BC/validator.xml | 48 + .../tests/xml/BasicZeroOrMoreB_C/invalid.xml | 1 + .../xml/BasicZeroOrMoreB_C/validator.json | 46 + .../xml/BasicZeroOrMoreB_C/validator.txt | 1 + .../xml/BasicZeroOrMoreB_C/validator.xml | 48 + .../xml/BasicZeroOrMoreEmpty_B/invalid.xml | 1 + .../xml/BasicZeroOrMoreEmpty_B/validator.json | 34 + .../xml/BasicZeroOrMoreEmpty_B/validator.txt | 1 + .../xml/BasicZeroOrMoreEmpty_B/validator.xml | 35 + .../xml/BasicZeroOrMoreEmpty_Empty/valid.xml | 1 + .../BasicZeroOrMoreEmpty_Empty/validator.json | 34 + .../BasicZeroOrMoreEmpty_Empty/validator.txt | 1 + .../BasicZeroOrMoreEmpty_Empty/validator.xml | 35 + .../BasicZeroOrMoreZeroOrMoreB_BB/valid.xml | 1 + .../validator.json | 59 + .../validator.txt | 1 + .../validator.xml | 61 + .../BasicZeroOrMoreZeroOrMoreB_C/invalid.xml | 1 + .../validator.json | 59 + .../validator.txt | 1 + .../validator.xml | 61 + validator/tests/xml/Page195E0/invalid.xml | 2 + validator/tests/xml/Page195E0/validator.json | 154 + validator/tests/xml/Page195E0/validator.txt | 1 + validator/tests/xml/Page195E0/validator.xml | 159 + .../tests/xml/Page195E0AddrE0/invalid.xml | 3 + .../tests/xml/Page195E0AddrE0/validator.json | 154 + .../tests/xml/Page195E0AddrE0/validator.txt | 1 + .../tests/xml/Page195E0AddrE0/validator.xml | 159 + .../tests/xml/Page195E0AddrE0NameE0/valid.xml | 4 + .../xml/Page195E0AddrE0NameE0/validator.json | 154 + .../xml/Page195E0AddrE0NameE0/validator.txt | 1 + .../xml/Page195E0AddrE0NameE0/validator.xml | 159 + validator/tests/xml/Page195E0NameE0/valid.xml | 3 + .../tests/xml/Page195E0NameE0/validator.json | 154 + .../tests/xml/Page195E0NameE0/validator.txt | 1 + .../tests/xml/Page195E0NameE0/validator.xml | 159 + .../tests/xml/Page195E0NameE0AddrE0/valid.xml | 4 + .../xml/Page195E0NameE0AddrE0/validator.json | 154 + .../xml/Page195E0NameE0AddrE0/validator.txt | 1 + .../xml/Page195E0NameE0AddrE0/validator.xml | 159 + .../tests/xml/Page195E0NameE0NameE0/valid.xml | 4 + .../xml/Page195E0NameE0NameE0/validator.json | 192 + .../xml/Page195E0NameE0NameE0/validator.txt | 1 + .../xml/Page195E0NameE0NameE0/validator.xml | 198 + .../xml/Page195E0NameE0NameE0TelE0/valid.xml | 5 + .../Page195E0NameE0NameE0TelE0/validator.json | 192 + .../Page195E0NameE0NameE0TelE0/validator.txt | 1 + .../Page195E0NameE0NameE0TelE0/validator.xml | 198 + .../tests/xml/Page195E0NameE0NameE2/valid.xml | 6 + .../xml/Page195E0NameE0NameE2/validator.json | 192 + .../xml/Page195E0NameE0NameE2/validator.txt | 1 + .../xml/Page195E0NameE0NameE2/validator.xml | 198 + .../xml/Page195E0NameE0NameE2TelE0/valid.xml | 7 + .../Page195E0NameE0NameE2TelE0/validator.json | 192 + .../Page195E0NameE0NameE2TelE0/validator.txt | 1 + .../Page195E0NameE0NameE2TelE0/validator.xml | 198 + .../xml/Page195E0NameE0TelE0NameE2/valid.xml | 7 + .../Page195E0NameE0TelE0NameE2/validator.json | 192 + .../Page195E0NameE0TelE0NameE2/validator.txt | 1 + .../Page195E0NameE0TelE0NameE2/validator.xml | 198 + .../Page195E0NameE0TelE2NameE0/invalid.xml | 7 + .../Page195E0NameE0TelE2NameE0/validator.json | 192 + .../Page195E0NameE0TelE2NameE0/validator.txt | 1 + .../Page195E0NameE0TelE2NameE0/validator.xml | 198 + .../Page195E0NameE0TelE2NameE2/invalid.xml | 9 + .../Page195E0NameE0TelE2NameE2/validator.json | 192 + .../Page195E0NameE0TelE2NameE2/validator.txt | 1 + .../Page195E0NameE0TelE2NameE2/validator.xml | 198 + .../tests/xml/Page195E0NameE2NameE0/valid.xml | 6 + .../xml/Page195E0NameE2NameE0/validator.json | 192 + .../xml/Page195E0NameE2NameE0/validator.txt | 1 + .../xml/Page195E0NameE2NameE0/validator.xml | 198 + .../xml/Page195E0NameE2NameE0TelE0/valid.xml | 7 + .../Page195E0NameE2NameE0TelE0/validator.json | 192 + .../Page195E0NameE2NameE0TelE0/validator.txt | 1 + .../Page195E0NameE2NameE0TelE0/validator.xml | 198 + .../Page195E0NameE2TelE0NameE0/invalid.xml | 7 + .../Page195E0NameE2TelE0NameE0/validator.json | 192 + .../Page195E0NameE2TelE0NameE0/validator.txt | 1 + .../Page195E0NameE2TelE0NameE0/validator.xml | 198 + .../Page195E0NameE2TelE0NameE2/invalid.xml | 9 + .../Page195E0NameE2TelE0NameE2/validator.json | 192 + .../Page195E0NameE2TelE0NameE2/validator.txt | 1 + .../Page195E0NameE2TelE0NameE2/validator.xml | 198 + .../Page195E0NameE2TelE2NameE2/invalid.xml | 11 + .../Page195E0NameE2TelE2NameE2/validator.json | 192 + .../Page195E0NameE2TelE2NameE2/validator.txt | 1 + .../Page195E0NameE2TelE2NameE2/validator.xml | 198 + .../Page195E0TelE0NameE0NameE0/invalid.xml | 5 + .../Page195E0TelE0NameE0NameE0/validator.json | 192 + .../Page195E0TelE0NameE0NameE0/validator.txt | 1 + .../Page195E0TelE0NameE0NameE0/validator.xml | 198 + .../Page195E0TelE0NameE0NameE2/invalid.xml | 7 + .../Page195E0TelE0NameE0NameE2/validator.json | 192 + .../Page195E0TelE0NameE0NameE2/validator.txt | 1 + .../Page195E0TelE0NameE0NameE2/validator.xml | 198 + validator/tests/xml/Page195E1/invalid.xml | 3 + validator/tests/xml/Page195E1/validator.json | 154 + validator/tests/xml/Page195E1/validator.txt | 1 + validator/tests/xml/Page195E1/validator.xml | 159 + .../tests/xml/Page195E1AddrE1/invalid.xml | 5 + .../tests/xml/Page195E1AddrE1/validator.json | 154 + .../tests/xml/Page195E1AddrE1/validator.txt | 1 + .../tests/xml/Page195E1AddrE1/validator.xml | 159 + .../tests/xml/Page195E1AddrE1NameE1/valid.xml | 7 + .../xml/Page195E1AddrE1NameE1/validator.json | 154 + .../xml/Page195E1AddrE1NameE1/validator.txt | 1 + .../xml/Page195E1AddrE1NameE1/validator.xml | 159 + validator/tests/xml/Page195E1NameE1/valid.xml | 5 + .../tests/xml/Page195E1NameE1/validator.json | 154 + .../tests/xml/Page195E1NameE1/validator.txt | 1 + .../tests/xml/Page195E1NameE1/validator.xml | 159 + .../tests/xml/Page195E1NameE1AddrE1/valid.xml | 7 + .../xml/Page195E1NameE1AddrE1/validator.json | 154 + .../xml/Page195E1NameE1AddrE1/validator.txt | 1 + .../xml/Page195E1NameE1AddrE1/validator.xml | 159 + validator/tests/xml/Page195E2/invalid.xml | 4 + validator/tests/xml/Page195E2/validator.json | 154 + validator/tests/xml/Page195E2/validator.txt | 1 + validator/tests/xml/Page195E2/validator.xml | 159 + .../tests/xml/Page195E2AddrE2/invalid.xml | 7 + .../tests/xml/Page195E2AddrE2/validator.json | 154 + .../tests/xml/Page195E2AddrE2/validator.txt | 1 + .../tests/xml/Page195E2AddrE2/validator.xml | 159 + .../tests/xml/Page195E2AddrE2NameE2/valid.xml | 10 + .../xml/Page195E2AddrE2NameE2/validator.json | 154 + .../xml/Page195E2AddrE2NameE2/validator.txt | 1 + .../xml/Page195E2AddrE2NameE2/validator.xml | 159 + .../Page195E2NameE0TelE0NameE2/invalid.xml | 9 + .../Page195E2NameE0TelE0NameE2/validator.json | 192 + .../Page195E2NameE0TelE0NameE2/validator.txt | 1 + .../Page195E2NameE0TelE0NameE2/validator.xml | 198 + validator/tests/xml/Page195E2NameE2/valid.xml | 7 + .../tests/xml/Page195E2NameE2/validator.json | 154 + .../tests/xml/Page195E2NameE2/validator.txt | 1 + .../tests/xml/Page195E2NameE2/validator.xml | 159 + .../tests/xml/Page195E2NameE2AddrE2/valid.xml | 10 + .../xml/Page195E2NameE2AddrE2/validator.json | 154 + .../xml/Page195E2NameE2AddrE2/validator.txt | 1 + .../xml/Page195E2NameE2AddrE2/validator.xml | 159 + .../tests/xml/XmlContextDavid/invalid.xml | 21 + .../tests/xml/XmlContextDavid/validator.json | 143 + .../tests/xml/XmlContextDavid/validator.txt | 1 + .../tests/xml/XmlContextDavid/validator.xml | 149 + .../tests/xml/XmlContextRobert/valid.xml | 14 + .../tests/xml/XmlContextRobert/validator.json | 143 + .../tests/xml/XmlContextRobert/validator.txt | 1 + .../tests/xml/XmlContextRobert/validator.xml | 149 + 1696 files changed, 170648 insertions(+), 1 deletion(-) create mode 100644 validator/tests/goreflect/APocketRoses/valid.goreflect create mode 100644 validator/tests/goreflect/APocketRoses/validator.json create mode 100644 validator/tests/goreflect/APocketRoses/validator.txt create mode 100644 validator/tests/goreflect/APocketRoses/validator.xml create mode 100644 validator/tests/goreflect/Ab21Any/valid.goreflect create mode 100644 validator/tests/goreflect/Ab21Any/validator.json create mode 100644 validator/tests/goreflect/Ab21Any/validator.txt create mode 100644 validator/tests/goreflect/Ab21Any/validator.xml create mode 100644 validator/tests/goreflect/Ab21InAnyExceptSaladWorry/invalid.goreflect create mode 100644 validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.json create mode 100644 validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.txt create mode 100644 validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.xml create mode 100644 validator/tests/goreflect/Ab21MagazineFrameA/valid.goreflect create mode 100644 validator/tests/goreflect/Ab21MagazineFrameA/validator.json create mode 100644 validator/tests/goreflect/Ab21MagazineFrameA/validator.txt create mode 100644 validator/tests/goreflect/Ab21MagazineFrameA/validator.xml create mode 100644 validator/tests/goreflect/Ab21MagazineFrameSingleA/invalid.goreflect create mode 100644 validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.json create mode 100644 validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.txt create mode 100644 validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.xml create mode 100644 validator/tests/goreflect/Ab21None/invalid.goreflect create mode 100644 validator/tests/goreflect/Ab21None/validator.json create mode 100644 validator/tests/goreflect/Ab21None/validator.txt create mode 100644 validator/tests/goreflect/Ab21None/validator.xml create mode 100644 validator/tests/goreflect/Ab21NotAFieldName/valid.goreflect create mode 100644 validator/tests/goreflect/Ab21NotAFieldName/validator.json create mode 100644 validator/tests/goreflect/Ab21NotAFieldName/validator.txt create mode 100644 validator/tests/goreflect/Ab21NotAFieldName/validator.xml create mode 100644 validator/tests/goreflect/Ab21Spirit1/valid.goreflect create mode 100644 validator/tests/goreflect/Ab21Spirit1/validator.json create mode 100644 validator/tests/goreflect/Ab21Spirit1/validator.txt create mode 100644 validator/tests/goreflect/Ab21Spirit1/validator.xml create mode 100644 validator/tests/goreflect/Ab21Spirit2/invalid.goreflect create mode 100644 validator/tests/goreflect/Ab21Spirit2/validator.json create mode 100644 validator/tests/goreflect/Ab21Spirit2/validator.txt create mode 100644 validator/tests/goreflect/Ab21Spirit2/validator.xml create mode 100644 validator/tests/goreflect/AbcPocketRoses/valid.goreflect create mode 100644 validator/tests/goreflect/AbcPocketRoses/validator.json create mode 100644 validator/tests/goreflect/AbcPocketRoses/validator.txt create mode 100644 validator/tests/goreflect/AbcPocketRoses/validator.xml create mode 100644 validator/tests/goreflect/AndAnyName/valid.goreflect create mode 100644 validator/tests/goreflect/AndAnyName/validator.json create mode 100644 validator/tests/goreflect/AndAnyName/validator.txt create mode 100644 validator/tests/goreflect/AndAnyName/validator.xml create mode 100644 validator/tests/goreflect/AndNameTelephoneDavid/valid.goreflect create mode 100644 validator/tests/goreflect/AndNameTelephoneDavid/validator.json create mode 100644 validator/tests/goreflect/AndNameTelephoneDavid/validator.txt create mode 100644 validator/tests/goreflect/AndNameTelephoneDavid/validator.xml create mode 100644 validator/tests/goreflect/AndNameTelephoneJohn/invalid.goreflect create mode 100644 validator/tests/goreflect/AndNameTelephoneJohn/validator.json create mode 100644 validator/tests/goreflect/AndNameTelephoneJohn/validator.txt create mode 100644 validator/tests/goreflect/AndNameTelephoneJohn/validator.xml create mode 100644 validator/tests/goreflect/AndNameTelephoneMover/invalid.goreflect create mode 100644 validator/tests/goreflect/AndNameTelephoneMover/validator.json create mode 100644 validator/tests/goreflect/AndNameTelephoneMover/validator.txt create mode 100644 validator/tests/goreflect/AndNameTelephoneMover/validator.xml create mode 100644 validator/tests/goreflect/AndNameTelephoneSmith/invalid.goreflect create mode 100644 validator/tests/goreflect/AndNameTelephoneSmith/validator.json create mode 100644 validator/tests/goreflect/AndNameTelephoneSmith/validator.txt create mode 100644 validator/tests/goreflect/AndNameTelephoneSmith/validator.xml create mode 100644 validator/tests/goreflect/BightTurn/invalid.goreflect create mode 100644 validator/tests/goreflect/BightTurn/validator.json create mode 100644 validator/tests/goreflect/BightTurn/validator.txt create mode 100644 validator/tests/goreflect/BightTurn/validator.xml create mode 100644 validator/tests/goreflect/ContextDavid/invalid.goreflect create mode 100644 validator/tests/goreflect/ContextDavid/validator.json create mode 100644 validator/tests/goreflect/ContextDavid/validator.txt create mode 100644 validator/tests/goreflect/ContextDavid/validator.xml create mode 100644 validator/tests/goreflect/ContextRobert/valid.goreflect create mode 100644 validator/tests/goreflect/ContextRobert/validator.json create mode 100644 validator/tests/goreflect/ContextRobert/validator.txt create mode 100644 validator/tests/goreflect/ContextRobert/validator.xml create mode 100644 validator/tests/goreflect/CorrectTypeRobert/valid.goreflect create mode 100644 validator/tests/goreflect/CorrectTypeRobert/validator.json create mode 100644 validator/tests/goreflect/CorrectTypeRobert/validator.txt create mode 100644 validator/tests/goreflect/CorrectTypeRobert/validator.xml create mode 100644 validator/tests/goreflect/DPocketRoses/invalid.goreflect create mode 100644 validator/tests/goreflect/DPocketRoses/validator.json create mode 100644 validator/tests/goreflect/DPocketRoses/validator.txt create mode 100644 validator/tests/goreflect/DPocketRoses/validator.xml create mode 100644 validator/tests/goreflect/DontErrorGivenWrongType/invalid.goreflect create mode 100644 validator/tests/goreflect/DontErrorGivenWrongType/validator.json create mode 100644 validator/tests/goreflect/DontErrorGivenWrongType/validator.txt create mode 100644 validator/tests/goreflect/DontErrorGivenWrongType/validator.xml create mode 100644 validator/tests/goreflect/EmptyOrNilJohn/invalid.goreflect create mode 100644 validator/tests/goreflect/EmptyOrNilJohn/validator.json create mode 100644 validator/tests/goreflect/EmptyOrNilJohn/validator.txt create mode 100644 validator/tests/goreflect/EmptyOrNilJohn/validator.xml create mode 100644 validator/tests/goreflect/EmptyOrNilNoname/valid.goreflect create mode 100644 validator/tests/goreflect/EmptyOrNilNoname/validator.json create mode 100644 validator/tests/goreflect/EmptyOrNilNoname/validator.txt create mode 100644 validator/tests/goreflect/EmptyOrNilNoname/validator.xml create mode 100644 validator/tests/goreflect/EmptyOrNilSmith/valid.goreflect create mode 100644 validator/tests/goreflect/EmptyOrNilSmith/validator.json create mode 100644 validator/tests/goreflect/EmptyOrNilSmith/validator.txt create mode 100644 validator/tests/goreflect/EmptyOrNilSmith/validator.xml create mode 100644 validator/tests/goreflect/FinalCPocketRoses/valid.goreflect create mode 100644 validator/tests/goreflect/FinalCPocketRoses/validator.json create mode 100644 validator/tests/goreflect/FinalCPocketRoses/validator.txt create mode 100644 validator/tests/goreflect/FinalCPocketRoses/validator.xml create mode 100644 validator/tests/goreflect/HiddenLeftRecursionDavid/valid.goreflect create mode 100644 validator/tests/goreflect/HiddenLeftRecursionDavid/validator.json create mode 100644 validator/tests/goreflect/HiddenLeftRecursionDavid/validator.txt create mode 100644 validator/tests/goreflect/HiddenLeftRecursionDavid/validator.xml create mode 100644 validator/tests/goreflect/HiddenLeftRecursionRobert/invalid.goreflect create mode 100644 validator/tests/goreflect/HiddenLeftRecursionRobert/validator.json create mode 100644 validator/tests/goreflect/HiddenLeftRecursionRobert/validator.txt create mode 100644 validator/tests/goreflect/HiddenLeftRecursionRobert/validator.xml create mode 100644 validator/tests/goreflect/InSetPersonDavid/invalid.goreflect create mode 100644 validator/tests/goreflect/InSetPersonDavid/validator.json create mode 100644 validator/tests/goreflect/InSetPersonDavid/validator.txt create mode 100644 validator/tests/goreflect/InSetPersonDavid/validator.xml create mode 100644 validator/tests/goreflect/InSetPersonRobert/valid.goreflect create mode 100644 validator/tests/goreflect/InSetPersonRobert/validator.json create mode 100644 validator/tests/goreflect/InSetPersonRobert/validator.txt create mode 100644 validator/tests/goreflect/InSetPersonRobert/validator.xml create mode 100644 validator/tests/goreflect/KnotKnotElbow/valid.goreflect create mode 100644 validator/tests/goreflect/KnotKnotElbow/validator.json create mode 100644 validator/tests/goreflect/KnotKnotElbow/validator.txt create mode 100644 validator/tests/goreflect/KnotKnotElbow/validator.xml create mode 100644 validator/tests/goreflect/LatentSimplificationFalse/invalid.goreflect create mode 100644 validator/tests/goreflect/LatentSimplificationFalse/validator.json create mode 100644 validator/tests/goreflect/LatentSimplificationFalse/validator.txt create mode 100644 validator/tests/goreflect/LatentSimplificationFalse/validator.xml create mode 100644 validator/tests/goreflect/LatentSimplificationTrue/valid.goreflect create mode 100644 validator/tests/goreflect/LatentSimplificationTrue/validator.json create mode 100644 validator/tests/goreflect/LatentSimplificationTrue/validator.txt create mode 100644 validator/tests/goreflect/LatentSimplificationTrue/validator.xml create mode 100644 validator/tests/goreflect/LeftRecursionDavid/valid.goreflect create mode 100644 validator/tests/goreflect/LeftRecursionDavid/validator.json create mode 100644 validator/tests/goreflect/LeftRecursionDavid/validator.txt create mode 100644 validator/tests/goreflect/LeftRecursionDavid/validator.xml create mode 100644 validator/tests/goreflect/LeftRecursionRobert/invalid.goreflect create mode 100644 validator/tests/goreflect/LeftRecursionRobert/validator.json create mode 100644 validator/tests/goreflect/LeftRecursionRobert/validator.txt create mode 100644 validator/tests/goreflect/LeftRecursionRobert/validator.xml create mode 100644 validator/tests/goreflect/LenNameJohn/invalid.goreflect create mode 100644 validator/tests/goreflect/LenNameJohn/validator.json create mode 100644 validator/tests/goreflect/LenNameJohn/validator.txt create mode 100644 validator/tests/goreflect/LenNameJohn/validator.xml create mode 100644 validator/tests/goreflect/LenNameNoname/invalid.goreflect create mode 100644 validator/tests/goreflect/LenNameNoname/validator.json create mode 100644 validator/tests/goreflect/LenNameNoname/validator.txt create mode 100644 validator/tests/goreflect/LenNameNoname/validator.xml create mode 100644 validator/tests/goreflect/LenNameSmith/valid.goreflect create mode 100644 validator/tests/goreflect/LenNameSmith/validator.json create mode 100644 validator/tests/goreflect/LenNameSmith/validator.txt create mode 100644 validator/tests/goreflect/LenNameSmith/validator.xml create mode 100644 validator/tests/goreflect/ListIndexAddressMover/invalid.goreflect create mode 100644 validator/tests/goreflect/ListIndexAddressMover/validator.json create mode 100644 validator/tests/goreflect/ListIndexAddressMover/validator.txt create mode 100644 validator/tests/goreflect/ListIndexAddressMover/validator.xml create mode 100644 validator/tests/goreflect/ListIndexAddressRoutine/invalid.goreflect create mode 100644 validator/tests/goreflect/ListIndexAddressRoutine/validator.json create mode 100644 validator/tests/goreflect/ListIndexAddressRoutine/validator.txt create mode 100644 validator/tests/goreflect/ListIndexAddressRoutine/validator.xml create mode 100644 validator/tests/goreflect/ListIndexAddressShaker/valid.goreflect create mode 100644 validator/tests/goreflect/ListIndexAddressShaker/validator.json create mode 100644 validator/tests/goreflect/ListIndexAddressShaker/validator.txt create mode 100644 validator/tests/goreflect/ListIndexAddressShaker/validator.xml create mode 100644 validator/tests/goreflect/ListOfTelephonesDavid/valid.goreflect create mode 100644 validator/tests/goreflect/ListOfTelephonesDavid/validator.json create mode 100644 validator/tests/goreflect/ListOfTelephonesDavid/validator.txt create mode 100644 validator/tests/goreflect/ListOfTelephonesDavid/validator.xml create mode 100644 validator/tests/goreflect/ListOfTelephonesRoutine/invalid.goreflect create mode 100644 validator/tests/goreflect/ListOfTelephonesRoutine/validator.json create mode 100644 validator/tests/goreflect/ListOfTelephonesRoutine/validator.txt create mode 100644 validator/tests/goreflect/ListOfTelephonesRoutine/validator.xml create mode 100644 validator/tests/goreflect/ListOfTelephonesShaker/valid.goreflect create mode 100644 validator/tests/goreflect/ListOfTelephonesShaker/validator.json create mode 100644 validator/tests/goreflect/ListOfTelephonesShaker/validator.txt create mode 100644 validator/tests/goreflect/ListOfTelephonesShaker/validator.xml create mode 100644 validator/tests/goreflect/NaiveNotNameDavid/invalid.goreflect create mode 100644 validator/tests/goreflect/NaiveNotNameDavid/validator.json create mode 100644 validator/tests/goreflect/NaiveNotNameDavid/validator.txt create mode 100644 validator/tests/goreflect/NaiveNotNameDavid/validator.xml create mode 100644 validator/tests/goreflect/NaiveNotNameNoname/invalid.goreflect create mode 100644 validator/tests/goreflect/NaiveNotNameNoname/validator.json create mode 100644 validator/tests/goreflect/NaiveNotNameNoname/validator.txt create mode 100644 validator/tests/goreflect/NaiveNotNameNoname/validator.xml create mode 100644 validator/tests/goreflect/NaiveNotNameRobert/valid.goreflect create mode 100644 validator/tests/goreflect/NaiveNotNameRobert/validator.json create mode 100644 validator/tests/goreflect/NaiveNotNameRobert/validator.txt create mode 100644 validator/tests/goreflect/NaiveNotNameRobert/validator.xml create mode 100644 validator/tests/goreflect/NaiveNotNameSmith/valid.goreflect create mode 100644 validator/tests/goreflect/NaiveNotNameSmith/validator.json create mode 100644 validator/tests/goreflect/NaiveNotNameSmith/validator.txt create mode 100644 validator/tests/goreflect/NaiveNotNameSmith/validator.xml create mode 100644 validator/tests/goreflect/NextAPocketRoses/invalid.goreflect create mode 100644 validator/tests/goreflect/NextAPocketRoses/validator.json create mode 100644 validator/tests/goreflect/NextAPocketRoses/validator.txt create mode 100644 validator/tests/goreflect/NextAPocketRoses/validator.xml create mode 100644 validator/tests/goreflect/NilNameJohn/invalid.goreflect create mode 100644 validator/tests/goreflect/NilNameJohn/validator.json create mode 100644 validator/tests/goreflect/NilNameJohn/validator.txt create mode 100644 validator/tests/goreflect/NilNameJohn/validator.xml create mode 100644 validator/tests/goreflect/NilNameNoname/valid.goreflect create mode 100644 validator/tests/goreflect/NilNameNoname/validator.json create mode 100644 validator/tests/goreflect/NilNameNoname/validator.txt create mode 100644 validator/tests/goreflect/NilNameNoname/validator.xml create mode 100644 validator/tests/goreflect/NilNameSmith/invalid.goreflect create mode 100644 validator/tests/goreflect/NilNameSmith/validator.json create mode 100644 validator/tests/goreflect/NilNameSmith/validator.txt create mode 100644 validator/tests/goreflect/NilNameSmith/validator.xml create mode 100644 validator/tests/goreflect/OptionalAddressDavidPerson/valid.goreflect create mode 100644 validator/tests/goreflect/OptionalAddressDavidPerson/validator.json create mode 100644 validator/tests/goreflect/OptionalAddressDavidPerson/validator.txt create mode 100644 validator/tests/goreflect/OptionalAddressDavidPerson/validator.xml create mode 100644 validator/tests/goreflect/OptionalAddressMoverPerson/invalid.goreflect create mode 100644 validator/tests/goreflect/OptionalAddressMoverPerson/validator.json create mode 100644 validator/tests/goreflect/OptionalAddressMoverPerson/validator.txt create mode 100644 validator/tests/goreflect/OptionalAddressMoverPerson/validator.xml create mode 100644 validator/tests/goreflect/OptionalAddressRobertPerson/valid.goreflect create mode 100644 validator/tests/goreflect/OptionalAddressRobertPerson/validator.json create mode 100644 validator/tests/goreflect/OptionalAddressRobertPerson/validator.txt create mode 100644 validator/tests/goreflect/OptionalAddressRobertPerson/validator.xml create mode 100644 validator/tests/goreflect/OptionalNameJohnPerson/invalid.goreflect create mode 100644 validator/tests/goreflect/OptionalNameJohnPerson/validator.json create mode 100644 validator/tests/goreflect/OptionalNameJohnPerson/validator.txt create mode 100644 validator/tests/goreflect/OptionalNameJohnPerson/validator.xml create mode 100644 validator/tests/goreflect/OptionalNameNonamePerson/valid.goreflect create mode 100644 validator/tests/goreflect/OptionalNameNonamePerson/validator.json create mode 100644 validator/tests/goreflect/OptionalNameNonamePerson/validator.txt create mode 100644 validator/tests/goreflect/OptionalNameNonamePerson/validator.xml create mode 100644 validator/tests/goreflect/OptionalNameRoutinePerson/invalid.goreflect create mode 100644 validator/tests/goreflect/OptionalNameRoutinePerson/validator.json create mode 100644 validator/tests/goreflect/OptionalNameRoutinePerson/validator.txt create mode 100644 validator/tests/goreflect/OptionalNameRoutinePerson/validator.xml create mode 100644 validator/tests/goreflect/OptionalNameShakerPerson/valid.goreflect create mode 100644 validator/tests/goreflect/OptionalNameShakerPerson/validator.json create mode 100644 validator/tests/goreflect/OptionalNameShakerPerson/validator.txt create mode 100644 validator/tests/goreflect/OptionalNameShakerPerson/validator.xml create mode 100644 validator/tests/goreflect/OptionalNameSmithPerson/valid.goreflect create mode 100644 validator/tests/goreflect/OptionalNameSmithPerson/validator.json create mode 100644 validator/tests/goreflect/OptionalNameSmithPerson/validator.txt create mode 100644 validator/tests/goreflect/OptionalNameSmithPerson/validator.xml create mode 100644 validator/tests/goreflect/OrNameTelephoneDavid/valid.goreflect create mode 100644 validator/tests/goreflect/OrNameTelephoneDavid/validator.json create mode 100644 validator/tests/goreflect/OrNameTelephoneDavid/validator.txt create mode 100644 validator/tests/goreflect/OrNameTelephoneDavid/validator.xml create mode 100644 validator/tests/goreflect/OrNameTelephoneJohn/valid.goreflect create mode 100644 validator/tests/goreflect/OrNameTelephoneJohn/validator.json create mode 100644 validator/tests/goreflect/OrNameTelephoneJohn/validator.txt create mode 100644 validator/tests/goreflect/OrNameTelephoneJohn/validator.xml create mode 100644 validator/tests/goreflect/OrNameTelephoneMover/valid.goreflect create mode 100644 validator/tests/goreflect/OrNameTelephoneMover/validator.json create mode 100644 validator/tests/goreflect/OrNameTelephoneMover/validator.txt create mode 100644 validator/tests/goreflect/OrNameTelephoneMover/validator.xml create mode 100644 validator/tests/goreflect/OrNameTelephoneSmith/invalid.goreflect create mode 100644 validator/tests/goreflect/OrNameTelephoneSmith/validator.json create mode 100644 validator/tests/goreflect/OrNameTelephoneSmith/validator.txt create mode 100644 validator/tests/goreflect/OrNameTelephoneSmith/validator.xml create mode 100644 validator/tests/goreflect/ProperNotNamePersonDavid/invalid.goreflect create mode 100644 validator/tests/goreflect/ProperNotNamePersonDavid/validator.json create mode 100644 validator/tests/goreflect/ProperNotNamePersonDavid/validator.txt create mode 100644 validator/tests/goreflect/ProperNotNamePersonDavid/validator.xml create mode 100644 validator/tests/goreflect/ProperNotNamePersonNoname/valid.goreflect create mode 100644 validator/tests/goreflect/ProperNotNamePersonNoname/validator.json create mode 100644 validator/tests/goreflect/ProperNotNamePersonNoname/validator.txt create mode 100644 validator/tests/goreflect/ProperNotNamePersonNoname/validator.xml create mode 100644 validator/tests/goreflect/ProperNotNamePersonRobert/valid.goreflect create mode 100644 validator/tests/goreflect/ProperNotNamePersonRobert/validator.json create mode 100644 validator/tests/goreflect/ProperNotNamePersonRobert/validator.txt create mode 100644 validator/tests/goreflect/ProperNotNamePersonRobert/validator.xml create mode 100644 validator/tests/goreflect/ProperNotNamePersonSmith/valid.goreflect create mode 100644 validator/tests/goreflect/ProperNotNamePersonSmith/validator.json create mode 100644 validator/tests/goreflect/ProperNotNamePersonSmith/validator.txt create mode 100644 validator/tests/goreflect/ProperNotNamePersonSmith/validator.xml create mode 100644 validator/tests/goreflect/PuddingMilkShakeNotAny1/invalid.goreflect create mode 100644 validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.json create mode 100644 validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.txt create mode 100644 validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.xml create mode 100644 validator/tests/goreflect/PuddingMilkShakeNotAny2/invalid.goreflect create mode 100644 validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.json create mode 100644 validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.txt create mode 100644 validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.xml create mode 100644 validator/tests/goreflect/RecursiveElbowBightTurn/invalid.goreflect create mode 100644 validator/tests/goreflect/RecursiveElbowBightTurn/validator.json create mode 100644 validator/tests/goreflect/RecursiveElbowBightTurn/validator.txt create mode 100644 validator/tests/goreflect/RecursiveElbowBightTurn/validator.xml create mode 100644 validator/tests/goreflect/RecursiveElbowKnotKnotElbow/valid.goreflect create mode 100644 validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.json create mode 100644 validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.txt create mode 100644 validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.xml create mode 100644 validator/tests/goreflect/RecursiveIoUtil/valid.goreflect create mode 100644 validator/tests/goreflect/RecursiveIoUtil/validator.json create mode 100644 validator/tests/goreflect/RecursiveIoUtil/validator.txt create mode 100644 validator/tests/goreflect/RecursiveIoUtil/validator.xml create mode 100644 validator/tests/goreflect/RecursivePath/valid.goreflect create mode 100644 validator/tests/goreflect/RecursivePath/validator.json create mode 100644 validator/tests/goreflect/RecursivePath/validator.txt create mode 100644 validator/tests/goreflect/RecursivePath/validator.xml create mode 100644 validator/tests/goreflect/RecursiveRuntime/invalid.goreflect create mode 100644 validator/tests/goreflect/RecursiveRuntime/validator.json create mode 100644 validator/tests/goreflect/RecursiveRuntime/validator.txt create mode 100644 validator/tests/goreflect/RecursiveRuntime/validator.xml create mode 100644 validator/tests/goreflect/RecursiveSyscall/invalid.goreflect create mode 100644 validator/tests/goreflect/RecursiveSyscall/validator.json create mode 100644 validator/tests/goreflect/RecursiveSyscall/validator.txt create mode 100644 validator/tests/goreflect/RecursiveSyscall/validator.xml create mode 100644 validator/tests/goreflect/RecursiveTurnBightTurn/valid.goreflect create mode 100644 validator/tests/goreflect/RecursiveTurnBightTurn/validator.json create mode 100644 validator/tests/goreflect/RecursiveTurnBightTurn/validator.txt create mode 100644 validator/tests/goreflect/RecursiveTurnBightTurn/validator.xml create mode 100644 validator/tests/goreflect/RecursiveTurnKnotKnotElbow/invalid.goreflect create mode 100644 validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.json create mode 100644 validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.txt create mode 100644 validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.xml create mode 100644 validator/tests/goreflect/TopTop1/valid.goreflect create mode 100644 validator/tests/goreflect/TopTop1/validator.json create mode 100644 validator/tests/goreflect/TopTop1/validator.txt create mode 100644 validator/tests/goreflect/TopTop1/validator.xml create mode 100644 validator/tests/goreflect/TurfTurf1/invalid.goreflect create mode 100644 validator/tests/goreflect/TurfTurf1/validator.json create mode 100644 validator/tests/goreflect/TurfTurf1/validator.txt create mode 100644 validator/tests/goreflect/TurfTurf1/validator.xml create mode 100644 validator/tests/goreflect/WrongTypeRobert/invalid.goreflect create mode 100644 validator/tests/goreflect/WrongTypeRobert/validator.json create mode 100644 validator/tests/goreflect/WrongTypeRobert/validator.txt create mode 100644 validator/tests/goreflect/WrongTypeRobert/validator.xml create mode 100644 validator/tests/json/APocketRoses/valid.json create mode 100644 validator/tests/json/APocketRoses/validator.json create mode 100644 validator/tests/json/APocketRoses/validator.txt create mode 100644 validator/tests/json/APocketRoses/validator.xml create mode 100644 validator/tests/json/Ab21Any/valid.json create mode 100644 validator/tests/json/Ab21Any/validator.json create mode 100644 validator/tests/json/Ab21Any/validator.txt create mode 100644 validator/tests/json/Ab21Any/validator.xml create mode 100644 validator/tests/json/Ab21InAnyExceptSaladWorry/invalid.json create mode 100644 validator/tests/json/Ab21InAnyExceptSaladWorry/validator.json create mode 100644 validator/tests/json/Ab21InAnyExceptSaladWorry/validator.txt create mode 100644 validator/tests/json/Ab21InAnyExceptSaladWorry/validator.xml create mode 100644 validator/tests/json/Ab21MagazineFrameA/valid.json create mode 100644 validator/tests/json/Ab21MagazineFrameA/validator.json create mode 100644 validator/tests/json/Ab21MagazineFrameA/validator.txt create mode 100644 validator/tests/json/Ab21MagazineFrameA/validator.xml create mode 100644 validator/tests/json/Ab21MagazineFrameSingleA/invalid.json create mode 100644 validator/tests/json/Ab21MagazineFrameSingleA/validator.json create mode 100644 validator/tests/json/Ab21MagazineFrameSingleA/validator.txt create mode 100644 validator/tests/json/Ab21MagazineFrameSingleA/validator.xml create mode 100644 validator/tests/json/Ab21None/invalid.json create mode 100644 validator/tests/json/Ab21None/validator.json create mode 100644 validator/tests/json/Ab21None/validator.txt create mode 100644 validator/tests/json/Ab21None/validator.xml create mode 100644 validator/tests/json/Ab21NotAFieldName/valid.json create mode 100644 validator/tests/json/Ab21NotAFieldName/validator.json create mode 100644 validator/tests/json/Ab21NotAFieldName/validator.txt create mode 100644 validator/tests/json/Ab21NotAFieldName/validator.xml create mode 100644 validator/tests/json/Ab21Spirit1/valid.json create mode 100644 validator/tests/json/Ab21Spirit1/validator.json create mode 100644 validator/tests/json/Ab21Spirit1/validator.txt create mode 100644 validator/tests/json/Ab21Spirit1/validator.xml create mode 100644 validator/tests/json/Ab21Spirit2/invalid.json create mode 100644 validator/tests/json/Ab21Spirit2/validator.json create mode 100644 validator/tests/json/Ab21Spirit2/validator.txt create mode 100644 validator/tests/json/Ab21Spirit2/validator.xml create mode 100644 validator/tests/json/AbcPocketRoses/valid.json create mode 100644 validator/tests/json/AbcPocketRoses/validator.json create mode 100644 validator/tests/json/AbcPocketRoses/validator.txt create mode 100644 validator/tests/json/AbcPocketRoses/validator.xml create mode 100644 validator/tests/json/AndAnyName/valid.json create mode 100644 validator/tests/json/AndAnyName/validator.json create mode 100644 validator/tests/json/AndAnyName/validator.txt create mode 100644 validator/tests/json/AndAnyName/validator.xml create mode 100644 validator/tests/json/AndNameTelephoneDavid/valid.json create mode 100644 validator/tests/json/AndNameTelephoneDavid/validator.json create mode 100644 validator/tests/json/AndNameTelephoneDavid/validator.txt create mode 100644 validator/tests/json/AndNameTelephoneDavid/validator.xml create mode 100644 validator/tests/json/AndNameTelephoneJohn/invalid.json create mode 100644 validator/tests/json/AndNameTelephoneJohn/validator.json create mode 100644 validator/tests/json/AndNameTelephoneJohn/validator.txt create mode 100644 validator/tests/json/AndNameTelephoneJohn/validator.xml create mode 100644 validator/tests/json/AndNameTelephoneMover/invalid.json create mode 100644 validator/tests/json/AndNameTelephoneMover/validator.json create mode 100644 validator/tests/json/AndNameTelephoneMover/validator.txt create mode 100644 validator/tests/json/AndNameTelephoneMover/validator.xml create mode 100644 validator/tests/json/AndNameTelephoneSmith/invalid.json create mode 100644 validator/tests/json/AndNameTelephoneSmith/validator.json create mode 100644 validator/tests/json/AndNameTelephoneSmith/validator.txt create mode 100644 validator/tests/json/AndNameTelephoneSmith/validator.xml create mode 100644 validator/tests/json/BightTurn/invalid.json create mode 100644 validator/tests/json/BightTurn/validator.json create mode 100644 validator/tests/json/BightTurn/validator.txt create mode 100644 validator/tests/json/BightTurn/validator.xml create mode 100644 validator/tests/json/ContextDavid/invalid.json create mode 100644 validator/tests/json/ContextDavid/validator.json create mode 100644 validator/tests/json/ContextDavid/validator.txt create mode 100644 validator/tests/json/ContextDavid/validator.xml create mode 100644 validator/tests/json/ContextRobert/valid.json create mode 100644 validator/tests/json/ContextRobert/validator.json create mode 100644 validator/tests/json/ContextRobert/validator.txt create mode 100644 validator/tests/json/ContextRobert/validator.xml create mode 100644 validator/tests/json/CorrectTypeRobert/valid.json create mode 100644 validator/tests/json/CorrectTypeRobert/validator.json create mode 100644 validator/tests/json/CorrectTypeRobert/validator.txt create mode 100644 validator/tests/json/CorrectTypeRobert/validator.xml create mode 100644 validator/tests/json/DPocketRoses/invalid.json create mode 100644 validator/tests/json/DPocketRoses/validator.json create mode 100644 validator/tests/json/DPocketRoses/validator.txt create mode 100644 validator/tests/json/DPocketRoses/validator.xml create mode 100644 validator/tests/json/DeepLeft811/valid.json create mode 100644 validator/tests/json/DeepLeft811/validator.json create mode 100644 validator/tests/json/DeepLeft811/validator.txt create mode 100644 validator/tests/json/DeepLeft811/validator.xml create mode 100644 validator/tests/json/DontErrorGivenWrongType/invalid.json create mode 100644 validator/tests/json/DontErrorGivenWrongType/validator.json create mode 100644 validator/tests/json/DontErrorGivenWrongType/validator.txt create mode 100644 validator/tests/json/DontErrorGivenWrongType/validator.xml create mode 100644 validator/tests/json/EmptyOrNilJohn/invalid.json create mode 100644 validator/tests/json/EmptyOrNilJohn/validator.json create mode 100644 validator/tests/json/EmptyOrNilJohn/validator.txt create mode 100644 validator/tests/json/EmptyOrNilJohn/validator.xml create mode 100644 validator/tests/json/EmptyOrNilNoname/valid.json create mode 100644 validator/tests/json/EmptyOrNilNoname/validator.json create mode 100644 validator/tests/json/EmptyOrNilNoname/validator.txt create mode 100644 validator/tests/json/EmptyOrNilNoname/validator.xml create mode 100644 validator/tests/json/EmptyOrNilSmith/valid.json create mode 100644 validator/tests/json/EmptyOrNilSmith/validator.json create mode 100644 validator/tests/json/EmptyOrNilSmith/validator.txt create mode 100644 validator/tests/json/EmptyOrNilSmith/validator.xml create mode 100644 validator/tests/json/FinalCPocketRoses/valid.json create mode 100644 validator/tests/json/FinalCPocketRoses/validator.json create mode 100644 validator/tests/json/FinalCPocketRoses/validator.txt create mode 100644 validator/tests/json/FinalCPocketRoses/validator.xml create mode 100644 validator/tests/json/GoBigOr10/valid.json create mode 100644 validator/tests/json/GoBigOr10/validator.json create mode 100644 validator/tests/json/GoBigOr10/validator.txt create mode 100644 validator/tests/json/GoBigOr10/validator.xml create mode 100644 validator/tests/json/GoBigOr5/valid.json create mode 100644 validator/tests/json/GoBigOr5/validator.json create mode 100644 validator/tests/json/GoBigOr5/validator.txt create mode 100644 validator/tests/json/GoBigOr5/validator.xml create mode 100644 validator/tests/json/GoBigOr6/valid.json create mode 100644 validator/tests/json/GoBigOr6/validator.json create mode 100644 validator/tests/json/GoBigOr6/validator.txt create mode 100644 validator/tests/json/GoBigOr6/validator.xml create mode 100644 validator/tests/json/GoBigOr7/valid.json create mode 100644 validator/tests/json/GoBigOr7/validator.json create mode 100644 validator/tests/json/GoBigOr7/validator.txt create mode 100644 validator/tests/json/GoBigOr7/validator.xml create mode 100644 validator/tests/json/GoBigOr8/valid.json create mode 100644 validator/tests/json/GoBigOr8/validator.json create mode 100644 validator/tests/json/GoBigOr8/validator.txt create mode 100644 validator/tests/json/GoBigOr8/validator.xml create mode 100644 validator/tests/json/GoBigOr9/valid.json create mode 100644 validator/tests/json/GoBigOr9/validator.json create mode 100644 validator/tests/json/GoBigOr9/validator.txt create mode 100644 validator/tests/json/GoBigOr9/validator.xml create mode 100644 validator/tests/json/HiddenLeftRecursionDavid/valid.json create mode 100644 validator/tests/json/HiddenLeftRecursionDavid/validator.json create mode 100644 validator/tests/json/HiddenLeftRecursionDavid/validator.txt create mode 100644 validator/tests/json/HiddenLeftRecursionDavid/validator.xml create mode 100644 validator/tests/json/HiddenLeftRecursionRobert/invalid.json create mode 100644 validator/tests/json/HiddenLeftRecursionRobert/validator.json create mode 100644 validator/tests/json/HiddenLeftRecursionRobert/validator.txt create mode 100644 validator/tests/json/HiddenLeftRecursionRobert/validator.xml create mode 100644 validator/tests/json/InSetPersonDavid/invalid.json create mode 100644 validator/tests/json/InSetPersonDavid/validator.json create mode 100644 validator/tests/json/InSetPersonDavid/validator.txt create mode 100644 validator/tests/json/InSetPersonDavid/validator.xml create mode 100644 validator/tests/json/InSetPersonRobert/valid.json create mode 100644 validator/tests/json/InSetPersonRobert/validator.json create mode 100644 validator/tests/json/InSetPersonRobert/validator.txt create mode 100644 validator/tests/json/InSetPersonRobert/validator.xml create mode 100644 validator/tests/json/KnotKnotElbow/valid.json create mode 100644 validator/tests/json/KnotKnotElbow/validator.json create mode 100644 validator/tests/json/KnotKnotElbow/validator.txt create mode 100644 validator/tests/json/KnotKnotElbow/validator.xml create mode 100644 validator/tests/json/LatentSimplificationFalse/invalid.json create mode 100644 validator/tests/json/LatentSimplificationFalse/validator.json create mode 100644 validator/tests/json/LatentSimplificationFalse/validator.txt create mode 100644 validator/tests/json/LatentSimplificationFalse/validator.xml create mode 100644 validator/tests/json/LatentSimplificationTrue/valid.json create mode 100644 validator/tests/json/LatentSimplificationTrue/validator.json create mode 100644 validator/tests/json/LatentSimplificationTrue/validator.txt create mode 100644 validator/tests/json/LatentSimplificationTrue/validator.xml create mode 100644 validator/tests/json/LeftRecursionDavid/valid.json create mode 100644 validator/tests/json/LeftRecursionDavid/validator.json create mode 100644 validator/tests/json/LeftRecursionDavid/validator.txt create mode 100644 validator/tests/json/LeftRecursionDavid/validator.xml create mode 100644 validator/tests/json/LeftRecursionRobert/invalid.json create mode 100644 validator/tests/json/LeftRecursionRobert/validator.json create mode 100644 validator/tests/json/LeftRecursionRobert/validator.txt create mode 100644 validator/tests/json/LeftRecursionRobert/validator.xml create mode 100644 validator/tests/json/LenNameJohn/invalid.json create mode 100644 validator/tests/json/LenNameJohn/validator.json create mode 100644 validator/tests/json/LenNameJohn/validator.txt create mode 100644 validator/tests/json/LenNameJohn/validator.xml create mode 100644 validator/tests/json/LenNameNoname/invalid.json create mode 100644 validator/tests/json/LenNameNoname/validator.json create mode 100644 validator/tests/json/LenNameNoname/validator.txt create mode 100644 validator/tests/json/LenNameNoname/validator.xml create mode 100644 validator/tests/json/LenNameSmith/valid.json create mode 100644 validator/tests/json/LenNameSmith/validator.json create mode 100644 validator/tests/json/LenNameSmith/validator.txt create mode 100644 validator/tests/json/LenNameSmith/validator.xml create mode 100644 validator/tests/json/ListIndexAddressMover/invalid.json create mode 100644 validator/tests/json/ListIndexAddressMover/validator.json create mode 100644 validator/tests/json/ListIndexAddressMover/validator.txt create mode 100644 validator/tests/json/ListIndexAddressMover/validator.xml create mode 100644 validator/tests/json/ListIndexAddressRoutine/invalid.json create mode 100644 validator/tests/json/ListIndexAddressRoutine/validator.json create mode 100644 validator/tests/json/ListIndexAddressRoutine/validator.txt create mode 100644 validator/tests/json/ListIndexAddressRoutine/validator.xml create mode 100644 validator/tests/json/ListIndexAddressShaker/valid.json create mode 100644 validator/tests/json/ListIndexAddressShaker/validator.json create mode 100644 validator/tests/json/ListIndexAddressShaker/validator.txt create mode 100644 validator/tests/json/ListIndexAddressShaker/validator.xml create mode 100644 validator/tests/json/ListOfTelephonesDavid/valid.json create mode 100644 validator/tests/json/ListOfTelephonesDavid/validator.json create mode 100644 validator/tests/json/ListOfTelephonesDavid/validator.txt create mode 100644 validator/tests/json/ListOfTelephonesDavid/validator.xml create mode 100644 validator/tests/json/ListOfTelephonesRoutine/invalid.json create mode 100644 validator/tests/json/ListOfTelephonesRoutine/validator.json create mode 100644 validator/tests/json/ListOfTelephonesRoutine/validator.txt create mode 100644 validator/tests/json/ListOfTelephonesRoutine/validator.xml create mode 100644 validator/tests/json/ListOfTelephonesShaker/valid.json create mode 100644 validator/tests/json/ListOfTelephonesShaker/validator.json create mode 100644 validator/tests/json/ListOfTelephonesShaker/validator.txt create mode 100644 validator/tests/json/ListOfTelephonesShaker/validator.xml create mode 100644 validator/tests/json/NaiveNotNameDavid/invalid.json create mode 100644 validator/tests/json/NaiveNotNameDavid/validator.json create mode 100644 validator/tests/json/NaiveNotNameDavid/validator.txt create mode 100644 validator/tests/json/NaiveNotNameDavid/validator.xml create mode 100644 validator/tests/json/NaiveNotNameNoname/invalid.json create mode 100644 validator/tests/json/NaiveNotNameNoname/validator.json create mode 100644 validator/tests/json/NaiveNotNameNoname/validator.txt create mode 100644 validator/tests/json/NaiveNotNameNoname/validator.xml create mode 100644 validator/tests/json/NaiveNotNameRobert/valid.json create mode 100644 validator/tests/json/NaiveNotNameRobert/validator.json create mode 100644 validator/tests/json/NaiveNotNameRobert/validator.txt create mode 100644 validator/tests/json/NaiveNotNameRobert/validator.xml create mode 100644 validator/tests/json/NaiveNotNameSmith/valid.json create mode 100644 validator/tests/json/NaiveNotNameSmith/validator.json create mode 100644 validator/tests/json/NaiveNotNameSmith/validator.txt create mode 100644 validator/tests/json/NaiveNotNameSmith/validator.xml create mode 100644 validator/tests/json/NextAPocketRoses/invalid.json create mode 100644 validator/tests/json/NextAPocketRoses/validator.json create mode 100644 validator/tests/json/NextAPocketRoses/validator.txt create mode 100644 validator/tests/json/NextAPocketRoses/validator.xml create mode 100644 validator/tests/json/NilNameJohn/invalid.json create mode 100644 validator/tests/json/NilNameJohn/validator.json create mode 100644 validator/tests/json/NilNameJohn/validator.txt create mode 100644 validator/tests/json/NilNameJohn/validator.xml create mode 100644 validator/tests/json/NilNameNoname/valid.json create mode 100644 validator/tests/json/NilNameNoname/validator.json create mode 100644 validator/tests/json/NilNameNoname/validator.txt create mode 100644 validator/tests/json/NilNameNoname/validator.xml create mode 100644 validator/tests/json/NilNameSmith/invalid.json create mode 100644 validator/tests/json/NilNameSmith/validator.json create mode 100644 validator/tests/json/NilNameSmith/validator.txt create mode 100644 validator/tests/json/NilNameSmith/validator.xml create mode 100644 validator/tests/json/OneHash811/invalid.json create mode 100644 validator/tests/json/OneHash811/validator.json create mode 100644 validator/tests/json/OneHash811/validator.txt create mode 100644 validator/tests/json/OneHash811/validator.xml create mode 100644 validator/tests/json/OneLeftAndTwoRightHashes811/valid.json create mode 100644 validator/tests/json/OneLeftAndTwoRightHashes811/validator.json create mode 100644 validator/tests/json/OneLeftAndTwoRightHashes811/validator.txt create mode 100644 validator/tests/json/OneLeftAndTwoRightHashes811/validator.xml create mode 100644 validator/tests/json/OptionalAddressDavidPerson/valid.json create mode 100644 validator/tests/json/OptionalAddressDavidPerson/validator.json create mode 100644 validator/tests/json/OptionalAddressDavidPerson/validator.txt create mode 100644 validator/tests/json/OptionalAddressDavidPerson/validator.xml create mode 100644 validator/tests/json/OptionalAddressMoverPerson/invalid.json create mode 100644 validator/tests/json/OptionalAddressMoverPerson/validator.json create mode 100644 validator/tests/json/OptionalAddressMoverPerson/validator.txt create mode 100644 validator/tests/json/OptionalAddressMoverPerson/validator.xml create mode 100644 validator/tests/json/OptionalAddressRobertPerson/valid.json create mode 100644 validator/tests/json/OptionalAddressRobertPerson/validator.json create mode 100644 validator/tests/json/OptionalAddressRobertPerson/validator.txt create mode 100644 validator/tests/json/OptionalAddressRobertPerson/validator.xml create mode 100644 validator/tests/json/OptionalNameJohnPerson/invalid.json create mode 100644 validator/tests/json/OptionalNameJohnPerson/validator.json create mode 100644 validator/tests/json/OptionalNameJohnPerson/validator.txt create mode 100644 validator/tests/json/OptionalNameJohnPerson/validator.xml create mode 100644 validator/tests/json/OptionalNameNonamePerson/valid.json create mode 100644 validator/tests/json/OptionalNameNonamePerson/validator.json create mode 100644 validator/tests/json/OptionalNameNonamePerson/validator.txt create mode 100644 validator/tests/json/OptionalNameNonamePerson/validator.xml create mode 100644 validator/tests/json/OptionalNameRoutinePerson/invalid.json create mode 100644 validator/tests/json/OptionalNameRoutinePerson/validator.json create mode 100644 validator/tests/json/OptionalNameRoutinePerson/validator.txt create mode 100644 validator/tests/json/OptionalNameRoutinePerson/validator.xml create mode 100644 validator/tests/json/OptionalNameShakerPerson/valid.json create mode 100644 validator/tests/json/OptionalNameShakerPerson/validator.json create mode 100644 validator/tests/json/OptionalNameShakerPerson/validator.txt create mode 100644 validator/tests/json/OptionalNameShakerPerson/validator.xml create mode 100644 validator/tests/json/OptionalNameSmithPerson/valid.json create mode 100644 validator/tests/json/OptionalNameSmithPerson/validator.json create mode 100644 validator/tests/json/OptionalNameSmithPerson/validator.txt create mode 100644 validator/tests/json/OptionalNameSmithPerson/validator.xml create mode 100644 validator/tests/json/OrNameTelephoneDavid/valid.json create mode 100644 validator/tests/json/OrNameTelephoneDavid/validator.json create mode 100644 validator/tests/json/OrNameTelephoneDavid/validator.txt create mode 100644 validator/tests/json/OrNameTelephoneDavid/validator.xml create mode 100644 validator/tests/json/OrNameTelephoneJohn/valid.json create mode 100644 validator/tests/json/OrNameTelephoneJohn/validator.json create mode 100644 validator/tests/json/OrNameTelephoneJohn/validator.txt create mode 100644 validator/tests/json/OrNameTelephoneJohn/validator.xml create mode 100644 validator/tests/json/OrNameTelephoneMover/valid.json create mode 100644 validator/tests/json/OrNameTelephoneMover/validator.json create mode 100644 validator/tests/json/OrNameTelephoneMover/validator.txt create mode 100644 validator/tests/json/OrNameTelephoneMover/validator.xml create mode 100644 validator/tests/json/OrNameTelephoneSmith/invalid.json create mode 100644 validator/tests/json/OrNameTelephoneSmith/validator.json create mode 100644 validator/tests/json/OrNameTelephoneSmith/validator.txt create mode 100644 validator/tests/json/OrNameTelephoneSmith/validator.xml create mode 100644 validator/tests/json/Page194abcd/valid.json create mode 100644 validator/tests/json/Page194abcd/validator.json create mode 100644 validator/tests/json/Page194abcd/validator.txt create mode 100644 validator/tests/json/Page194abcd/validator.xml create mode 100644 validator/tests/json/Page194abdc/invalid.json create mode 100644 validator/tests/json/Page194abdc/validator.json create mode 100644 validator/tests/json/Page194abdc/validator.txt create mode 100644 validator/tests/json/Page194abdc/validator.xml create mode 100644 validator/tests/json/Page194acbd/valid.json create mode 100644 validator/tests/json/Page194acbd/validator.json create mode 100644 validator/tests/json/Page194acbd/validator.txt create mode 100644 validator/tests/json/Page194acbd/validator.xml create mode 100644 validator/tests/json/Page194acdb/valid.json create mode 100644 validator/tests/json/Page194acdb/validator.json create mode 100644 validator/tests/json/Page194acdb/validator.txt create mode 100644 validator/tests/json/Page194acdb/validator.xml create mode 100644 validator/tests/json/Page194adbc/invalid.json create mode 100644 validator/tests/json/Page194adbc/validator.json create mode 100644 validator/tests/json/Page194adbc/validator.txt create mode 100644 validator/tests/json/Page194adbc/validator.xml create mode 100644 validator/tests/json/Page194adcb/invalid.json create mode 100644 validator/tests/json/Page194adcb/validator.json create mode 100644 validator/tests/json/Page194adcb/validator.txt create mode 100644 validator/tests/json/Page194adcb/validator.xml create mode 100644 validator/tests/json/Page194bacd/invalid.json create mode 100644 validator/tests/json/Page194bacd/validator.json create mode 100644 validator/tests/json/Page194bacd/validator.txt create mode 100644 validator/tests/json/Page194bacd/validator.xml create mode 100644 validator/tests/json/Page194badc/invalid.json create mode 100644 validator/tests/json/Page194badc/validator.json create mode 100644 validator/tests/json/Page194badc/validator.txt create mode 100644 validator/tests/json/Page194badc/validator.xml create mode 100644 validator/tests/json/Page194bcad/invalid.json create mode 100644 validator/tests/json/Page194bcad/validator.json create mode 100644 validator/tests/json/Page194bcad/validator.txt create mode 100644 validator/tests/json/Page194bcad/validator.xml create mode 100644 validator/tests/json/Page194bcda/invalid.json create mode 100644 validator/tests/json/Page194bcda/validator.json create mode 100644 validator/tests/json/Page194bcda/validator.txt create mode 100644 validator/tests/json/Page194bcda/validator.xml create mode 100644 validator/tests/json/Page194bdac/invalid.json create mode 100644 validator/tests/json/Page194bdac/validator.json create mode 100644 validator/tests/json/Page194bdac/validator.txt create mode 100644 validator/tests/json/Page194bdac/validator.xml create mode 100644 validator/tests/json/Page194bdca/invalid.json create mode 100644 validator/tests/json/Page194bdca/validator.json create mode 100644 validator/tests/json/Page194bdca/validator.txt create mode 100644 validator/tests/json/Page194bdca/validator.xml create mode 100644 validator/tests/json/Page194cabd/valid.json create mode 100644 validator/tests/json/Page194cabd/validator.json create mode 100644 validator/tests/json/Page194cabd/validator.txt create mode 100644 validator/tests/json/Page194cabd/validator.xml create mode 100644 validator/tests/json/Page194cadb/valid.json create mode 100644 validator/tests/json/Page194cadb/validator.json create mode 100644 validator/tests/json/Page194cadb/validator.txt create mode 100644 validator/tests/json/Page194cadb/validator.xml create mode 100644 validator/tests/json/Page194cbad/invalid.json create mode 100644 validator/tests/json/Page194cbad/validator.json create mode 100644 validator/tests/json/Page194cbad/validator.txt create mode 100644 validator/tests/json/Page194cbad/validator.xml create mode 100644 validator/tests/json/Page194cbda/invalid.json create mode 100644 validator/tests/json/Page194cbda/validator.json create mode 100644 validator/tests/json/Page194cbda/validator.txt create mode 100644 validator/tests/json/Page194cbda/validator.xml create mode 100644 validator/tests/json/Page194cdab/valid.json create mode 100644 validator/tests/json/Page194cdab/validator.json create mode 100644 validator/tests/json/Page194cdab/validator.txt create mode 100644 validator/tests/json/Page194cdab/validator.xml create mode 100644 validator/tests/json/Page194cdba/invalid.json create mode 100644 validator/tests/json/Page194cdba/validator.json create mode 100644 validator/tests/json/Page194cdba/validator.txt create mode 100644 validator/tests/json/Page194cdba/validator.xml create mode 100644 validator/tests/json/Page194dabc/invalid.json create mode 100644 validator/tests/json/Page194dabc/validator.json create mode 100644 validator/tests/json/Page194dabc/validator.txt create mode 100644 validator/tests/json/Page194dabc/validator.xml create mode 100644 validator/tests/json/Page194dacb/invalid.json create mode 100644 validator/tests/json/Page194dacb/validator.json create mode 100644 validator/tests/json/Page194dacb/validator.txt create mode 100644 validator/tests/json/Page194dacb/validator.xml create mode 100644 validator/tests/json/Page194dbac/invalid.json create mode 100644 validator/tests/json/Page194dbac/validator.json create mode 100644 validator/tests/json/Page194dbac/validator.txt create mode 100644 validator/tests/json/Page194dbac/validator.xml create mode 100644 validator/tests/json/Page194dbca/invalid.json create mode 100644 validator/tests/json/Page194dbca/validator.json create mode 100644 validator/tests/json/Page194dbca/validator.txt create mode 100644 validator/tests/json/Page194dbca/validator.xml create mode 100644 validator/tests/json/Page194dcab/invalid.json create mode 100644 validator/tests/json/Page194dcab/validator.json create mode 100644 validator/tests/json/Page194dcab/validator.txt create mode 100644 validator/tests/json/Page194dcab/validator.xml create mode 100644 validator/tests/json/Page194dcba/invalid.json create mode 100644 validator/tests/json/Page194dcba/validator.json create mode 100644 validator/tests/json/Page194dcba/validator.txt create mode 100644 validator/tests/json/Page194dcba/validator.xml create mode 100644 validator/tests/json/PlaygroundFalse/invalid.json create mode 100644 validator/tests/json/PlaygroundFalse/validator.json create mode 100644 validator/tests/json/PlaygroundFalse/validator.txt create mode 100644 validator/tests/json/PlaygroundFalse/validator.xml create mode 100644 validator/tests/json/PlaygroundTrue/valid.json create mode 100644 validator/tests/json/PlaygroundTrue/validator.json create mode 100644 validator/tests/json/PlaygroundTrue/validator.txt create mode 100644 validator/tests/json/PlaygroundTrue/validator.xml create mode 100644 validator/tests/json/ProperNotNamePersonDavid/invalid.json create mode 100644 validator/tests/json/ProperNotNamePersonDavid/validator.json create mode 100644 validator/tests/json/ProperNotNamePersonDavid/validator.txt create mode 100644 validator/tests/json/ProperNotNamePersonDavid/validator.xml create mode 100644 validator/tests/json/ProperNotNamePersonNoname/valid.json create mode 100644 validator/tests/json/ProperNotNamePersonNoname/validator.json create mode 100644 validator/tests/json/ProperNotNamePersonNoname/validator.txt create mode 100644 validator/tests/json/ProperNotNamePersonNoname/validator.xml create mode 100644 validator/tests/json/ProperNotNamePersonRobert/valid.json create mode 100644 validator/tests/json/ProperNotNamePersonRobert/validator.json create mode 100644 validator/tests/json/ProperNotNamePersonRobert/validator.txt create mode 100644 validator/tests/json/ProperNotNamePersonRobert/validator.xml create mode 100644 validator/tests/json/ProperNotNamePersonSmith/valid.json create mode 100644 validator/tests/json/ProperNotNamePersonSmith/validator.json create mode 100644 validator/tests/json/ProperNotNamePersonSmith/validator.txt create mode 100644 validator/tests/json/ProperNotNamePersonSmith/validator.xml create mode 100644 validator/tests/json/PuddingMilkShakeNotAny1/invalid.json create mode 100644 validator/tests/json/PuddingMilkShakeNotAny1/validator.json create mode 100644 validator/tests/json/PuddingMilkShakeNotAny1/validator.txt create mode 100644 validator/tests/json/PuddingMilkShakeNotAny1/validator.xml create mode 100644 validator/tests/json/PuddingMilkShakeNotAny2/invalid.json create mode 100644 validator/tests/json/PuddingMilkShakeNotAny2/validator.json create mode 100644 validator/tests/json/PuddingMilkShakeNotAny2/validator.txt create mode 100644 validator/tests/json/PuddingMilkShakeNotAny2/validator.xml create mode 100644 validator/tests/json/RecursiveElbowBightTurn/invalid.json create mode 100644 validator/tests/json/RecursiveElbowBightTurn/validator.json create mode 100644 validator/tests/json/RecursiveElbowBightTurn/validator.txt create mode 100644 validator/tests/json/RecursiveElbowBightTurn/validator.xml create mode 100644 validator/tests/json/RecursiveElbowKnotKnotElbow/valid.json create mode 100644 validator/tests/json/RecursiveElbowKnotKnotElbow/validator.json create mode 100644 validator/tests/json/RecursiveElbowKnotKnotElbow/validator.txt create mode 100644 validator/tests/json/RecursiveElbowKnotKnotElbow/validator.xml create mode 100644 validator/tests/json/RecursiveIoUtil/valid.json create mode 100644 validator/tests/json/RecursiveIoUtil/validator.json create mode 100644 validator/tests/json/RecursiveIoUtil/validator.txt create mode 100644 validator/tests/json/RecursiveIoUtil/validator.xml create mode 100644 validator/tests/json/RecursivePath/valid.json create mode 100644 validator/tests/json/RecursivePath/validator.json create mode 100644 validator/tests/json/RecursivePath/validator.txt create mode 100644 validator/tests/json/RecursivePath/validator.xml create mode 100644 validator/tests/json/RecursiveRuntime/invalid.json create mode 100644 validator/tests/json/RecursiveRuntime/validator.json create mode 100644 validator/tests/json/RecursiveRuntime/validator.txt create mode 100644 validator/tests/json/RecursiveRuntime/validator.xml create mode 100644 validator/tests/json/RecursiveSyscall/invalid.json create mode 100644 validator/tests/json/RecursiveSyscall/validator.json create mode 100644 validator/tests/json/RecursiveSyscall/validator.txt create mode 100644 validator/tests/json/RecursiveSyscall/validator.xml create mode 100644 validator/tests/json/RecursiveTurnBightTurn/valid.json create mode 100644 validator/tests/json/RecursiveTurnBightTurn/validator.json create mode 100644 validator/tests/json/RecursiveTurnBightTurn/validator.txt create mode 100644 validator/tests/json/RecursiveTurnBightTurn/validator.xml create mode 100644 validator/tests/json/RecursiveTurnKnotKnotElbow/invalid.json create mode 100644 validator/tests/json/RecursiveTurnKnotKnotElbow/validator.json create mode 100644 validator/tests/json/RecursiveTurnKnotKnotElbow/validator.txt create mode 100644 validator/tests/json/RecursiveTurnKnotKnotElbow/validator.xml create mode 100644 validator/tests/json/TopTop1/valid.json create mode 100644 validator/tests/json/TopTop1/validator.json create mode 100644 validator/tests/json/TopTop1/validator.txt create mode 100644 validator/tests/json/TopTop1/validator.xml create mode 100644 validator/tests/json/TurfTurf1/invalid.json create mode 100644 validator/tests/json/TurfTurf1/validator.json create mode 100644 validator/tests/json/TurfTurf1/validator.txt create mode 100644 validator/tests/json/TurfTurf1/validator.xml create mode 100644 validator/tests/json/TwoHashes811/valid.json create mode 100644 validator/tests/json/TwoHashes811/validator.json create mode 100644 validator/tests/json/TwoHashes811/validator.txt create mode 100644 validator/tests/json/TwoHashes811/validator.xml create mode 100644 validator/tests/json/TwoLeftAndOneRightHashes811/valid.json create mode 100644 validator/tests/json/TwoLeftAndOneRightHashes811/validator.json create mode 100644 validator/tests/json/TwoLeftAndOneRightHashes811/validator.txt create mode 100644 validator/tests/json/TwoLeftAndOneRightHashes811/validator.xml create mode 100644 validator/tests/json/WrongTypeRobert/invalid.json create mode 100644 validator/tests/json/WrongTypeRobert/validator.json create mode 100644 validator/tests/json/WrongTypeRobert/validator.txt create mode 100644 validator/tests/json/WrongTypeRobert/validator.xml create mode 100644 validator/tests/pb/APocketRoses/valid.main.PocketRoses.desc.pb create mode 100644 validator/tests/pb/APocketRoses/validator.json create mode 100644 validator/tests/pb/APocketRoses/validator.txt create mode 100644 validator/tests/pb/APocketRoses/validator.xml create mode 100644 validator/tests/pb/Ab21Any/valid.main.FinanceJudo.desc.pb create mode 100644 validator/tests/pb/Ab21Any/validator.json create mode 100644 validator/tests/pb/Ab21Any/validator.txt create mode 100644 validator/tests/pb/Ab21Any/validator.xml create mode 100644 validator/tests/pb/Ab21InAnyExceptSaladWorry/invalid.main.FinanceJudo.desc.pb create mode 100644 validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.json create mode 100644 validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.txt create mode 100644 validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.xml create mode 100644 validator/tests/pb/Ab21MagazineFrameA/valid.main.FinanceJudo.desc.pb create mode 100644 validator/tests/pb/Ab21MagazineFrameA/validator.json create mode 100644 validator/tests/pb/Ab21MagazineFrameA/validator.txt create mode 100644 validator/tests/pb/Ab21MagazineFrameA/validator.xml create mode 100644 validator/tests/pb/Ab21MagazineFrameSingleA/invalid.main.FinanceJudo.desc.pb create mode 100644 validator/tests/pb/Ab21MagazineFrameSingleA/validator.json create mode 100644 validator/tests/pb/Ab21MagazineFrameSingleA/validator.txt create mode 100644 validator/tests/pb/Ab21MagazineFrameSingleA/validator.xml create mode 100644 validator/tests/pb/Ab21None/invalid.main.FinanceJudo.desc.pb create mode 100644 validator/tests/pb/Ab21None/validator.json create mode 100644 validator/tests/pb/Ab21None/validator.txt create mode 100644 validator/tests/pb/Ab21None/validator.xml create mode 100644 validator/tests/pb/Ab21NotAFieldName/valid.main.FinanceJudo.desc.pb create mode 100644 validator/tests/pb/Ab21NotAFieldName/validator.json create mode 100644 validator/tests/pb/Ab21NotAFieldName/validator.txt create mode 100644 validator/tests/pb/Ab21NotAFieldName/validator.xml create mode 100644 validator/tests/pb/Ab21Spirit1/valid.main.FinanceJudo.desc.pb create mode 100644 validator/tests/pb/Ab21Spirit1/validator.json create mode 100644 validator/tests/pb/Ab21Spirit1/validator.txt create mode 100644 validator/tests/pb/Ab21Spirit1/validator.xml create mode 100644 validator/tests/pb/Ab21Spirit2/invalid.main.FinanceJudo.desc.pb create mode 100644 validator/tests/pb/Ab21Spirit2/validator.json create mode 100644 validator/tests/pb/Ab21Spirit2/validator.txt create mode 100644 validator/tests/pb/Ab21Spirit2/validator.xml create mode 100644 validator/tests/pb/AbcPocketRoses/valid.main.PocketRoses.desc.pb create mode 100644 validator/tests/pb/AbcPocketRoses/validator.json create mode 100644 validator/tests/pb/AbcPocketRoses/validator.txt create mode 100644 validator/tests/pb/AbcPocketRoses/validator.xml create mode 100644 validator/tests/pb/AndAnyName/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/AndAnyName/validator.json create mode 100644 validator/tests/pb/AndAnyName/validator.txt create mode 100644 validator/tests/pb/AndAnyName/validator.xml create mode 100644 validator/tests/pb/AndNameTelephoneDavid/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/AndNameTelephoneDavid/validator.json create mode 100644 validator/tests/pb/AndNameTelephoneDavid/validator.txt create mode 100644 validator/tests/pb/AndNameTelephoneDavid/validator.xml create mode 100644 validator/tests/pb/AndNameTelephoneJohn/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/AndNameTelephoneJohn/validator.json create mode 100644 validator/tests/pb/AndNameTelephoneJohn/validator.txt create mode 100644 validator/tests/pb/AndNameTelephoneJohn/validator.xml create mode 100644 validator/tests/pb/AndNameTelephoneMover/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/AndNameTelephoneMover/validator.json create mode 100644 validator/tests/pb/AndNameTelephoneMover/validator.txt create mode 100644 validator/tests/pb/AndNameTelephoneMover/validator.xml create mode 100644 validator/tests/pb/AndNameTelephoneSmith/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/AndNameTelephoneSmith/validator.json create mode 100644 validator/tests/pb/AndNameTelephoneSmith/validator.txt create mode 100644 validator/tests/pb/AndNameTelephoneSmith/validator.xml create mode 100644 validator/tests/pb/BananaLargeMatch/valid.main.BananaTuple.desc.pb create mode 100644 validator/tests/pb/BananaLargeMatch/validator.json create mode 100644 validator/tests/pb/BananaLargeMatch/validator.txt create mode 100644 validator/tests/pb/BananaLargeMatch/validator.xml create mode 100644 validator/tests/pb/BananaLarger800Match/valid.main.BananaTuple.desc.pb create mode 100644 validator/tests/pb/BananaLarger800Match/validator.txt create mode 100644 validator/tests/pb/BenchBridgePepperAndFountainTarget/valid.main.PuddingMilkshake.desc.pb create mode 100644 validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.json create mode 100644 validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.txt create mode 100644 validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.xml create mode 100644 validator/tests/pb/BightTurn/invalid.main.Knot.desc.pb create mode 100644 validator/tests/pb/BightTurn/validator.json create mode 100644 validator/tests/pb/BightTurn/validator.txt create mode 100644 validator/tests/pb/BightTurn/validator.xml create mode 100644 validator/tests/pb/BridgePepper/valid.main.PuddingMilkshake.desc.pb create mode 100644 validator/tests/pb/BridgePepper/validator.json create mode 100644 validator/tests/pb/BridgePepper/validator.txt create mode 100644 validator/tests/pb/BridgePepper/validator.xml create mode 100644 validator/tests/pb/ContextDavid/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/ContextDavid/validator.json create mode 100644 validator/tests/pb/ContextDavid/validator.txt create mode 100644 validator/tests/pb/ContextDavid/validator.xml create mode 100644 validator/tests/pb/ContextRobert/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/ContextRobert/validator.json create mode 100644 validator/tests/pb/ContextRobert/validator.txt create mode 100644 validator/tests/pb/ContextRobert/validator.xml create mode 100644 validator/tests/pb/CorrectTypeRobert/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/CorrectTypeRobert/validator.json create mode 100644 validator/tests/pb/CorrectTypeRobert/validator.txt create mode 100644 validator/tests/pb/CorrectTypeRobert/validator.xml create mode 100644 validator/tests/pb/DPocketRoses/invalid.main.PocketRoses.desc.pb create mode 100644 validator/tests/pb/DPocketRoses/validator.json create mode 100644 validator/tests/pb/DPocketRoses/validator.txt create mode 100644 validator/tests/pb/DPocketRoses/validator.xml create mode 100644 validator/tests/pb/DontErrorGivenWrongType/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/DontErrorGivenWrongType/validator.json create mode 100644 validator/tests/pb/DontErrorGivenWrongType/validator.txt create mode 100644 validator/tests/pb/DontErrorGivenWrongType/validator.xml create mode 100644 validator/tests/pb/EmptyOrNilJohn/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/EmptyOrNilJohn/validator.json create mode 100644 validator/tests/pb/EmptyOrNilJohn/validator.txt create mode 100644 validator/tests/pb/EmptyOrNilJohn/validator.xml create mode 100644 validator/tests/pb/EmptyOrNilNoname/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/EmptyOrNilNoname/validator.json create mode 100644 validator/tests/pb/EmptyOrNilNoname/validator.txt create mode 100644 validator/tests/pb/EmptyOrNilNoname/validator.xml create mode 100644 validator/tests/pb/EmptyOrNilSmith/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/EmptyOrNilSmith/validator.json create mode 100644 validator/tests/pb/EmptyOrNilSmith/validator.txt create mode 100644 validator/tests/pb/EmptyOrNilSmith/validator.xml create mode 100644 validator/tests/pb/FinalCPocketRoses/valid.main.PocketRoses.desc.pb create mode 100644 validator/tests/pb/FinalCPocketRoses/validator.json create mode 100644 validator/tests/pb/FinalCPocketRoses/validator.txt create mode 100644 validator/tests/pb/FinalCPocketRoses/validator.xml create mode 100644 validator/tests/pb/HiddenLeftRecursionDavid/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/HiddenLeftRecursionDavid/validator.json create mode 100644 validator/tests/pb/HiddenLeftRecursionDavid/validator.txt create mode 100644 validator/tests/pb/HiddenLeftRecursionDavid/validator.xml create mode 100644 validator/tests/pb/HiddenLeftRecursionRobert/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/HiddenLeftRecursionRobert/validator.json create mode 100644 validator/tests/pb/HiddenLeftRecursionRobert/validator.txt create mode 100644 validator/tests/pb/HiddenLeftRecursionRobert/validator.xml create mode 100644 validator/tests/pb/InSetPersonDavid/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/InSetPersonDavid/validator.json create mode 100644 validator/tests/pb/InSetPersonDavid/validator.txt create mode 100644 validator/tests/pb/InSetPersonDavid/validator.xml create mode 100644 validator/tests/pb/InSetPersonRobert/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/InSetPersonRobert/validator.json create mode 100644 validator/tests/pb/InSetPersonRobert/validator.txt create mode 100644 validator/tests/pb/InSetPersonRobert/validator.xml create mode 100644 validator/tests/pb/KnotKnotElbow/valid.main.Knot.desc.pb create mode 100644 validator/tests/pb/KnotKnotElbow/validator.json create mode 100644 validator/tests/pb/KnotKnotElbow/validator.txt create mode 100644 validator/tests/pb/KnotKnotElbow/validator.xml create mode 100644 validator/tests/pb/LatentSimplificationFalse/invalid.main.TypewriterPrison.desc.pb create mode 100644 validator/tests/pb/LatentSimplificationFalse/validator.json create mode 100644 validator/tests/pb/LatentSimplificationFalse/validator.txt create mode 100644 validator/tests/pb/LatentSimplificationFalse/validator.xml create mode 100644 validator/tests/pb/LatentSimplificationTrue/valid.main.TypewriterPrison.desc.pb create mode 100644 validator/tests/pb/LatentSimplificationTrue/validator.json create mode 100644 validator/tests/pb/LatentSimplificationTrue/validator.txt create mode 100644 validator/tests/pb/LatentSimplificationTrue/validator.xml create mode 100644 validator/tests/pb/LeftRecursionDavid/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/LeftRecursionDavid/validator.json create mode 100644 validator/tests/pb/LeftRecursionDavid/validator.txt create mode 100644 validator/tests/pb/LeftRecursionDavid/validator.xml create mode 100644 validator/tests/pb/LeftRecursionRobert/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/LeftRecursionRobert/validator.json create mode 100644 validator/tests/pb/LeftRecursionRobert/validator.txt create mode 100644 validator/tests/pb/LeftRecursionRobert/validator.xml create mode 100644 validator/tests/pb/LenNameJohn/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/LenNameJohn/validator.json create mode 100644 validator/tests/pb/LenNameJohn/validator.txt create mode 100644 validator/tests/pb/LenNameJohn/validator.xml create mode 100644 validator/tests/pb/LenNameNoname/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/LenNameNoname/validator.json create mode 100644 validator/tests/pb/LenNameNoname/validator.txt create mode 100644 validator/tests/pb/LenNameNoname/validator.xml create mode 100644 validator/tests/pb/LenNameSmith/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/LenNameSmith/validator.json create mode 100644 validator/tests/pb/LenNameSmith/validator.txt create mode 100644 validator/tests/pb/LenNameSmith/validator.xml create mode 100644 validator/tests/pb/ListIndexAddressMover/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/ListIndexAddressMover/validator.json create mode 100644 validator/tests/pb/ListIndexAddressMover/validator.txt create mode 100644 validator/tests/pb/ListIndexAddressMover/validator.xml create mode 100644 validator/tests/pb/ListIndexAddressRoutine/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/ListIndexAddressRoutine/validator.json create mode 100644 validator/tests/pb/ListIndexAddressRoutine/validator.txt create mode 100644 validator/tests/pb/ListIndexAddressRoutine/validator.xml create mode 100644 validator/tests/pb/ListIndexAddressShaker/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/ListIndexAddressShaker/validator.json create mode 100644 validator/tests/pb/ListIndexAddressShaker/validator.txt create mode 100644 validator/tests/pb/ListIndexAddressShaker/validator.xml create mode 100644 validator/tests/pb/ListOfTelephonesDavid/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/ListOfTelephonesDavid/validator.json create mode 100644 validator/tests/pb/ListOfTelephonesDavid/validator.txt create mode 100644 validator/tests/pb/ListOfTelephonesDavid/validator.xml create mode 100644 validator/tests/pb/ListOfTelephonesRoutine/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/ListOfTelephonesRoutine/validator.json create mode 100644 validator/tests/pb/ListOfTelephonesRoutine/validator.txt create mode 100644 validator/tests/pb/ListOfTelephonesRoutine/validator.xml create mode 100644 validator/tests/pb/ListOfTelephonesShaker/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/ListOfTelephonesShaker/validator.json create mode 100644 validator/tests/pb/ListOfTelephonesShaker/validator.txt create mode 100644 validator/tests/pb/ListOfTelephonesShaker/validator.xml create mode 100644 validator/tests/pb/NaiveNotNameDavid/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/NaiveNotNameDavid/validator.json create mode 100644 validator/tests/pb/NaiveNotNameDavid/validator.txt create mode 100644 validator/tests/pb/NaiveNotNameDavid/validator.xml create mode 100644 validator/tests/pb/NaiveNotNameNoname/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/NaiveNotNameNoname/validator.json create mode 100644 validator/tests/pb/NaiveNotNameNoname/validator.txt create mode 100644 validator/tests/pb/NaiveNotNameNoname/validator.xml create mode 100644 validator/tests/pb/NaiveNotNameRobert/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/NaiveNotNameRobert/validator.json create mode 100644 validator/tests/pb/NaiveNotNameRobert/validator.txt create mode 100644 validator/tests/pb/NaiveNotNameRobert/validator.xml create mode 100644 validator/tests/pb/NaiveNotNameSmith/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/NaiveNotNameSmith/validator.json create mode 100644 validator/tests/pb/NaiveNotNameSmith/validator.txt create mode 100644 validator/tests/pb/NaiveNotNameSmith/validator.xml create mode 100644 validator/tests/pb/NextAPocketRoses/invalid.main.PocketRoses.desc.pb create mode 100644 validator/tests/pb/NextAPocketRoses/validator.json create mode 100644 validator/tests/pb/NextAPocketRoses/validator.txt create mode 100644 validator/tests/pb/NextAPocketRoses/validator.xml create mode 100644 validator/tests/pb/NilNameJohn/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/NilNameJohn/validator.json create mode 100644 validator/tests/pb/NilNameJohn/validator.txt create mode 100644 validator/tests/pb/NilNameJohn/validator.xml create mode 100644 validator/tests/pb/NilNameNoname/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/NilNameNoname/validator.json create mode 100644 validator/tests/pb/NilNameNoname/validator.txt create mode 100644 validator/tests/pb/NilNameNoname/validator.xml create mode 100644 validator/tests/pb/NilNameSmith/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/NilNameSmith/validator.json create mode 100644 validator/tests/pb/NilNameSmith/validator.txt create mode 100644 validator/tests/pb/NilNameSmith/validator.xml create mode 100644 validator/tests/pb/OptionalAddressDavidPerson/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/OptionalAddressDavidPerson/validator.json create mode 100644 validator/tests/pb/OptionalAddressDavidPerson/validator.txt create mode 100644 validator/tests/pb/OptionalAddressDavidPerson/validator.xml create mode 100644 validator/tests/pb/OptionalAddressMoverPerson/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/OptionalAddressMoverPerson/validator.json create mode 100644 validator/tests/pb/OptionalAddressMoverPerson/validator.txt create mode 100644 validator/tests/pb/OptionalAddressMoverPerson/validator.xml create mode 100644 validator/tests/pb/OptionalAddressRobertPerson/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/OptionalAddressRobertPerson/validator.json create mode 100644 validator/tests/pb/OptionalAddressRobertPerson/validator.txt create mode 100644 validator/tests/pb/OptionalAddressRobertPerson/validator.xml create mode 100644 validator/tests/pb/OptionalNameJohnPerson/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/OptionalNameJohnPerson/validator.json create mode 100644 validator/tests/pb/OptionalNameJohnPerson/validator.txt create mode 100644 validator/tests/pb/OptionalNameJohnPerson/validator.xml create mode 100644 validator/tests/pb/OptionalNameNonamePerson/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/OptionalNameNonamePerson/validator.json create mode 100644 validator/tests/pb/OptionalNameNonamePerson/validator.txt create mode 100644 validator/tests/pb/OptionalNameNonamePerson/validator.xml create mode 100644 validator/tests/pb/OptionalNameRoutinePerson/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/OptionalNameRoutinePerson/validator.json create mode 100644 validator/tests/pb/OptionalNameRoutinePerson/validator.txt create mode 100644 validator/tests/pb/OptionalNameRoutinePerson/validator.xml create mode 100644 validator/tests/pb/OptionalNameShakerPerson/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/OptionalNameShakerPerson/validator.json create mode 100644 validator/tests/pb/OptionalNameShakerPerson/validator.txt create mode 100644 validator/tests/pb/OptionalNameShakerPerson/validator.xml create mode 100644 validator/tests/pb/OptionalNameSmithPerson/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/OptionalNameSmithPerson/validator.json create mode 100644 validator/tests/pb/OptionalNameSmithPerson/validator.txt create mode 100644 validator/tests/pb/OptionalNameSmithPerson/validator.xml create mode 100644 validator/tests/pb/OrNameTelephoneDavid/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/OrNameTelephoneDavid/validator.json create mode 100644 validator/tests/pb/OrNameTelephoneDavid/validator.txt create mode 100644 validator/tests/pb/OrNameTelephoneDavid/validator.xml create mode 100644 validator/tests/pb/OrNameTelephoneJohn/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/OrNameTelephoneJohn/validator.json create mode 100644 validator/tests/pb/OrNameTelephoneJohn/validator.txt create mode 100644 validator/tests/pb/OrNameTelephoneJohn/validator.xml create mode 100644 validator/tests/pb/OrNameTelephoneMover/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/OrNameTelephoneMover/validator.json create mode 100644 validator/tests/pb/OrNameTelephoneMover/validator.txt create mode 100644 validator/tests/pb/OrNameTelephoneMover/validator.xml create mode 100644 validator/tests/pb/OrNameTelephoneSmith/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/OrNameTelephoneSmith/validator.json create mode 100644 validator/tests/pb/OrNameTelephoneSmith/validator.txt create mode 100644 validator/tests/pb/OrNameTelephoneSmith/validator.xml create mode 100644 validator/tests/pb/ProperNotNamePersonDavid/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/ProperNotNamePersonDavid/validator.json create mode 100644 validator/tests/pb/ProperNotNamePersonDavid/validator.txt create mode 100644 validator/tests/pb/ProperNotNamePersonDavid/validator.xml create mode 100644 validator/tests/pb/ProperNotNamePersonNoname/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/ProperNotNamePersonNoname/validator.json create mode 100644 validator/tests/pb/ProperNotNamePersonNoname/validator.txt create mode 100644 validator/tests/pb/ProperNotNamePersonNoname/validator.xml create mode 100644 validator/tests/pb/ProperNotNamePersonRobert/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/ProperNotNamePersonRobert/validator.json create mode 100644 validator/tests/pb/ProperNotNamePersonRobert/validator.txt create mode 100644 validator/tests/pb/ProperNotNamePersonRobert/validator.xml create mode 100644 validator/tests/pb/ProperNotNamePersonSmith/valid.main.Person.desc.pb create mode 100644 validator/tests/pb/ProperNotNamePersonSmith/validator.json create mode 100644 validator/tests/pb/ProperNotNamePersonSmith/validator.txt create mode 100644 validator/tests/pb/ProperNotNamePersonSmith/validator.xml create mode 100644 validator/tests/pb/PuddingMilkShakeNotAny1/invalid.main.PuddingMilkshake.desc.pb create mode 100644 validator/tests/pb/PuddingMilkShakeNotAny1/validator.json create mode 100644 validator/tests/pb/PuddingMilkShakeNotAny1/validator.txt create mode 100644 validator/tests/pb/PuddingMilkShakeNotAny1/validator.xml create mode 100644 validator/tests/pb/PuddingMilkShakeNotAny2/invalid.main.PuddingMilkshake.desc.pb create mode 100644 validator/tests/pb/PuddingMilkShakeNotAny2/validator.json create mode 100644 validator/tests/pb/PuddingMilkShakeNotAny2/validator.txt create mode 100644 validator/tests/pb/PuddingMilkShakeNotAny2/validator.xml create mode 100644 validator/tests/pb/RecursiveElbowBightTurn/invalid.main.Knot.desc.pb create mode 100644 validator/tests/pb/RecursiveElbowBightTurn/validator.json create mode 100644 validator/tests/pb/RecursiveElbowBightTurn/validator.txt create mode 100644 validator/tests/pb/RecursiveElbowBightTurn/validator.xml create mode 100644 validator/tests/pb/RecursiveElbowKnotKnotElbow/valid.main.Knot.desc.pb create mode 100644 validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.json create mode 100644 validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.txt create mode 100644 validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.xml create mode 100644 validator/tests/pb/RecursiveIoUtil/valid.main.SrcTree.desc.pb create mode 100644 validator/tests/pb/RecursiveIoUtil/validator.json create mode 100644 validator/tests/pb/RecursiveIoUtil/validator.txt create mode 100644 validator/tests/pb/RecursiveIoUtil/validator.xml create mode 100644 validator/tests/pb/RecursivePath/valid.main.SrcTree.desc.pb create mode 100644 validator/tests/pb/RecursivePath/validator.json create mode 100644 validator/tests/pb/RecursivePath/validator.txt create mode 100644 validator/tests/pb/RecursivePath/validator.xml create mode 100644 validator/tests/pb/RecursiveRuntime/invalid.main.SrcTree.desc.pb create mode 100644 validator/tests/pb/RecursiveRuntime/validator.json create mode 100644 validator/tests/pb/RecursiveRuntime/validator.txt create mode 100644 validator/tests/pb/RecursiveRuntime/validator.xml create mode 100644 validator/tests/pb/RecursiveSyscall/invalid.main.SrcTree.desc.pb create mode 100644 validator/tests/pb/RecursiveSyscall/validator.json create mode 100644 validator/tests/pb/RecursiveSyscall/validator.txt create mode 100644 validator/tests/pb/RecursiveSyscall/validator.xml create mode 100644 validator/tests/pb/RecursiveTurnBightTurn/valid.main.Knot.desc.pb create mode 100644 validator/tests/pb/RecursiveTurnBightTurn/validator.json create mode 100644 validator/tests/pb/RecursiveTurnBightTurn/validator.txt create mode 100644 validator/tests/pb/RecursiveTurnBightTurn/validator.xml create mode 100644 validator/tests/pb/RecursiveTurnKnotKnotElbow/invalid.main.Knot.desc.pb create mode 100644 validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.json create mode 100644 validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.txt create mode 100644 validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.xml create mode 100644 validator/tests/pb/TopTop1/valid.main.TopsyTurvy.desc.pb create mode 100644 validator/tests/pb/TopTop1/validator.json create mode 100644 validator/tests/pb/TopTop1/validator.txt create mode 100644 validator/tests/pb/TopTop1/validator.xml create mode 100644 validator/tests/pb/TurfTurf1/invalid.main.TopsyTurvy.desc.pb create mode 100644 validator/tests/pb/TurfTurf1/validator.json create mode 100644 validator/tests/pb/TurfTurf1/validator.txt create mode 100644 validator/tests/pb/TurfTurf1/validator.xml create mode 100644 validator/tests/pb/TypewriterPrisonDaisySled/valid.main.TypewriterPrison.desc.pb create mode 100644 validator/tests/pb/TypewriterPrisonDaisySled/validator.json create mode 100644 validator/tests/pb/TypewriterPrisonDaisySled/validator.txt create mode 100644 validator/tests/pb/TypewriterPrisonDaisySled/validator.xml create mode 100644 validator/tests/pb/TypewriterPrisonMapShark/valid.main.TypewriterPrison.desc.pb create mode 100644 validator/tests/pb/TypewriterPrisonMapShark/validator.json create mode 100644 validator/tests/pb/TypewriterPrisonMapShark/validator.txt create mode 100644 validator/tests/pb/TypewriterPrisonMapShark/validator.xml create mode 100644 validator/tests/pb/TypewriterPrisonMenuPaperclip/valid.main.TypewriterPrison.desc.pb create mode 100644 validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.json create mode 100644 validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.txt create mode 100644 validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.xml create mode 100644 validator/tests/pb/TypewriterPrisonScarBusStop/valid.main.TypewriterPrison.desc.pb create mode 100644 validator/tests/pb/TypewriterPrisonScarBusStop/validator.json create mode 100644 validator/tests/pb/TypewriterPrisonScarBusStop/validator.txt create mode 100644 validator/tests/pb/TypewriterPrisonScarBusStop/validator.xml create mode 100644 validator/tests/pb/TypewriterPrisonSmileLetter/valid.main.TypewriterPrison.desc.pb create mode 100644 validator/tests/pb/TypewriterPrisonSmileLetter/validator.json create mode 100644 validator/tests/pb/TypewriterPrisonSmileLetter/validator.txt create mode 100644 validator/tests/pb/TypewriterPrisonSmileLetter/validator.xml create mode 100644 validator/tests/pb/WrongTypeRobert/invalid.main.Person.desc.pb create mode 100644 validator/tests/pb/WrongTypeRobert/validator.json create mode 100644 validator/tests/pb/WrongTypeRobert/validator.txt create mode 100644 validator/tests/pb/WrongTypeRobert/validator.xml create mode 100644 validator/tests/pb/main.BananaTuple.desc create mode 100644 validator/tests/pb/main.FinanceJudo.desc create mode 100644 validator/tests/pb/main.Knot.desc create mode 100644 validator/tests/pb/main.Person.desc create mode 100644 validator/tests/pb/main.PocketRoses.desc create mode 100644 validator/tests/pb/main.PuddingMilkshake.desc create mode 100644 validator/tests/pb/main.SrcTree.desc create mode 100644 validator/tests/pb/main.TopsyTurvy.desc create mode 100644 validator/tests/pb/main.TypewriterPrison.desc create mode 100644 validator/tests/xml/ABStarAAA/invalid.xml create mode 100644 validator/tests/xml/ABStarAAA/validator.json create mode 100644 validator/tests/xml/ABStarAAA/validator.txt create mode 100644 validator/tests/xml/ABStarAAA/validator.xml create mode 100644 validator/tests/xml/ABStarABC/valid.xml create mode 100644 validator/tests/xml/ABStarABC/validator.json create mode 100644 validator/tests/xml/ABStarABC/validator.txt create mode 100644 validator/tests/xml/ABStarABC/validator.xml create mode 100644 validator/tests/xml/ABStarBB/invalid.xml create mode 100644 validator/tests/xml/ABStarBB/validator.json create mode 100644 validator/tests/xml/ABStarBB/validator.txt create mode 100644 validator/tests/xml/ABStarBB/validator.xml create mode 100644 validator/tests/xml/ABStarBBAAA/valid.xml create mode 100644 validator/tests/xml/ABStarBBAAA/validator.json create mode 100644 validator/tests/xml/ABStarBBAAA/validator.txt create mode 100644 validator/tests/xml/ABStarBBAAA/validator.xml create mode 100644 validator/tests/xml/ABStarBBC/invalid.xml create mode 100644 validator/tests/xml/ABStarBBC/validator.json create mode 100644 validator/tests/xml/ABStarBBC/validator.txt create mode 100644 validator/tests/xml/ABStarBBC/validator.xml create mode 100644 validator/tests/xml/ABStarBBCAC/valid.xml create mode 100644 validator/tests/xml/ABStarBBCAC/validator.json create mode 100644 validator/tests/xml/ABStarBBCAC/validator.txt create mode 100644 validator/tests/xml/ABStarBBCAC/validator.xml create mode 100644 validator/tests/xml/ABStarCACBC/valid.xml create mode 100644 validator/tests/xml/ABStarCACBC/validator.json create mode 100644 validator/tests/xml/ABStarCACBC/validator.txt create mode 100644 validator/tests/xml/ABStarCACBC/validator.xml create mode 100644 validator/tests/xml/ABStarCBCAC/valid.xml create mode 100644 validator/tests/xml/ABStarCBCAC/validator.json create mode 100644 validator/tests/xml/ABStarCBCAC/validator.txt create mode 100644 validator/tests/xml/ABStarCBCAC/validator.xml create mode 100644 validator/tests/xml/BasicAB_AB/valid.xml create mode 100644 validator/tests/xml/BasicAB_AB/validator.json create mode 100644 validator/tests/xml/BasicAB_AB/validator.txt create mode 100644 validator/tests/xml/BasicAB_AB/validator.xml create mode 100644 validator/tests/xml/BasicAB_BB/invalid.xml create mode 100644 validator/tests/xml/BasicAB_BB/validator.json create mode 100644 validator/tests/xml/BasicAB_BB/validator.txt create mode 100644 validator/tests/xml/BasicAB_BB/validator.xml create mode 100644 validator/tests/xml/BasicAContainsB_0/invalid.xml create mode 100644 validator/tests/xml/BasicAContainsB_0/validator.json create mode 100644 validator/tests/xml/BasicAContainsB_0/validator.txt create mode 100644 validator/tests/xml/BasicAContainsB_0/validator.xml create mode 100644 validator/tests/xml/BasicAContainsB_B/valid.xml create mode 100644 validator/tests/xml/BasicAContainsB_B/validator.json create mode 100644 validator/tests/xml/BasicAContainsB_B/validator.txt create mode 100644 validator/tests/xml/BasicAContainsB_B/validator.xml create mode 100644 validator/tests/xml/BasicAContainsB_CBC/valid.xml create mode 100644 validator/tests/xml/BasicAContainsB_CBC/validator.json create mode 100644 validator/tests/xml/BasicAContainsB_CBC/validator.txt create mode 100644 validator/tests/xml/BasicAContainsB_CBC/validator.xml create mode 100644 validator/tests/xml/BasicAContainsB_CC/invalid.xml create mode 100644 validator/tests/xml/BasicAContainsB_CC/validator.json create mode 100644 validator/tests/xml/BasicAContainsB_CC/validator.txt create mode 100644 validator/tests/xml/BasicAContainsB_CC/validator.xml create mode 100644 validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/invalid.xml create mode 100644 validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.json create mode 100644 validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.txt create mode 100644 validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.xml create mode 100644 validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/valid.xml create mode 100644 validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.json create mode 100644 validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.txt create mode 100644 validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.xml create mode 100644 validator/tests/xml/BasicALeafB_AB/valid.xml create mode 100644 validator/tests/xml/BasicALeafB_AB/validator.json create mode 100644 validator/tests/xml/BasicALeafB_AB/validator.txt create mode 100644 validator/tests/xml/BasicALeafB_AB/validator.xml create mode 100644 validator/tests/xml/BasicALeafB_BB/invalid.xml create mode 100644 validator/tests/xml/BasicALeafB_BB/validator.json create mode 100644 validator/tests/xml/BasicALeafB_BB/validator.txt create mode 100644 validator/tests/xml/BasicALeafB_BB/validator.xml create mode 100644 validator/tests/xml/BasicA_A/valid.xml create mode 100644 validator/tests/xml/BasicA_A/validator.json create mode 100644 validator/tests/xml/BasicA_A/validator.txt create mode 100644 validator/tests/xml/BasicA_A/validator.xml create mode 100644 validator/tests/xml/BasicA_B/invalid.xml create mode 100644 validator/tests/xml/BasicA_B/validator.json create mode 100644 validator/tests/xml/BasicA_B/validator.txt create mode 100644 validator/tests/xml/BasicA_B/validator.xml create mode 100644 validator/tests/xml/BasicAndBAnyC_B/invalid.xml create mode 100644 validator/tests/xml/BasicAndBAnyC_B/validator.json create mode 100644 validator/tests/xml/BasicAndBAnyC_B/validator.txt create mode 100644 validator/tests/xml/BasicAndBAnyC_B/validator.xml create mode 100644 validator/tests/xml/BasicAndBAnyC_BC/valid.xml create mode 100644 validator/tests/xml/BasicAndBAnyC_BC/validator.json create mode 100644 validator/tests/xml/BasicAndBAnyC_BC/validator.txt create mode 100644 validator/tests/xml/BasicAndBAnyC_BC/validator.xml create mode 100644 validator/tests/xml/BasicAndBAnyC_BXXXC/valid.xml create mode 100644 validator/tests/xml/BasicAndBAnyC_BXXXC/validator.json create mode 100644 validator/tests/xml/BasicAndBAnyC_BXXXC/validator.txt create mode 100644 validator/tests/xml/BasicAndBAnyC_BXXXC/validator.xml create mode 100644 validator/tests/xml/BasicAndBAnyC_C/invalid.xml create mode 100644 validator/tests/xml/BasicAndBAnyC_C/validator.json create mode 100644 validator/tests/xml/BasicAndBAnyC_C/validator.txt create mode 100644 validator/tests/xml/BasicAndBAnyC_C/validator.xml create mode 100644 validator/tests/xml/BasicAndBAnyC_CB/invalid.xml create mode 100644 validator/tests/xml/BasicAndBAnyC_CB/validator.json create mode 100644 validator/tests/xml/BasicAndBAnyC_CB/validator.txt create mode 100644 validator/tests/xml/BasicAndBAnyC_CB/validator.xml create mode 100644 validator/tests/xml/BasicAndContainsTree_BC/invalid.xml create mode 100644 validator/tests/xml/BasicAndContainsTree_BC/validator.json create mode 100644 validator/tests/xml/BasicAndContainsTree_BC/validator.txt create mode 100644 validator/tests/xml/BasicAndContainsTree_BC/validator.xml create mode 100644 validator/tests/xml/BasicAndContainsTree_BCBD/valid.xml create mode 100644 validator/tests/xml/BasicAndContainsTree_BCBD/validator.json create mode 100644 validator/tests/xml/BasicAndContainsTree_BCBD/validator.txt create mode 100644 validator/tests/xml/BasicAndContainsTree_BCBD/validator.xml create mode 100644 validator/tests/xml/BasicAndNotAB_A/invalid.xml create mode 100644 validator/tests/xml/BasicAndNotAB_A/validator.json create mode 100644 validator/tests/xml/BasicAndNotAB_A/validator.txt create mode 100644 validator/tests/xml/BasicAndNotAB_A/validator.xml create mode 100644 validator/tests/xml/BasicAndNotAB_B/invalid.xml create mode 100644 validator/tests/xml/BasicAndNotAB_B/validator.json create mode 100644 validator/tests/xml/BasicAndNotAB_B/validator.txt create mode 100644 validator/tests/xml/BasicAndNotAB_B/validator.xml create mode 100644 validator/tests/xml/BasicAndNotAB_C/valid.xml create mode 100644 validator/tests/xml/BasicAndNotAB_C/validator.json create mode 100644 validator/tests/xml/BasicAndNotAB_C/validator.txt create mode 100644 validator/tests/xml/BasicAndNotAB_C/validator.xml create mode 100644 validator/tests/xml/BasicAnyNotB_B/valid.xml create mode 100644 validator/tests/xml/BasicAnyNotB_B/validator.json create mode 100644 validator/tests/xml/BasicAnyNotB_B/validator.txt create mode 100644 validator/tests/xml/BasicAnyNotB_B/validator.xml create mode 100644 validator/tests/xml/BasicAnyNotB_C/valid.xml create mode 100644 validator/tests/xml/BasicAnyNotB_C/validator.json create mode 100644 validator/tests/xml/BasicAnyNotB_C/validator.txt create mode 100644 validator/tests/xml/BasicAnyNotB_C/validator.xml create mode 100644 validator/tests/xml/BasicAorB_A/valid.xml create mode 100644 validator/tests/xml/BasicAorB_A/validator.json create mode 100644 validator/tests/xml/BasicAorB_A/validator.txt create mode 100644 validator/tests/xml/BasicAorB_A/validator.xml create mode 100644 validator/tests/xml/BasicAorB_C/invalid.xml create mode 100644 validator/tests/xml/BasicAorB_C/validator.json create mode 100644 validator/tests/xml/BasicAorB_C/validator.txt create mode 100644 validator/tests/xml/BasicAorB_C/validator.xml create mode 100644 validator/tests/xml/BasicConcatBC_BB/invalid.xml create mode 100644 validator/tests/xml/BasicConcatBC_BB/validator.json create mode 100644 validator/tests/xml/BasicConcatBC_BB/validator.txt create mode 100644 validator/tests/xml/BasicConcatBC_BB/validator.xml create mode 100644 validator/tests/xml/BasicConcatBC_BC/valid.xml create mode 100644 validator/tests/xml/BasicConcatBC_BC/validator.json create mode 100644 validator/tests/xml/BasicConcatBC_BC/validator.txt create mode 100644 validator/tests/xml/BasicConcatBC_BC/validator.xml create mode 100644 validator/tests/xml/BasicConcatBOptionalD_B/valid.xml create mode 100644 validator/tests/xml/BasicConcatBOptionalD_B/validator.json create mode 100644 validator/tests/xml/BasicConcatBOptionalD_B/validator.txt create mode 100644 validator/tests/xml/BasicConcatBOptionalD_B/validator.xml create mode 100644 validator/tests/xml/BasicConcatBOptionalD_BD/valid.xml create mode 100644 validator/tests/xml/BasicConcatBOptionalD_BD/validator.json create mode 100644 validator/tests/xml/BasicConcatBOptionalD_BD/validator.txt create mode 100644 validator/tests/xml/BasicConcatBOptionalD_BD/validator.xml create mode 100644 validator/tests/xml/BasicConcatBOptionalD_D/invalid.xml create mode 100644 validator/tests/xml/BasicConcatBOptionalD_D/validator.json create mode 100644 validator/tests/xml/BasicConcatBOptionalD_D/validator.txt create mode 100644 validator/tests/xml/BasicConcatBOptionalD_D/validator.xml create mode 100644 validator/tests/xml/BasicConcatCStar_0/invalid.xml create mode 100644 validator/tests/xml/BasicConcatCStar_0/validator.json create mode 100644 validator/tests/xml/BasicConcatCStar_0/validator.txt create mode 100644 validator/tests/xml/BasicConcatCStar_0/validator.xml create mode 100644 validator/tests/xml/BasicConcatCStar_1/valid.xml create mode 100644 validator/tests/xml/BasicConcatCStar_1/validator.json create mode 100644 validator/tests/xml/BasicConcatCStar_1/validator.txt create mode 100644 validator/tests/xml/BasicConcatCStar_1/validator.xml create mode 100644 validator/tests/xml/BasicConcatCStar_2/valid.xml create mode 100644 validator/tests/xml/BasicConcatCStar_2/validator.json create mode 100644 validator/tests/xml/BasicConcatCStar_2/validator.txt create mode 100644 validator/tests/xml/BasicConcatCStar_2/validator.xml create mode 100644 validator/tests/xml/BasicConcatCStar_3/valid.xml create mode 100644 validator/tests/xml/BasicConcatCStar_3/validator.json create mode 100644 validator/tests/xml/BasicConcatCStar_3/validator.txt create mode 100644 validator/tests/xml/BasicConcatCStar_3/validator.xml create mode 100644 validator/tests/xml/BasicConcatCStar_B/invalid.xml create mode 100644 validator/tests/xml/BasicConcatCStar_B/validator.json create mode 100644 validator/tests/xml/BasicConcatCStar_B/validator.txt create mode 100644 validator/tests/xml/BasicConcatCStar_B/validator.xml create mode 100644 validator/tests/xml/BasicConcatCStar_CB/invalid.xml create mode 100644 validator/tests/xml/BasicConcatCStar_CB/validator.json create mode 100644 validator/tests/xml/BasicConcatCStar_CB/validator.txt create mode 100644 validator/tests/xml/BasicConcatCStar_CB/validator.xml create mode 100644 validator/tests/xml/BasicConcatOrEmpty_BC/valid.xml create mode 100644 validator/tests/xml/BasicConcatOrEmpty_BC/validator.json create mode 100644 validator/tests/xml/BasicConcatOrEmpty_BC/validator.txt create mode 100644 validator/tests/xml/BasicConcatOrEmpty_BC/validator.xml create mode 100644 validator/tests/xml/BasicConcatOrEmpty_BD/invalid.xml create mode 100644 validator/tests/xml/BasicConcatOrEmpty_BD/validator.json create mode 100644 validator/tests/xml/BasicConcatOrEmpty_BD/validator.txt create mode 100644 validator/tests/xml/BasicConcatOrEmpty_BD/validator.xml create mode 100644 validator/tests/xml/BasicConcatOrEmpty_C/valid.xml create mode 100644 validator/tests/xml/BasicConcatOrEmpty_C/validator.json create mode 100644 validator/tests/xml/BasicConcatOrEmpty_C/validator.txt create mode 100644 validator/tests/xml/BasicConcatOrEmpty_C/validator.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_AB/invalid.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_AB/validator.json create mode 100644 validator/tests/xml/BasicConcatZAnyC_AB/validator.txt create mode 100644 validator/tests/xml/BasicConcatZAnyC_AB/validator.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_ABC/valid.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_ABC/validator.json create mode 100644 validator/tests/xml/BasicConcatZAnyC_ABC/validator.txt create mode 100644 validator/tests/xml/BasicConcatZAnyC_ABC/validator.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_AC/valid.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_AC/validator.json create mode 100644 validator/tests/xml/BasicConcatZAnyC_AC/validator.txt create mode 100644 validator/tests/xml/BasicConcatZAnyC_AC/validator.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/invalid.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.json create mode 100644 validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.txt create mode 100644 validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_BBBC/valid.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_BBBC/validator.json create mode 100644 validator/tests/xml/BasicConcatZAnyC_BBBC/validator.txt create mode 100644 validator/tests/xml/BasicConcatZAnyC_BBBC/validator.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_BCBC/valid.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_BCBC/validator.json create mode 100644 validator/tests/xml/BasicConcatZAnyC_BCBC/validator.txt create mode 100644 validator/tests/xml/BasicConcatZAnyC_BCBC/validator.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_BCCC/valid.xml create mode 100644 validator/tests/xml/BasicConcatZAnyC_BCCC/validator.json create mode 100644 validator/tests/xml/BasicConcatZAnyC_BCCC/validator.txt create mode 100644 validator/tests/xml/BasicConcatZAnyC_BCCC/validator.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ABAA/invalid.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.json create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.txt create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ABACA/valid.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.json create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.txt create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ACCBA/valid.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.json create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.txt create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ACCCA/invalid.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.json create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.txt create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_BAC/valid.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.json create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.txt create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_BC/valid.xml create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_BC/validator.json create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_BC/validator.txt create mode 100644 validator/tests/xml/BasicInterleaveBAnyC_BC/validator.xml create mode 100644 validator/tests/xml/BasicInterleaveBC_BC/valid.xml create mode 100644 validator/tests/xml/BasicInterleaveBC_BC/validator.json create mode 100644 validator/tests/xml/BasicInterleaveBC_BC/validator.txt create mode 100644 validator/tests/xml/BasicInterleaveBC_BC/validator.xml create mode 100644 validator/tests/xml/BasicInterleaveBC_C/invalid.xml create mode 100644 validator/tests/xml/BasicInterleaveBC_C/validator.json create mode 100644 validator/tests/xml/BasicInterleaveBC_C/validator.txt create mode 100644 validator/tests/xml/BasicInterleaveBC_C/validator.xml create mode 100644 validator/tests/xml/BasicInterleaveBC_CB/valid.xml create mode 100644 validator/tests/xml/BasicInterleaveBC_CB/validator.json create mode 100644 validator/tests/xml/BasicInterleaveBC_CB/validator.txt create mode 100644 validator/tests/xml/BasicInterleaveBC_CB/validator.xml create mode 100644 validator/tests/xml/BasicNone_A/invalid.xml create mode 100644 validator/tests/xml/BasicNone_A/validator.json create mode 100644 validator/tests/xml/BasicNone_A/validator.txt create mode 100644 validator/tests/xml/BasicNone_A/validator.xml create mode 100644 validator/tests/xml/BasicNotA_A/invalid.xml create mode 100644 validator/tests/xml/BasicNotA_A/validator.json create mode 100644 validator/tests/xml/BasicNotA_A/validator.txt create mode 100644 validator/tests/xml/BasicNotA_A/validator.xml create mode 100644 validator/tests/xml/BasicNotA_B/valid.xml create mode 100644 validator/tests/xml/BasicNotA_B/validator.json create mode 100644 validator/tests/xml/BasicNotA_B/validator.txt create mode 100644 validator/tests/xml/BasicNotA_B/validator.xml create mode 100644 validator/tests/xml/BasicNotAndBStarC_BC/invalid.xml create mode 100644 validator/tests/xml/BasicNotAndBStarC_BC/validator.json create mode 100644 validator/tests/xml/BasicNotAndBStarC_BC/validator.txt create mode 100644 validator/tests/xml/BasicNotAndBStarC_BC/validator.xml create mode 100644 validator/tests/xml/BasicNotAndBStarC_CB/valid.xml create mode 100644 validator/tests/xml/BasicNotAndBStarC_CB/validator.json create mode 100644 validator/tests/xml/BasicNotAndBStarC_CB/validator.txt create mode 100644 validator/tests/xml/BasicNotAndBStarC_CB/validator.xml create mode 100644 validator/tests/xml/BasicNotConcatBC_BB/valid.xml create mode 100644 validator/tests/xml/BasicNotConcatBC_BB/validator.json create mode 100644 validator/tests/xml/BasicNotConcatBC_BB/validator.txt create mode 100644 validator/tests/xml/BasicNotConcatBC_BB/validator.xml create mode 100644 validator/tests/xml/BasicNotConcatBC_BC/invalid.xml create mode 100644 validator/tests/xml/BasicNotConcatBC_BC/validator.json create mode 100644 validator/tests/xml/BasicNotConcatBC_BC/validator.txt create mode 100644 validator/tests/xml/BasicNotConcatBC_BC/validator.xml create mode 100644 validator/tests/xml/BasicOptionalB_B/valid.xml create mode 100644 validator/tests/xml/BasicOptionalB_B/validator.json create mode 100644 validator/tests/xml/BasicOptionalB_B/validator.txt create mode 100644 validator/tests/xml/BasicOptionalB_B/validator.xml create mode 100644 validator/tests/xml/BasicOptionalB_BB/invalid.xml create mode 100644 validator/tests/xml/BasicOptionalB_BB/validator.json create mode 100644 validator/tests/xml/BasicOptionalB_BB/validator.txt create mode 100644 validator/tests/xml/BasicOptionalB_BB/validator.xml create mode 100644 validator/tests/xml/BasicOptionalB_C/invalid.xml create mode 100644 validator/tests/xml/BasicOptionalB_C/validator.json create mode 100644 validator/tests/xml/BasicOptionalB_C/validator.txt create mode 100644 validator/tests/xml/BasicOptionalB_C/validator.xml create mode 100644 validator/tests/xml/BasicOptionalB_Empty/valid.xml create mode 100644 validator/tests/xml/BasicOptionalB_Empty/validator.json create mode 100644 validator/tests/xml/BasicOptionalB_Empty/validator.txt create mode 100644 validator/tests/xml/BasicOptionalB_Empty/validator.xml create mode 100644 validator/tests/xml/BasicOrNotAB_A/valid.xml create mode 100644 validator/tests/xml/BasicOrNotAB_A/validator.json create mode 100644 validator/tests/xml/BasicOrNotAB_A/validator.txt create mode 100644 validator/tests/xml/BasicOrNotAB_A/validator.xml create mode 100644 validator/tests/xml/BasicOrNotAB_C/valid.xml create mode 100644 validator/tests/xml/BasicOrNotAB_C/validator.json create mode 100644 validator/tests/xml/BasicOrNotAB_C/validator.txt create mode 100644 validator/tests/xml/BasicOrNotAB_C/validator.xml create mode 100644 validator/tests/xml/BasicRefLoop_A/valid.xml create mode 100644 validator/tests/xml/BasicRefLoop_A/validator.json create mode 100644 validator/tests/xml/BasicRefLoop_A/validator.txt create mode 100644 validator/tests/xml/BasicRefLoop_A/validator.xml create mode 100644 validator/tests/xml/BasicRefLoop_AA/valid.xml create mode 100644 validator/tests/xml/BasicRefLoop_AA/validator.json create mode 100644 validator/tests/xml/BasicRefLoop_AA/validator.txt create mode 100644 validator/tests/xml/BasicRefLoop_AA/validator.xml create mode 100644 validator/tests/xml/BasicRefLoop_AB/invalid.xml create mode 100644 validator/tests/xml/BasicRefLoop_AB/validator.json create mode 100644 validator/tests/xml/BasicRefLoop_AB/validator.txt create mode 100644 validator/tests/xml/BasicRefLoop_AB/validator.xml create mode 100644 validator/tests/xml/BasicTreeAAorBB_AA/valid.xml create mode 100644 validator/tests/xml/BasicTreeAAorBB_AA/validator.json create mode 100644 validator/tests/xml/BasicTreeAAorBB_AA/validator.txt create mode 100644 validator/tests/xml/BasicTreeAAorBB_AA/validator.xml create mode 100644 validator/tests/xml/BasicTreeAAorBB_AB/invalid.xml create mode 100644 validator/tests/xml/BasicTreeAAorBB_AB/validator.json create mode 100644 validator/tests/xml/BasicTreeAAorBB_AB/validator.txt create mode 100644 validator/tests/xml/BasicTreeAAorBB_AB/validator.xml create mode 100644 validator/tests/xml/BasicTreeAOrOrC_AB/valid.xml create mode 100644 validator/tests/xml/BasicTreeAOrOrC_AB/validator.json create mode 100644 validator/tests/xml/BasicTreeAOrOrC_AB/validator.txt create mode 100644 validator/tests/xml/BasicTreeAOrOrC_AB/validator.xml create mode 100644 validator/tests/xml/BasicTreeAOrOrC_CA/invalid.xml create mode 100644 validator/tests/xml/BasicTreeAOrOrC_CA/validator.json create mode 100644 validator/tests/xml/BasicTreeAOrOrC_CA/validator.txt create mode 100644 validator/tests/xml/BasicTreeAOrOrC_CA/validator.xml create mode 100644 validator/tests/xml/BasicTreeAandA_A/valid.xml create mode 100644 validator/tests/xml/BasicTreeAandA_A/validator.json create mode 100644 validator/tests/xml/BasicTreeAandA_A/validator.txt create mode 100644 validator/tests/xml/BasicTreeAandA_A/validator.xml create mode 100644 validator/tests/xml/BasicTreeAandA_B/invalid.xml create mode 100644 validator/tests/xml/BasicTreeAandA_B/validator.json create mode 100644 validator/tests/xml/BasicTreeAandA_B/validator.txt create mode 100644 validator/tests/xml/BasicTreeAandA_B/validator.xml create mode 100644 validator/tests/xml/BasicTreeAandB_B/invalid.xml create mode 100644 validator/tests/xml/BasicTreeAandB_B/validator.json create mode 100644 validator/tests/xml/BasicTreeAandB_B/validator.txt create mode 100644 validator/tests/xml/BasicTreeAandB_B/validator.xml create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_BC/valid.xml create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_BC/validator.json create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_BC/validator.txt create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_BC/validator.xml create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_BXXXC/valid.xml create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.json create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.txt create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.xml create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_CB/invalid.xml create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_CB/validator.json create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_CB/validator.txt create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_CB/validator.xml create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_CBC/invalid.xml create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.json create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.txt create mode 100644 validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.xml create mode 100644 validator/tests/xml/BasicTreeBAorBB_AA/invalid.xml create mode 100644 validator/tests/xml/BasicTreeBAorBB_AA/validator.json create mode 100644 validator/tests/xml/BasicTreeBAorBB_AA/validator.txt create mode 100644 validator/tests/xml/BasicTreeBAorBB_AA/validator.xml create mode 100644 validator/tests/xml/BasicTreeBAorBB_BA/valid.xml create mode 100644 validator/tests/xml/BasicTreeBAorBB_BA/validator.json create mode 100644 validator/tests/xml/BasicTreeBAorBB_BA/validator.txt create mode 100644 validator/tests/xml/BasicTreeBAorBB_BA/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/valid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/invalid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreB_0/valid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreB_0/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreB_0/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreB_0/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreB_1/valid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreB_1/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreB_1/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreB_1/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreB_3/valid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreB_3/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreB_3/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreB_3/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreB_BC/invalid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreB_BC/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreB_BC/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreB_BC/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreB_C/invalid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreB_C/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreB_C/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreB_C/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreEmpty_B/invalid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreEmpty_Empty/valid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/valid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/invalid.xml create mode 100644 validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.json create mode 100644 validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.txt create mode 100644 validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.xml create mode 100644 validator/tests/xml/Page195E0/invalid.xml create mode 100644 validator/tests/xml/Page195E0/validator.json create mode 100644 validator/tests/xml/Page195E0/validator.txt create mode 100644 validator/tests/xml/Page195E0/validator.xml create mode 100644 validator/tests/xml/Page195E0AddrE0/invalid.xml create mode 100644 validator/tests/xml/Page195E0AddrE0/validator.json create mode 100644 validator/tests/xml/Page195E0AddrE0/validator.txt create mode 100644 validator/tests/xml/Page195E0AddrE0/validator.xml create mode 100644 validator/tests/xml/Page195E0AddrE0NameE0/valid.xml create mode 100644 validator/tests/xml/Page195E0AddrE0NameE0/validator.json create mode 100644 validator/tests/xml/Page195E0AddrE0NameE0/validator.txt create mode 100644 validator/tests/xml/Page195E0AddrE0NameE0/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE0/valid.xml create mode 100644 validator/tests/xml/Page195E0NameE0/validator.json create mode 100644 validator/tests/xml/Page195E0NameE0/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE0/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE0AddrE0/valid.xml create mode 100644 validator/tests/xml/Page195E0NameE0AddrE0/validator.json create mode 100644 validator/tests/xml/Page195E0NameE0AddrE0/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE0AddrE0/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE0NameE0/valid.xml create mode 100644 validator/tests/xml/Page195E0NameE0NameE0/validator.json create mode 100644 validator/tests/xml/Page195E0NameE0NameE0/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE0NameE0/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE0NameE0TelE0/valid.xml create mode 100644 validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.json create mode 100644 validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE0NameE2/valid.xml create mode 100644 validator/tests/xml/Page195E0NameE0NameE2/validator.json create mode 100644 validator/tests/xml/Page195E0NameE0NameE2/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE0NameE2/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE0NameE2TelE0/valid.xml create mode 100644 validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.json create mode 100644 validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE0TelE0NameE2/valid.xml create mode 100644 validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.json create mode 100644 validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE0TelE2NameE0/invalid.xml create mode 100644 validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.json create mode 100644 validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE0TelE2NameE2/invalid.xml create mode 100644 validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.json create mode 100644 validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE2NameE0/valid.xml create mode 100644 validator/tests/xml/Page195E0NameE2NameE0/validator.json create mode 100644 validator/tests/xml/Page195E0NameE2NameE0/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE2NameE0/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE2NameE0TelE0/valid.xml create mode 100644 validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.json create mode 100644 validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE2TelE0NameE0/invalid.xml create mode 100644 validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.json create mode 100644 validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE2TelE0NameE2/invalid.xml create mode 100644 validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.json create mode 100644 validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.xml create mode 100644 validator/tests/xml/Page195E0NameE2TelE2NameE2/invalid.xml create mode 100644 validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.json create mode 100644 validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.txt create mode 100644 validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.xml create mode 100644 validator/tests/xml/Page195E0TelE0NameE0NameE0/invalid.xml create mode 100644 validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.json create mode 100644 validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.txt create mode 100644 validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.xml create mode 100644 validator/tests/xml/Page195E0TelE0NameE0NameE2/invalid.xml create mode 100644 validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.json create mode 100644 validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.txt create mode 100644 validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.xml create mode 100644 validator/tests/xml/Page195E1/invalid.xml create mode 100644 validator/tests/xml/Page195E1/validator.json create mode 100644 validator/tests/xml/Page195E1/validator.txt create mode 100644 validator/tests/xml/Page195E1/validator.xml create mode 100644 validator/tests/xml/Page195E1AddrE1/invalid.xml create mode 100644 validator/tests/xml/Page195E1AddrE1/validator.json create mode 100644 validator/tests/xml/Page195E1AddrE1/validator.txt create mode 100644 validator/tests/xml/Page195E1AddrE1/validator.xml create mode 100644 validator/tests/xml/Page195E1AddrE1NameE1/valid.xml create mode 100644 validator/tests/xml/Page195E1AddrE1NameE1/validator.json create mode 100644 validator/tests/xml/Page195E1AddrE1NameE1/validator.txt create mode 100644 validator/tests/xml/Page195E1AddrE1NameE1/validator.xml create mode 100644 validator/tests/xml/Page195E1NameE1/valid.xml create mode 100644 validator/tests/xml/Page195E1NameE1/validator.json create mode 100644 validator/tests/xml/Page195E1NameE1/validator.txt create mode 100644 validator/tests/xml/Page195E1NameE1/validator.xml create mode 100644 validator/tests/xml/Page195E1NameE1AddrE1/valid.xml create mode 100644 validator/tests/xml/Page195E1NameE1AddrE1/validator.json create mode 100644 validator/tests/xml/Page195E1NameE1AddrE1/validator.txt create mode 100644 validator/tests/xml/Page195E1NameE1AddrE1/validator.xml create mode 100644 validator/tests/xml/Page195E2/invalid.xml create mode 100644 validator/tests/xml/Page195E2/validator.json create mode 100644 validator/tests/xml/Page195E2/validator.txt create mode 100644 validator/tests/xml/Page195E2/validator.xml create mode 100644 validator/tests/xml/Page195E2AddrE2/invalid.xml create mode 100644 validator/tests/xml/Page195E2AddrE2/validator.json create mode 100644 validator/tests/xml/Page195E2AddrE2/validator.txt create mode 100644 validator/tests/xml/Page195E2AddrE2/validator.xml create mode 100644 validator/tests/xml/Page195E2AddrE2NameE2/valid.xml create mode 100644 validator/tests/xml/Page195E2AddrE2NameE2/validator.json create mode 100644 validator/tests/xml/Page195E2AddrE2NameE2/validator.txt create mode 100644 validator/tests/xml/Page195E2AddrE2NameE2/validator.xml create mode 100644 validator/tests/xml/Page195E2NameE0TelE0NameE2/invalid.xml create mode 100644 validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.json create mode 100644 validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.txt create mode 100644 validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.xml create mode 100644 validator/tests/xml/Page195E2NameE2/valid.xml create mode 100644 validator/tests/xml/Page195E2NameE2/validator.json create mode 100644 validator/tests/xml/Page195E2NameE2/validator.txt create mode 100644 validator/tests/xml/Page195E2NameE2/validator.xml create mode 100644 validator/tests/xml/Page195E2NameE2AddrE2/valid.xml create mode 100644 validator/tests/xml/Page195E2NameE2AddrE2/validator.json create mode 100644 validator/tests/xml/Page195E2NameE2AddrE2/validator.txt create mode 100644 validator/tests/xml/Page195E2NameE2AddrE2/validator.xml create mode 100644 validator/tests/xml/XmlContextDavid/invalid.xml create mode 100644 validator/tests/xml/XmlContextDavid/validator.json create mode 100644 validator/tests/xml/XmlContextDavid/validator.txt create mode 100644 validator/tests/xml/XmlContextDavid/validator.xml create mode 100644 validator/tests/xml/XmlContextRobert/valid.xml create mode 100644 validator/tests/xml/XmlContextRobert/validator.json create mode 100644 validator/tests/xml/XmlContextRobert/validator.txt create mode 100644 validator/tests/xml/XmlContextRobert/validator.xml diff --git a/.gitignore b/.gitignore index 2180f00..db8ca8c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ gen-validator-tests -validator/tests/* validator/benches/* \ No newline at end of file diff --git a/validator/tests/goreflect/APocketRoses/valid.goreflect b/validator/tests/goreflect/APocketRoses/valid.goreflect new file mode 100644 index 0000000..45ec160 --- /dev/null +++ b/validator/tests/goreflect/APocketRoses/valid.goreflect @@ -0,0 +1,7 @@ +{ + "MenuPaperclip": [ + "a", + "b", + "c" + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/APocketRoses/validator.json b/validator/tests/goreflect/APocketRoses/validator.json new file mode 100644 index 0000000..3c6c513 --- /dev/null +++ b/validator/tests/goreflect/APocketRoses/validator.json @@ -0,0 +1,60 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/APocketRoses/validator.txt b/validator/tests/goreflect/APocketRoses/validator.txt new file mode 100644 index 0000000..35ec025 --- /dev/null +++ b/validator/tests/goreflect/APocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[0:=="a",*] \ No newline at end of file diff --git a/validator/tests/goreflect/APocketRoses/validator.xml b/validator/tests/goreflect/APocketRoses/validator.xml new file mode 100644 index 0000000..f8538ba --- /dev/null +++ b/validator/tests/goreflect/APocketRoses/validator.xml @@ -0,0 +1,63 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 0 + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Any/valid.goreflect b/validator/tests/goreflect/Ab21Any/valid.goreflect new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/goreflect/Ab21Any/valid.goreflect @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Any/validator.json b/validator/tests/goreflect/Ab21Any/validator.json new file mode 100644 index 0000000..26141ef --- /dev/null +++ b/validator/tests/goreflect/Ab21Any/validator.json @@ -0,0 +1,9 @@ +{ + "TopPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Any/validator.txt b/validator/tests/goreflect/Ab21Any/validator.txt new file mode 100644 index 0000000..f59ec20 --- /dev/null +++ b/validator/tests/goreflect/Ab21Any/validator.txt @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Any/validator.xml b/validator/tests/goreflect/Ab21Any/validator.xml new file mode 100644 index 0000000..5a4bee6 --- /dev/null +++ b/validator/tests/goreflect/Ab21Any/validator.xml @@ -0,0 +1,9 @@ + + + + + * + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/invalid.goreflect b/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/invalid.goreflect new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/invalid.goreflect @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.json b/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.json new file mode 100644 index 0000000..c0b0161 --- /dev/null +++ b/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.json @@ -0,0 +1,93 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyNameExcept": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Except": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.txt b/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.txt new file mode 100644 index 0000000..7011915 --- /dev/null +++ b/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.txt @@ -0,0 +1 @@ +[!(SaladWorry)[MagazineFrame:=="a",*],*] \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.xml b/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.xml new file mode 100644 index 0000000..2f05599 --- /dev/null +++ b/validator/tests/goreflect/Ab21InAnyExceptSaladWorry/validator.xml @@ -0,0 +1,96 @@ + + + + + [ + + + + + + + ! + + + ( + + + + SaladWorry + + + + + ) + + + + + + + [ + + + + + + MagazineFrame + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21MagazineFrameA/valid.goreflect b/validator/tests/goreflect/Ab21MagazineFrameA/valid.goreflect new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/goreflect/Ab21MagazineFrameA/valid.goreflect @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21MagazineFrameA/validator.json b/validator/tests/goreflect/Ab21MagazineFrameA/validator.json new file mode 100644 index 0000000..ffecbd2 --- /dev/null +++ b/validator/tests/goreflect/Ab21MagazineFrameA/validator.json @@ -0,0 +1,137 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "XrayPilot" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21MagazineFrameA/validator.txt b/validator/tests/goreflect/Ab21MagazineFrameA/validator.txt new file mode 100644 index 0000000..433a06e --- /dev/null +++ b/validator/tests/goreflect/Ab21MagazineFrameA/validator.txt @@ -0,0 +1 @@ +[SaladWorry[MagazineFrame[_:=="a",*],XrayPilot:*,*],*] \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21MagazineFrameA/validator.xml b/validator/tests/goreflect/Ab21MagazineFrameA/validator.xml new file mode 100644 index 0000000..e61132e --- /dev/null +++ b/validator/tests/goreflect/Ab21MagazineFrameA/validator.xml @@ -0,0 +1,141 @@ + + + + + [ + + + + + + SaladWorry + + + + + + + [ + + + + + + MagazineFrame + + + + + + + [ + + + + + + + _ + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + + + + XrayPilot + + + + + : + + + + + * + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21MagazineFrameSingleA/invalid.goreflect b/validator/tests/goreflect/Ab21MagazineFrameSingleA/invalid.goreflect new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/goreflect/Ab21MagazineFrameSingleA/invalid.goreflect @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.json b/validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.json new file mode 100644 index 0000000..1dc80f8 --- /dev/null +++ b/validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.json @@ -0,0 +1,106 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "XrayPilot" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.txt b/validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.txt new file mode 100644 index 0000000..42505c9 --- /dev/null +++ b/validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.txt @@ -0,0 +1 @@ +[SaladWorry[MagazineFrame:=="a",XrayPilot:*,*],*] \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.xml b/validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.xml new file mode 100644 index 0000000..9bca86a --- /dev/null +++ b/validator/tests/goreflect/Ab21MagazineFrameSingleA/validator.xml @@ -0,0 +1,110 @@ + + + + + [ + + + + + + SaladWorry + + + + + + + [ + + + + + + MagazineFrame + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + + + + XrayPilot + + + + + : + + + + + * + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21None/invalid.goreflect b/validator/tests/goreflect/Ab21None/invalid.goreflect new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/goreflect/Ab21None/invalid.goreflect @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21None/validator.json b/validator/tests/goreflect/Ab21None/validator.json new file mode 100644 index 0000000..ce003a2 --- /dev/null +++ b/validator/tests/goreflect/Ab21None/validator.json @@ -0,0 +1,22 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21None/validator.txt b/validator/tests/goreflect/Ab21None/validator.txt new file mode 100644 index 0000000..7fd4f6c --- /dev/null +++ b/validator/tests/goreflect/Ab21None/validator.txt @@ -0,0 +1 @@ +!(*) \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21None/validator.xml b/validator/tests/goreflect/Ab21None/validator.xml new file mode 100644 index 0000000..187533d --- /dev/null +++ b/validator/tests/goreflect/Ab21None/validator.xml @@ -0,0 +1,22 @@ + + + + + ! + + + ( + + + + + * + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21NotAFieldName/valid.goreflect b/validator/tests/goreflect/Ab21NotAFieldName/valid.goreflect new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/goreflect/Ab21NotAFieldName/valid.goreflect @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21NotAFieldName/validator.json b/validator/tests/goreflect/Ab21NotAFieldName/validator.json new file mode 100644 index 0000000..257c80a --- /dev/null +++ b/validator/tests/goreflect/Ab21NotAFieldName/validator.json @@ -0,0 +1,124 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyNameExcept": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Except": { + "Name": { + "StringValue": "NotAFieldName" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21NotAFieldName/validator.txt b/validator/tests/goreflect/Ab21NotAFieldName/validator.txt new file mode 100644 index 0000000..632e4a9 --- /dev/null +++ b/validator/tests/goreflect/Ab21NotAFieldName/validator.txt @@ -0,0 +1 @@ +[!(NotAFieldName)[MagazineFrame[_:=="a",*],*],*] \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21NotAFieldName/validator.xml b/validator/tests/goreflect/Ab21NotAFieldName/validator.xml new file mode 100644 index 0000000..ddfea72 --- /dev/null +++ b/validator/tests/goreflect/Ab21NotAFieldName/validator.xml @@ -0,0 +1,127 @@ + + + + + [ + + + + + + + ! + + + ( + + + + NotAFieldName + + + + + ) + + + + + + + [ + + + + + + MagazineFrame + + + + + + + [ + + + + + + + _ + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Spirit1/valid.goreflect b/validator/tests/goreflect/Ab21Spirit1/valid.goreflect new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/goreflect/Ab21Spirit1/valid.goreflect @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Spirit1/validator.json b/validator/tests/goreflect/Ab21Spirit1/validator.json new file mode 100644 index 0000000..c66d5ea --- /dev/null +++ b/validator/tests/goreflect/Ab21Spirit1/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "spirit" + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "spirit", + "Eq": { + "Value": "=" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "RumourSpirit" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Spirit1/validator.txt b/validator/tests/goreflect/Ab21Spirit1/validator.txt new file mode 100644 index 0000000..33a0c16 --- /dev/null +++ b/validator/tests/goreflect/Ab21Spirit1/validator.txt @@ -0,0 +1,2 @@ +[*,@spirit,*] +#spirit=RumourSpirit:==1 \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Spirit1/validator.xml b/validator/tests/goreflect/Ab21Spirit1/validator.xml new file mode 100644 index 0000000..84cdbcc --- /dev/null +++ b/validator/tests/goreflect/Ab21Spirit1/validator.xml @@ -0,0 +1,87 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + @ + + spirit + + + + , + + + + + * + + + + + + + ] + + + + + + + + + # + + spirit + + = + + + + + + RumourSpirit + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Spirit2/invalid.goreflect b/validator/tests/goreflect/Ab21Spirit2/invalid.goreflect new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/goreflect/Ab21Spirit2/invalid.goreflect @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Spirit2/validator.json b/validator/tests/goreflect/Ab21Spirit2/validator.json new file mode 100644 index 0000000..7f87012 --- /dev/null +++ b/validator/tests/goreflect/Ab21Spirit2/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "spirit" + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "spirit", + "Eq": { + "Value": "=" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "RumourSpirit" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Spirit2/validator.txt b/validator/tests/goreflect/Ab21Spirit2/validator.txt new file mode 100644 index 0000000..4ea85ac --- /dev/null +++ b/validator/tests/goreflect/Ab21Spirit2/validator.txt @@ -0,0 +1,2 @@ +[*,@spirit,*] +#spirit=RumourSpirit:==2 \ No newline at end of file diff --git a/validator/tests/goreflect/Ab21Spirit2/validator.xml b/validator/tests/goreflect/Ab21Spirit2/validator.xml new file mode 100644 index 0000000..c5dd97b --- /dev/null +++ b/validator/tests/goreflect/Ab21Spirit2/validator.xml @@ -0,0 +1,87 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + @ + + spirit + + + + , + + + + + * + + + + + + + ] + + + + + + + + + # + + spirit + + = + + + + + + RumourSpirit + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/AbcPocketRoses/valid.goreflect b/validator/tests/goreflect/AbcPocketRoses/valid.goreflect new file mode 100644 index 0000000..45ec160 --- /dev/null +++ b/validator/tests/goreflect/AbcPocketRoses/valid.goreflect @@ -0,0 +1,7 @@ +{ + "MenuPaperclip": [ + "a", + "b", + "c" + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/AbcPocketRoses/validator.json b/validator/tests/goreflect/AbcPocketRoses/validator.json new file mode 100644 index 0000000..26822cb --- /dev/null +++ b/validator/tests/goreflect/AbcPocketRoses/validator.json @@ -0,0 +1,118 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 1 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 2 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/AbcPocketRoses/validator.txt b/validator/tests/goreflect/AbcPocketRoses/validator.txt new file mode 100644 index 0000000..67a8552 --- /dev/null +++ b/validator/tests/goreflect/AbcPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[0:=="a",1:=="b",2:=="c"] \ No newline at end of file diff --git a/validator/tests/goreflect/AbcPocketRoses/validator.xml b/validator/tests/goreflect/AbcPocketRoses/validator.xml new file mode 100644 index 0000000..6c0b4d3 --- /dev/null +++ b/validator/tests/goreflect/AbcPocketRoses/validator.xml @@ -0,0 +1,125 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 0 + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + + + + 1 + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + , + + + + + + 2 + + + + + : + + + + + + + == + + + + "c" + c + + + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/AndAnyName/valid.goreflect b/validator/tests/goreflect/AndAnyName/valid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/AndAnyName/valid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/AndAnyName/validator.json b/validator/tests/goreflect/AndAnyName/validator.json new file mode 100644 index 0000000..740f182 --- /dev/null +++ b/validator/tests/goreflect/AndAnyName/validator.json @@ -0,0 +1,91 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/AndAnyName/validator.txt b/validator/tests/goreflect/AndAnyName/validator.txt new file mode 100644 index 0000000..4a47959 --- /dev/null +++ b/validator/tests/goreflect/AndAnyName/validator.txt @@ -0,0 +1 @@ +(._:=="0123456789"&._:=="David") \ No newline at end of file diff --git a/validator/tests/goreflect/AndAnyName/validator.xml b/validator/tests/goreflect/AndAnyName/validator.xml new file mode 100644 index 0000000..8154dd6 --- /dev/null +++ b/validator/tests/goreflect/AndAnyName/validator.xml @@ -0,0 +1,93 @@ + + + + + ( + + + + + . + + + + + + + _ + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + & + + + + + . + + + + + + + _ + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneDavid/valid.goreflect b/validator/tests/goreflect/AndNameTelephoneDavid/valid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneDavid/valid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneDavid/validator.json b/validator/tests/goreflect/AndNameTelephoneDavid/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneDavid/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneDavid/validator.txt b/validator/tests/goreflect/AndNameTelephoneDavid/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneDavid/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneDavid/validator.xml b/validator/tests/goreflect/AndNameTelephoneDavid/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneDavid/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneJohn/invalid.goreflect b/validator/tests/goreflect/AndNameTelephoneJohn/invalid.goreflect new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneJohn/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneJohn/validator.json b/validator/tests/goreflect/AndNameTelephoneJohn/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneJohn/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneJohn/validator.txt b/validator/tests/goreflect/AndNameTelephoneJohn/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneJohn/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneJohn/validator.xml b/validator/tests/goreflect/AndNameTelephoneJohn/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneJohn/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneMover/invalid.goreflect b/validator/tests/goreflect/AndNameTelephoneMover/invalid.goreflect new file mode 100644 index 0000000..2519fd1 --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneMover/invalid.goreflect @@ -0,0 +1,30 @@ +{ + "Name": "Mover", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneMover/validator.json b/validator/tests/goreflect/AndNameTelephoneMover/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneMover/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneMover/validator.txt b/validator/tests/goreflect/AndNameTelephoneMover/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneMover/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneMover/validator.xml b/validator/tests/goreflect/AndNameTelephoneMover/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneMover/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneSmith/invalid.goreflect b/validator/tests/goreflect/AndNameTelephoneSmith/invalid.goreflect new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneSmith/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneSmith/validator.json b/validator/tests/goreflect/AndNameTelephoneSmith/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneSmith/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneSmith/validator.txt b/validator/tests/goreflect/AndNameTelephoneSmith/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneSmith/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/goreflect/AndNameTelephoneSmith/validator.xml b/validator/tests/goreflect/AndNameTelephoneSmith/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/goreflect/AndNameTelephoneSmith/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/BightTurn/invalid.goreflect b/validator/tests/goreflect/BightTurn/invalid.goreflect new file mode 100644 index 0000000..81232a1 --- /dev/null +++ b/validator/tests/goreflect/BightTurn/invalid.goreflect @@ -0,0 +1,7 @@ +{ + "Bight": [ + { + "Turn": true + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/BightTurn/validator.json b/validator/tests/goreflect/BightTurn/validator.json new file mode 100644 index 0000000..c0099b7 --- /dev/null +++ b/validator/tests/goreflect/BightTurn/validator.json @@ -0,0 +1,59 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/BightTurn/validator.txt b/validator/tests/goreflect/BightTurn/validator.txt new file mode 100644 index 0000000..d86366c --- /dev/null +++ b/validator/tests/goreflect/BightTurn/validator.txt @@ -0,0 +1 @@ +_:_:Elbow:==true \ No newline at end of file diff --git a/validator/tests/goreflect/BightTurn/validator.xml b/validator/tests/goreflect/BightTurn/validator.xml new file mode 100644 index 0000000..2190dd3 --- /dev/null +++ b/validator/tests/goreflect/BightTurn/validator.xml @@ -0,0 +1,61 @@ + + + + + + + _ + + + + + : + + + + + + + _ + + + + + : + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ContextDavid/invalid.goreflect b/validator/tests/goreflect/ContextDavid/invalid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/ContextDavid/invalid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ContextDavid/validator.json b/validator/tests/goreflect/ContextDavid/validator.json new file mode 100644 index 0000000..b4beea9 --- /dev/null +++ b/validator/tests/goreflect/ContextDavid/validator.json @@ -0,0 +1,103 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"TheStreet\"", + "StringValue": "TheStreet" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/ContextDavid/validator.txt b/validator/tests/goreflect/ContextDavid/validator.txt new file mode 100644 index 0000000..a26833d --- /dev/null +++ b/validator/tests/goreflect/ContextDavid/validator.txt @@ -0,0 +1 @@ +.Addresses:_[Number:==456,Street:=="TheStreet"] \ No newline at end of file diff --git a/validator/tests/goreflect/ContextDavid/validator.xml b/validator/tests/goreflect/ContextDavid/validator.xml new file mode 100644 index 0000000..607dff1 --- /dev/null +++ b/validator/tests/goreflect/ContextDavid/validator.xml @@ -0,0 +1,108 @@ + + + + + . + + + + + + Addresses + + + + + : + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + + + == + + + + "TheStreet" + TheStreet + + + + + + + + + + + ] + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ContextRobert/valid.goreflect b/validator/tests/goreflect/ContextRobert/valid.goreflect new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/goreflect/ContextRobert/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ContextRobert/validator.json b/validator/tests/goreflect/ContextRobert/validator.json new file mode 100644 index 0000000..b4beea9 --- /dev/null +++ b/validator/tests/goreflect/ContextRobert/validator.json @@ -0,0 +1,103 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"TheStreet\"", + "StringValue": "TheStreet" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/ContextRobert/validator.txt b/validator/tests/goreflect/ContextRobert/validator.txt new file mode 100644 index 0000000..a26833d --- /dev/null +++ b/validator/tests/goreflect/ContextRobert/validator.txt @@ -0,0 +1 @@ +.Addresses:_[Number:==456,Street:=="TheStreet"] \ No newline at end of file diff --git a/validator/tests/goreflect/ContextRobert/validator.xml b/validator/tests/goreflect/ContextRobert/validator.xml new file mode 100644 index 0000000..607dff1 --- /dev/null +++ b/validator/tests/goreflect/ContextRobert/validator.xml @@ -0,0 +1,108 @@ + + + + + . + + + + + + Addresses + + + + + : + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + + + == + + + + "TheStreet" + TheStreet + + + + + + + + + + + ] + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/CorrectTypeRobert/valid.goreflect b/validator/tests/goreflect/CorrectTypeRobert/valid.goreflect new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/goreflect/CorrectTypeRobert/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/CorrectTypeRobert/validator.json b/validator/tests/goreflect/CorrectTypeRobert/validator.json new file mode 100644 index 0000000..746ca4c --- /dev/null +++ b/validator/tests/goreflect/CorrectTypeRobert/validator.json @@ -0,0 +1,62 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "type", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/CorrectTypeRobert/validator.txt b/validator/tests/goreflect/CorrectTypeRobert/validator.txt new file mode 100644 index 0000000..b4cabd9 --- /dev/null +++ b/validator/tests/goreflect/CorrectTypeRobert/validator.txt @@ -0,0 +1 @@ +[Name:->type($string),*] \ No newline at end of file diff --git a/validator/tests/goreflect/CorrectTypeRobert/validator.xml b/validator/tests/goreflect/CorrectTypeRobert/validator.xml new file mode 100644 index 0000000..e208c1a --- /dev/null +++ b/validator/tests/goreflect/CorrectTypeRobert/validator.xml @@ -0,0 +1,62 @@ + + + + + [ + + + + + + Name + + + + + : + + + + + + -> + + + type + + ( + + + + + + + 109 + + + + + ) + + + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/DPocketRoses/invalid.goreflect b/validator/tests/goreflect/DPocketRoses/invalid.goreflect new file mode 100644 index 0000000..45ec160 --- /dev/null +++ b/validator/tests/goreflect/DPocketRoses/invalid.goreflect @@ -0,0 +1,7 @@ +{ + "MenuPaperclip": [ + "a", + "b", + "c" + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/DPocketRoses/validator.json b/validator/tests/goreflect/DPocketRoses/validator.json new file mode 100644 index 0000000..4264d8b --- /dev/null +++ b/validator/tests/goreflect/DPocketRoses/validator.json @@ -0,0 +1,60 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"d\"", + "StringValue": "d" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/DPocketRoses/validator.txt b/validator/tests/goreflect/DPocketRoses/validator.txt new file mode 100644 index 0000000..b01201b --- /dev/null +++ b/validator/tests/goreflect/DPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[0:=="d",*] \ No newline at end of file diff --git a/validator/tests/goreflect/DPocketRoses/validator.xml b/validator/tests/goreflect/DPocketRoses/validator.xml new file mode 100644 index 0000000..5d2acfe --- /dev/null +++ b/validator/tests/goreflect/DPocketRoses/validator.xml @@ -0,0 +1,63 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 0 + + + + + : + + + + + + + == + + + + "d" + d + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/DontErrorGivenWrongType/invalid.goreflect b/validator/tests/goreflect/DontErrorGivenWrongType/invalid.goreflect new file mode 100644 index 0000000..4b4af3e --- /dev/null +++ b/validator/tests/goreflect/DontErrorGivenWrongType/invalid.goreflect @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": -1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/DontErrorGivenWrongType/validator.json b/validator/tests/goreflect/DontErrorGivenWrongType/validator.json new file mode 100644 index 0000000..b4faf57 --- /dev/null +++ b/validator/tests/goreflect/DontErrorGivenWrongType/validator.json @@ -0,0 +1,94 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "uint(0)", + "UintValue": 0 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/DontErrorGivenWrongType/validator.txt b/validator/tests/goreflect/DontErrorGivenWrongType/validator.txt new file mode 100644 index 0000000..5bafb7f --- /dev/null +++ b/validator/tests/goreflect/DontErrorGivenWrongType/validator.txt @@ -0,0 +1 @@ +[Addresses:_[Number:>=uint(0),*],*] \ No newline at end of file diff --git a/validator/tests/goreflect/DontErrorGivenWrongType/validator.xml b/validator/tests/goreflect/DontErrorGivenWrongType/validator.xml new file mode 100644 index 0000000..fc595d4 --- /dev/null +++ b/validator/tests/goreflect/DontErrorGivenWrongType/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + + Addresses + + + + + : + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + >= + + + + uint(0) + 0 + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilJohn/invalid.goreflect b/validator/tests/goreflect/EmptyOrNilJohn/invalid.goreflect new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilJohn/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilJohn/validator.json b/validator/tests/goreflect/EmptyOrNilJohn/validator.json new file mode 100644 index 0000000..d68c824 --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilJohn/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "empty" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "empty", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilJohn/validator.txt b/validator/tests/goreflect/EmptyOrNilJohn/validator.txt new file mode 100644 index 0000000..ad903a6 --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilJohn/validator.txt @@ -0,0 +1,3 @@ +(@empty|@nil) +#empty=[*,Name:->eq(length($string),0),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilJohn/validator.xml b/validator/tests/goreflect/EmptyOrNilJohn/validator.xml new file mode 100644 index 0000000..4c72a76 --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilJohn/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + empty + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + empty + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilNoname/valid.goreflect b/validator/tests/goreflect/EmptyOrNilNoname/valid.goreflect new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilNoname/valid.goreflect @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilNoname/validator.json b/validator/tests/goreflect/EmptyOrNilNoname/validator.json new file mode 100644 index 0000000..d68c824 --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilNoname/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "empty" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "empty", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilNoname/validator.txt b/validator/tests/goreflect/EmptyOrNilNoname/validator.txt new file mode 100644 index 0000000..ad903a6 --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilNoname/validator.txt @@ -0,0 +1,3 @@ +(@empty|@nil) +#empty=[*,Name:->eq(length($string),0),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilNoname/validator.xml b/validator/tests/goreflect/EmptyOrNilNoname/validator.xml new file mode 100644 index 0000000..4c72a76 --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilNoname/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + empty + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + empty + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilSmith/valid.goreflect b/validator/tests/goreflect/EmptyOrNilSmith/valid.goreflect new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilSmith/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilSmith/validator.json b/validator/tests/goreflect/EmptyOrNilSmith/validator.json new file mode 100644 index 0000000..d68c824 --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilSmith/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "empty" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "empty", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilSmith/validator.txt b/validator/tests/goreflect/EmptyOrNilSmith/validator.txt new file mode 100644 index 0000000..ad903a6 --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilSmith/validator.txt @@ -0,0 +1,3 @@ +(@empty|@nil) +#empty=[*,Name:->eq(length($string),0),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/goreflect/EmptyOrNilSmith/validator.xml b/validator/tests/goreflect/EmptyOrNilSmith/validator.xml new file mode 100644 index 0000000..4c72a76 --- /dev/null +++ b/validator/tests/goreflect/EmptyOrNilSmith/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + empty + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + empty + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/FinalCPocketRoses/valid.goreflect b/validator/tests/goreflect/FinalCPocketRoses/valid.goreflect new file mode 100644 index 0000000..45ec160 --- /dev/null +++ b/validator/tests/goreflect/FinalCPocketRoses/valid.goreflect @@ -0,0 +1,7 @@ +{ + "MenuPaperclip": [ + "a", + "b", + "c" + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/FinalCPocketRoses/validator.json b/validator/tests/goreflect/FinalCPocketRoses/validator.json new file mode 100644 index 0000000..105c55a --- /dev/null +++ b/validator/tests/goreflect/FinalCPocketRoses/validator.json @@ -0,0 +1,60 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 2 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/FinalCPocketRoses/validator.txt b/validator/tests/goreflect/FinalCPocketRoses/validator.txt new file mode 100644 index 0000000..36df8ad --- /dev/null +++ b/validator/tests/goreflect/FinalCPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[*,2:=="c"] \ No newline at end of file diff --git a/validator/tests/goreflect/FinalCPocketRoses/validator.xml b/validator/tests/goreflect/FinalCPocketRoses/validator.xml new file mode 100644 index 0000000..87cfb48 --- /dev/null +++ b/validator/tests/goreflect/FinalCPocketRoses/validator.xml @@ -0,0 +1,63 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + * + + + + + , + + + + + + 2 + + + + + : + + + + + + + == + + + + "c" + c + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/HiddenLeftRecursionDavid/valid.goreflect b/validator/tests/goreflect/HiddenLeftRecursionDavid/valid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/HiddenLeftRecursionDavid/valid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/HiddenLeftRecursionDavid/validator.json b/validator/tests/goreflect/HiddenLeftRecursionDavid/validator.json new file mode 100644 index 0000000..f36edfb --- /dev/null +++ b/validator/tests/goreflect/HiddenLeftRecursionDavid/validator.json @@ -0,0 +1,96 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "hidden" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "hidden", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/HiddenLeftRecursionDavid/validator.txt b/validator/tests/goreflect/HiddenLeftRecursionDavid/validator.txt new file mode 100644 index 0000000..534c1be --- /dev/null +++ b/validator/tests/goreflect/HiddenLeftRecursionDavid/validator.txt @@ -0,0 +1,2 @@ +(@hidden|[*,Telephone:=="0123456789"]) +#hidden=@main \ No newline at end of file diff --git a/validator/tests/goreflect/HiddenLeftRecursionDavid/validator.xml b/validator/tests/goreflect/HiddenLeftRecursionDavid/validator.xml new file mode 100644 index 0000000..f62291e --- /dev/null +++ b/validator/tests/goreflect/HiddenLeftRecursionDavid/validator.xml @@ -0,0 +1,94 @@ + + + + + ( + + + + + @ + + hidden + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + + + + + + # + + hidden + + = + + + + + @ + + main + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/HiddenLeftRecursionRobert/invalid.goreflect b/validator/tests/goreflect/HiddenLeftRecursionRobert/invalid.goreflect new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/goreflect/HiddenLeftRecursionRobert/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/HiddenLeftRecursionRobert/validator.json b/validator/tests/goreflect/HiddenLeftRecursionRobert/validator.json new file mode 100644 index 0000000..f36edfb --- /dev/null +++ b/validator/tests/goreflect/HiddenLeftRecursionRobert/validator.json @@ -0,0 +1,96 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "hidden" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "hidden", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/HiddenLeftRecursionRobert/validator.txt b/validator/tests/goreflect/HiddenLeftRecursionRobert/validator.txt new file mode 100644 index 0000000..534c1be --- /dev/null +++ b/validator/tests/goreflect/HiddenLeftRecursionRobert/validator.txt @@ -0,0 +1,2 @@ +(@hidden|[*,Telephone:=="0123456789"]) +#hidden=@main \ No newline at end of file diff --git a/validator/tests/goreflect/HiddenLeftRecursionRobert/validator.xml b/validator/tests/goreflect/HiddenLeftRecursionRobert/validator.xml new file mode 100644 index 0000000..f62291e --- /dev/null +++ b/validator/tests/goreflect/HiddenLeftRecursionRobert/validator.xml @@ -0,0 +1,94 @@ + + + + + ( + + + + + @ + + hidden + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + + + + + + # + + hidden + + = + + + + + @ + + main + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/InSetPersonDavid/invalid.goreflect b/validator/tests/goreflect/InSetPersonDavid/invalid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/InSetPersonDavid/invalid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/InSetPersonDavid/validator.json b/validator/tests/goreflect/InSetPersonDavid/validator.json new file mode 100644 index 0000000..949e35b --- /dev/null +++ b/validator/tests/goreflect/InSetPersonDavid/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "contains", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "List": { + "Type": 209, + "OpenCurly": { + "Value": "{" + }, + "Elems": [ + { + "Terminal": { + "Literal": "\"The\"", + "StringValue": "The" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Robert\"", + "StringValue": "Robert" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Smith\"", + "StringValue": "Smith" + } + } + ], + "CloseCurly": { + "Value": "}" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/InSetPersonDavid/validator.txt b/validator/tests/goreflect/InSetPersonDavid/validator.txt new file mode 100644 index 0000000..5d9f6f3 --- /dev/null +++ b/validator/tests/goreflect/InSetPersonDavid/validator.txt @@ -0,0 +1 @@ +.Name:->contains($string,[]string{"The","Robert","Smith"}) \ No newline at end of file diff --git a/validator/tests/goreflect/InSetPersonDavid/validator.xml b/validator/tests/goreflect/InSetPersonDavid/validator.xml new file mode 100644 index 0000000..48591ef --- /dev/null +++ b/validator/tests/goreflect/InSetPersonDavid/validator.xml @@ -0,0 +1,90 @@ + + + + + . + + + + + + Name + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 109 + + + + + + , + + + 209 + + { + + + + "The" + The + + + + + + , + + + "Robert" + Robert + + + + + + , + + + "Smith" + Smith + + + + + } + + + + + ) + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/InSetPersonRobert/valid.goreflect b/validator/tests/goreflect/InSetPersonRobert/valid.goreflect new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/goreflect/InSetPersonRobert/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/InSetPersonRobert/validator.json b/validator/tests/goreflect/InSetPersonRobert/validator.json new file mode 100644 index 0000000..949e35b --- /dev/null +++ b/validator/tests/goreflect/InSetPersonRobert/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "contains", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "List": { + "Type": 209, + "OpenCurly": { + "Value": "{" + }, + "Elems": [ + { + "Terminal": { + "Literal": "\"The\"", + "StringValue": "The" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Robert\"", + "StringValue": "Robert" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Smith\"", + "StringValue": "Smith" + } + } + ], + "CloseCurly": { + "Value": "}" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/InSetPersonRobert/validator.txt b/validator/tests/goreflect/InSetPersonRobert/validator.txt new file mode 100644 index 0000000..5d9f6f3 --- /dev/null +++ b/validator/tests/goreflect/InSetPersonRobert/validator.txt @@ -0,0 +1 @@ +.Name:->contains($string,[]string{"The","Robert","Smith"}) \ No newline at end of file diff --git a/validator/tests/goreflect/InSetPersonRobert/validator.xml b/validator/tests/goreflect/InSetPersonRobert/validator.xml new file mode 100644 index 0000000..48591ef --- /dev/null +++ b/validator/tests/goreflect/InSetPersonRobert/validator.xml @@ -0,0 +1,90 @@ + + + + + . + + + + + + Name + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 109 + + + + + + , + + + 209 + + { + + + + "The" + The + + + + + + , + + + "Robert" + Robert + + + + + + , + + + "Smith" + Smith + + + + + } + + + + + ) + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/KnotKnotElbow/valid.goreflect b/validator/tests/goreflect/KnotKnotElbow/valid.goreflect new file mode 100644 index 0000000..65e7eb6 --- /dev/null +++ b/validator/tests/goreflect/KnotKnotElbow/valid.goreflect @@ -0,0 +1,7 @@ +{ + "BitterEnd": { + "BitterEnd": { + "Elbow": true + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/KnotKnotElbow/validator.json b/validator/tests/goreflect/KnotKnotElbow/validator.json new file mode 100644 index 0000000..c0099b7 --- /dev/null +++ b/validator/tests/goreflect/KnotKnotElbow/validator.json @@ -0,0 +1,59 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/KnotKnotElbow/validator.txt b/validator/tests/goreflect/KnotKnotElbow/validator.txt new file mode 100644 index 0000000..d86366c --- /dev/null +++ b/validator/tests/goreflect/KnotKnotElbow/validator.txt @@ -0,0 +1 @@ +_:_:Elbow:==true \ No newline at end of file diff --git a/validator/tests/goreflect/KnotKnotElbow/validator.xml b/validator/tests/goreflect/KnotKnotElbow/validator.xml new file mode 100644 index 0000000..2190dd3 --- /dev/null +++ b/validator/tests/goreflect/KnotKnotElbow/validator.xml @@ -0,0 +1,61 @@ + + + + + + + _ + + + + + : + + + + + + + _ + + + + + : + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/LatentSimplificationFalse/invalid.goreflect b/validator/tests/goreflect/LatentSimplificationFalse/invalid.goreflect new file mode 100644 index 0000000..24f7098 --- /dev/null +++ b/validator/tests/goreflect/LatentSimplificationFalse/invalid.goreflect @@ -0,0 +1,12 @@ +{ + "PocketRoses": { + "BadgeShopping": 2, + "DaisySled": 0, + "MenuPaperclip": [ + "a" + ], + "BeetlePoker": [ + "a" + ] + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/LatentSimplificationFalse/validator.json b/validator/tests/goreflect/LatentSimplificationFalse/validator.json new file mode 100644 index 0000000..7840101 --- /dev/null +++ b/validator/tests/goreflect/LatentSimplificationFalse/validator.json @@ -0,0 +1,727 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003c=" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "DaisySled" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/LatentSimplificationFalse/validator.txt b/validator/tests/goreflect/LatentSimplificationFalse/validator.txt new file mode 100644 index 0000000..e914da9 --- /dev/null +++ b/validator/tests/goreflect/LatentSimplificationFalse/validator.txt @@ -0,0 +1 @@ +((((.PocketRoses:.MenuPaperclip:._:*="a"|.PocketRoses:.BeetlePoker:._:*="a")|(.PocketRoses:.MenuPaperclip:._:*="b"|.PocketRoses:.BeetlePoker:._:*="b"))&(.PocketRoses:.MenuPaperclip:._:*="c"|.PocketRoses:.BeetlePoker:._:*="c"))&(.PocketRoses:.BadgeShopping:<=2&(.PocketRoses:.BadgeShopping:>=0&.PocketRoses:.DaisySled:>=1))) \ No newline at end of file diff --git a/validator/tests/goreflect/LatentSimplificationFalse/validator.xml b/validator/tests/goreflect/LatentSimplificationFalse/validator.xml new file mode 100644 index 0000000..b6bfd25 --- /dev/null +++ b/validator/tests/goreflect/LatentSimplificationFalse/validator.xml @@ -0,0 +1,754 @@ + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + <= + + + + 2 + 2 + + + + + + + + + + + + + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + >= + + + + 0 + 0 + + + + + + + + + + + + + + + + + & + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + DaisySled + + + + + : + + + + + + + >= + + + + 1 + 1 + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/LatentSimplificationTrue/valid.goreflect b/validator/tests/goreflect/LatentSimplificationTrue/valid.goreflect new file mode 100644 index 0000000..3f37d8c --- /dev/null +++ b/validator/tests/goreflect/LatentSimplificationTrue/valid.goreflect @@ -0,0 +1,12 @@ +{ + "PocketRoses": { + "BadgeShopping": 2, + "DaisySled": 1, + "MenuPaperclip": [ + "b" + ], + "BeetlePoker": [ + "c" + ] + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/LatentSimplificationTrue/validator.json b/validator/tests/goreflect/LatentSimplificationTrue/validator.json new file mode 100644 index 0000000..7840101 --- /dev/null +++ b/validator/tests/goreflect/LatentSimplificationTrue/validator.json @@ -0,0 +1,727 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003c=" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "DaisySled" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/LatentSimplificationTrue/validator.txt b/validator/tests/goreflect/LatentSimplificationTrue/validator.txt new file mode 100644 index 0000000..e914da9 --- /dev/null +++ b/validator/tests/goreflect/LatentSimplificationTrue/validator.txt @@ -0,0 +1 @@ +((((.PocketRoses:.MenuPaperclip:._:*="a"|.PocketRoses:.BeetlePoker:._:*="a")|(.PocketRoses:.MenuPaperclip:._:*="b"|.PocketRoses:.BeetlePoker:._:*="b"))&(.PocketRoses:.MenuPaperclip:._:*="c"|.PocketRoses:.BeetlePoker:._:*="c"))&(.PocketRoses:.BadgeShopping:<=2&(.PocketRoses:.BadgeShopping:>=0&.PocketRoses:.DaisySled:>=1))) \ No newline at end of file diff --git a/validator/tests/goreflect/LatentSimplificationTrue/validator.xml b/validator/tests/goreflect/LatentSimplificationTrue/validator.xml new file mode 100644 index 0000000..b6bfd25 --- /dev/null +++ b/validator/tests/goreflect/LatentSimplificationTrue/validator.xml @@ -0,0 +1,754 @@ + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + <= + + + + 2 + 2 + + + + + + + + + + + + + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + >= + + + + 0 + 0 + + + + + + + + + + + + + + + + + & + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + DaisySled + + + + + : + + + + + + + >= + + + + 1 + 1 + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/LeftRecursionDavid/valid.goreflect b/validator/tests/goreflect/LeftRecursionDavid/valid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/LeftRecursionDavid/valid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/LeftRecursionDavid/validator.json b/validator/tests/goreflect/LeftRecursionDavid/validator.json new file mode 100644 index 0000000..33d5b61 --- /dev/null +++ b/validator/tests/goreflect/LeftRecursionDavid/validator.json @@ -0,0 +1,72 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/LeftRecursionDavid/validator.txt b/validator/tests/goreflect/LeftRecursionDavid/validator.txt new file mode 100644 index 0000000..d76d7d4 --- /dev/null +++ b/validator/tests/goreflect/LeftRecursionDavid/validator.txt @@ -0,0 +1 @@ +(@main|[*,Telephone:=="0123456789"]) \ No newline at end of file diff --git a/validator/tests/goreflect/LeftRecursionDavid/validator.xml b/validator/tests/goreflect/LeftRecursionDavid/validator.xml new file mode 100644 index 0000000..ba1fb1e --- /dev/null +++ b/validator/tests/goreflect/LeftRecursionDavid/validator.xml @@ -0,0 +1,74 @@ + + + + + ( + + + + + @ + + main + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/LeftRecursionRobert/invalid.goreflect b/validator/tests/goreflect/LeftRecursionRobert/invalid.goreflect new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/goreflect/LeftRecursionRobert/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/LeftRecursionRobert/validator.json b/validator/tests/goreflect/LeftRecursionRobert/validator.json new file mode 100644 index 0000000..33d5b61 --- /dev/null +++ b/validator/tests/goreflect/LeftRecursionRobert/validator.json @@ -0,0 +1,72 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/LeftRecursionRobert/validator.txt b/validator/tests/goreflect/LeftRecursionRobert/validator.txt new file mode 100644 index 0000000..d76d7d4 --- /dev/null +++ b/validator/tests/goreflect/LeftRecursionRobert/validator.txt @@ -0,0 +1 @@ +(@main|[*,Telephone:=="0123456789"]) \ No newline at end of file diff --git a/validator/tests/goreflect/LeftRecursionRobert/validator.xml b/validator/tests/goreflect/LeftRecursionRobert/validator.xml new file mode 100644 index 0000000..ba1fb1e --- /dev/null +++ b/validator/tests/goreflect/LeftRecursionRobert/validator.xml @@ -0,0 +1,74 @@ + + + + + ( + + + + + @ + + main + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameJohn/invalid.goreflect b/validator/tests/goreflect/LenNameJohn/invalid.goreflect new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/goreflect/LenNameJohn/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameJohn/validator.json b/validator/tests/goreflect/LenNameJohn/validator.json new file mode 100644 index 0000000..c70c6dd --- /dev/null +++ b/validator/tests/goreflect/LenNameJohn/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameJohn/validator.txt b/validator/tests/goreflect/LenNameJohn/validator.txt new file mode 100644 index 0000000..ca5eb5b --- /dev/null +++ b/validator/tests/goreflect/LenNameJohn/validator.txt @@ -0,0 +1 @@ +[*,Name:->eq(length($string),0),*] \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameJohn/validator.xml b/validator/tests/goreflect/LenNameJohn/validator.xml new file mode 100644 index 0000000..87ff11c --- /dev/null +++ b/validator/tests/goreflect/LenNameJohn/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameNoname/invalid.goreflect b/validator/tests/goreflect/LenNameNoname/invalid.goreflect new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/goreflect/LenNameNoname/invalid.goreflect @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameNoname/validator.json b/validator/tests/goreflect/LenNameNoname/validator.json new file mode 100644 index 0000000..c70c6dd --- /dev/null +++ b/validator/tests/goreflect/LenNameNoname/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameNoname/validator.txt b/validator/tests/goreflect/LenNameNoname/validator.txt new file mode 100644 index 0000000..ca5eb5b --- /dev/null +++ b/validator/tests/goreflect/LenNameNoname/validator.txt @@ -0,0 +1 @@ +[*,Name:->eq(length($string),0),*] \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameNoname/validator.xml b/validator/tests/goreflect/LenNameNoname/validator.xml new file mode 100644 index 0000000..87ff11c --- /dev/null +++ b/validator/tests/goreflect/LenNameNoname/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameSmith/valid.goreflect b/validator/tests/goreflect/LenNameSmith/valid.goreflect new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/goreflect/LenNameSmith/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameSmith/validator.json b/validator/tests/goreflect/LenNameSmith/validator.json new file mode 100644 index 0000000..c70c6dd --- /dev/null +++ b/validator/tests/goreflect/LenNameSmith/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameSmith/validator.txt b/validator/tests/goreflect/LenNameSmith/validator.txt new file mode 100644 index 0000000..ca5eb5b --- /dev/null +++ b/validator/tests/goreflect/LenNameSmith/validator.txt @@ -0,0 +1 @@ +[*,Name:->eq(length($string),0),*] \ No newline at end of file diff --git a/validator/tests/goreflect/LenNameSmith/validator.xml b/validator/tests/goreflect/LenNameSmith/validator.xml new file mode 100644 index 0000000..87ff11c --- /dev/null +++ b/validator/tests/goreflect/LenNameSmith/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressMover/invalid.goreflect b/validator/tests/goreflect/ListIndexAddressMover/invalid.goreflect new file mode 100644 index 0000000..2519fd1 --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressMover/invalid.goreflect @@ -0,0 +1,30 @@ +{ + "Name": "Mover", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressMover/validator.json b/validator/tests/goreflect/ListIndexAddressMover/validator.json new file mode 100644 index 0000000..6ecafe6 --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressMover/validator.json @@ -0,0 +1,172 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressMover/validator.txt b/validator/tests/goreflect/ListIndexAddressMover/validator.txt new file mode 100644 index 0000000..3dffdfc --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressMover/validator.txt @@ -0,0 +1 @@ +[*,Addresses[*,_:.Number:==2,_:.Number:==1],*] \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressMover/validator.xml b/validator/tests/goreflect/ListIndexAddressMover/validator.xml new file mode 100644 index 0000000..62d8a9d --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressMover/validator.xml @@ -0,0 +1,177 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + + + , + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressRoutine/invalid.goreflect b/validator/tests/goreflect/ListIndexAddressRoutine/invalid.goreflect new file mode 100644 index 0000000..12bbe58 --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressRoutine/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Routine", + "Addresses": [ + { + "Number": 3, + "Street": "SomeStreet" + } + ], + "Telephone": "0124444444" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressRoutine/validator.json b/validator/tests/goreflect/ListIndexAddressRoutine/validator.json new file mode 100644 index 0000000..6ecafe6 --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressRoutine/validator.json @@ -0,0 +1,172 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressRoutine/validator.txt b/validator/tests/goreflect/ListIndexAddressRoutine/validator.txt new file mode 100644 index 0000000..3dffdfc --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressRoutine/validator.txt @@ -0,0 +1 @@ +[*,Addresses[*,_:.Number:==2,_:.Number:==1],*] \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressRoutine/validator.xml b/validator/tests/goreflect/ListIndexAddressRoutine/validator.xml new file mode 100644 index 0000000..62d8a9d --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressRoutine/validator.xml @@ -0,0 +1,177 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + + + , + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressShaker/valid.goreflect b/validator/tests/goreflect/ListIndexAddressShaker/valid.goreflect new file mode 100644 index 0000000..51416bd --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressShaker/valid.goreflect @@ -0,0 +1,22 @@ +{ + "Name": "Shaker", + "Addresses": [ + { + "Number": 55, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressShaker/validator.json b/validator/tests/goreflect/ListIndexAddressShaker/validator.json new file mode 100644 index 0000000..6ecafe6 --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressShaker/validator.json @@ -0,0 +1,172 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressShaker/validator.txt b/validator/tests/goreflect/ListIndexAddressShaker/validator.txt new file mode 100644 index 0000000..3dffdfc --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressShaker/validator.txt @@ -0,0 +1 @@ +[*,Addresses[*,_:.Number:==2,_:.Number:==1],*] \ No newline at end of file diff --git a/validator/tests/goreflect/ListIndexAddressShaker/validator.xml b/validator/tests/goreflect/ListIndexAddressShaker/validator.xml new file mode 100644 index 0000000..62d8a9d --- /dev/null +++ b/validator/tests/goreflect/ListIndexAddressShaker/validator.xml @@ -0,0 +1,177 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + + + , + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesDavid/valid.goreflect b/validator/tests/goreflect/ListOfTelephonesDavid/valid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesDavid/valid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesDavid/validator.json b/validator/tests/goreflect/ListOfTelephonesDavid/validator.json new file mode 100644 index 0000000..477a1bb --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesDavid/validator.json @@ -0,0 +1,131 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "or", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesDavid/validator.txt b/validator/tests/goreflect/ListOfTelephonesDavid/validator.txt new file mode 100644 index 0000000..644337f --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesDavid/validator.txt @@ -0,0 +1 @@ +[*,Telephone:->or(eq($string,"0123456789"),eq($string,"0127897897")),*] \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesDavid/validator.xml b/validator/tests/goreflect/ListOfTelephonesDavid/validator.xml new file mode 100644 index 0000000..0194a78 --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesDavid/validator.xml @@ -0,0 +1,130 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + -> + + + or + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0123456789" + 0123456789 + + + + + ) + + + + + + , + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0127897897" + 0127897897 + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesRoutine/invalid.goreflect b/validator/tests/goreflect/ListOfTelephonesRoutine/invalid.goreflect new file mode 100644 index 0000000..12bbe58 --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesRoutine/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Routine", + "Addresses": [ + { + "Number": 3, + "Street": "SomeStreet" + } + ], + "Telephone": "0124444444" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesRoutine/validator.json b/validator/tests/goreflect/ListOfTelephonesRoutine/validator.json new file mode 100644 index 0000000..477a1bb --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesRoutine/validator.json @@ -0,0 +1,131 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "or", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesRoutine/validator.txt b/validator/tests/goreflect/ListOfTelephonesRoutine/validator.txt new file mode 100644 index 0000000..644337f --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesRoutine/validator.txt @@ -0,0 +1 @@ +[*,Telephone:->or(eq($string,"0123456789"),eq($string,"0127897897")),*] \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesRoutine/validator.xml b/validator/tests/goreflect/ListOfTelephonesRoutine/validator.xml new file mode 100644 index 0000000..0194a78 --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesRoutine/validator.xml @@ -0,0 +1,130 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + -> + + + or + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0123456789" + 0123456789 + + + + + ) + + + + + + , + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0127897897" + 0127897897 + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesShaker/valid.goreflect b/validator/tests/goreflect/ListOfTelephonesShaker/valid.goreflect new file mode 100644 index 0000000..51416bd --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesShaker/valid.goreflect @@ -0,0 +1,22 @@ +{ + "Name": "Shaker", + "Addresses": [ + { + "Number": 55, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesShaker/validator.json b/validator/tests/goreflect/ListOfTelephonesShaker/validator.json new file mode 100644 index 0000000..477a1bb --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesShaker/validator.json @@ -0,0 +1,131 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "or", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesShaker/validator.txt b/validator/tests/goreflect/ListOfTelephonesShaker/validator.txt new file mode 100644 index 0000000..644337f --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesShaker/validator.txt @@ -0,0 +1 @@ +[*,Telephone:->or(eq($string,"0123456789"),eq($string,"0127897897")),*] \ No newline at end of file diff --git a/validator/tests/goreflect/ListOfTelephonesShaker/validator.xml b/validator/tests/goreflect/ListOfTelephonesShaker/validator.xml new file mode 100644 index 0000000..0194a78 --- /dev/null +++ b/validator/tests/goreflect/ListOfTelephonesShaker/validator.xml @@ -0,0 +1,130 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + -> + + + or + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0123456789" + 0123456789 + + + + + ) + + + + + + , + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0127897897" + 0127897897 + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameDavid/invalid.goreflect b/validator/tests/goreflect/NaiveNotNameDavid/invalid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameDavid/invalid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameDavid/validator.json b/validator/tests/goreflect/NaiveNotNameDavid/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameDavid/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameDavid/validator.txt b/validator/tests/goreflect/NaiveNotNameDavid/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameDavid/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameDavid/validator.xml b/validator/tests/goreflect/NaiveNotNameDavid/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameDavid/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameNoname/invalid.goreflect b/validator/tests/goreflect/NaiveNotNameNoname/invalid.goreflect new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameNoname/invalid.goreflect @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameNoname/validator.json b/validator/tests/goreflect/NaiveNotNameNoname/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameNoname/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameNoname/validator.txt b/validator/tests/goreflect/NaiveNotNameNoname/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameNoname/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameNoname/validator.xml b/validator/tests/goreflect/NaiveNotNameNoname/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameNoname/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameRobert/valid.goreflect b/validator/tests/goreflect/NaiveNotNameRobert/valid.goreflect new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameRobert/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameRobert/validator.json b/validator/tests/goreflect/NaiveNotNameRobert/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameRobert/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameRobert/validator.txt b/validator/tests/goreflect/NaiveNotNameRobert/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameRobert/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameRobert/validator.xml b/validator/tests/goreflect/NaiveNotNameRobert/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameRobert/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameSmith/valid.goreflect b/validator/tests/goreflect/NaiveNotNameSmith/valid.goreflect new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameSmith/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameSmith/validator.json b/validator/tests/goreflect/NaiveNotNameSmith/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameSmith/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameSmith/validator.txt b/validator/tests/goreflect/NaiveNotNameSmith/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameSmith/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/goreflect/NaiveNotNameSmith/validator.xml b/validator/tests/goreflect/NaiveNotNameSmith/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/goreflect/NaiveNotNameSmith/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/NextAPocketRoses/invalid.goreflect b/validator/tests/goreflect/NextAPocketRoses/invalid.goreflect new file mode 100644 index 0000000..45ec160 --- /dev/null +++ b/validator/tests/goreflect/NextAPocketRoses/invalid.goreflect @@ -0,0 +1,7 @@ +{ + "MenuPaperclip": [ + "a", + "b", + "c" + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/NextAPocketRoses/validator.json b/validator/tests/goreflect/NextAPocketRoses/validator.json new file mode 100644 index 0000000..49beb20 --- /dev/null +++ b/validator/tests/goreflect/NextAPocketRoses/validator.json @@ -0,0 +1,118 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 1 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 2 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/NextAPocketRoses/validator.txt b/validator/tests/goreflect/NextAPocketRoses/validator.txt new file mode 100644 index 0000000..577118a --- /dev/null +++ b/validator/tests/goreflect/NextAPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[1:=="a",0:=="b",2:=="c"] \ No newline at end of file diff --git a/validator/tests/goreflect/NextAPocketRoses/validator.xml b/validator/tests/goreflect/NextAPocketRoses/validator.xml new file mode 100644 index 0000000..6ad24e5 --- /dev/null +++ b/validator/tests/goreflect/NextAPocketRoses/validator.xml @@ -0,0 +1,125 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 1 + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + + + + 0 + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + , + + + + + + 2 + + + + + : + + + + + + + == + + + + "c" + c + + + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameJohn/invalid.goreflect b/validator/tests/goreflect/NilNameJohn/invalid.goreflect new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/goreflect/NilNameJohn/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameJohn/validator.json b/validator/tests/goreflect/NilNameJohn/validator.json new file mode 100644 index 0000000..2779c47 --- /dev/null +++ b/validator/tests/goreflect/NilNameJohn/validator.json @@ -0,0 +1,41 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameJohn/validator.txt b/validator/tests/goreflect/NilNameJohn/validator.txt new file mode 100644 index 0000000..0e09869 --- /dev/null +++ b/validator/tests/goreflect/NilNameJohn/validator.txt @@ -0,0 +1 @@ +!(.Name:*) \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameJohn/validator.xml b/validator/tests/goreflect/NilNameJohn/validator.xml new file mode 100644 index 0000000..75f6b17 --- /dev/null +++ b/validator/tests/goreflect/NilNameJohn/validator.xml @@ -0,0 +1,42 @@ + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameNoname/valid.goreflect b/validator/tests/goreflect/NilNameNoname/valid.goreflect new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/goreflect/NilNameNoname/valid.goreflect @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameNoname/validator.json b/validator/tests/goreflect/NilNameNoname/validator.json new file mode 100644 index 0000000..2779c47 --- /dev/null +++ b/validator/tests/goreflect/NilNameNoname/validator.json @@ -0,0 +1,41 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameNoname/validator.txt b/validator/tests/goreflect/NilNameNoname/validator.txt new file mode 100644 index 0000000..0e09869 --- /dev/null +++ b/validator/tests/goreflect/NilNameNoname/validator.txt @@ -0,0 +1 @@ +!(.Name:*) \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameNoname/validator.xml b/validator/tests/goreflect/NilNameNoname/validator.xml new file mode 100644 index 0000000..75f6b17 --- /dev/null +++ b/validator/tests/goreflect/NilNameNoname/validator.xml @@ -0,0 +1,42 @@ + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameSmith/invalid.goreflect b/validator/tests/goreflect/NilNameSmith/invalid.goreflect new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/goreflect/NilNameSmith/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameSmith/validator.json b/validator/tests/goreflect/NilNameSmith/validator.json new file mode 100644 index 0000000..2779c47 --- /dev/null +++ b/validator/tests/goreflect/NilNameSmith/validator.json @@ -0,0 +1,41 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameSmith/validator.txt b/validator/tests/goreflect/NilNameSmith/validator.txt new file mode 100644 index 0000000..0e09869 --- /dev/null +++ b/validator/tests/goreflect/NilNameSmith/validator.txt @@ -0,0 +1 @@ +!(.Name:*) \ No newline at end of file diff --git a/validator/tests/goreflect/NilNameSmith/validator.xml b/validator/tests/goreflect/NilNameSmith/validator.xml new file mode 100644 index 0000000..75f6b17 --- /dev/null +++ b/validator/tests/goreflect/NilNameSmith/validator.xml @@ -0,0 +1,42 @@ + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressDavidPerson/valid.goreflect b/validator/tests/goreflect/OptionalAddressDavidPerson/valid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressDavidPerson/valid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressDavidPerson/validator.json b/validator/tests/goreflect/OptionalAddressDavidPerson/validator.json new file mode 100644 index 0000000..fd3e097 --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressDavidPerson/validator.json @@ -0,0 +1,178 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressDavidPerson/validator.txt b/validator/tests/goreflect/OptionalAddressDavidPerson/validator.txt new file mode 100644 index 0000000..551725e --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressDavidPerson/validator.txt @@ -0,0 +1 @@ +.Addresses[(_[Number:*,Street:*])?,_[Number:==456,Street:*]] \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressDavidPerson/validator.xml b/validator/tests/goreflect/OptionalAddressDavidPerson/validator.xml new file mode 100644 index 0000000..99d93ad --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressDavidPerson/validator.xml @@ -0,0 +1,184 @@ + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + ( + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + * + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ) + + + ? + + + + + , + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ] + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressMoverPerson/invalid.goreflect b/validator/tests/goreflect/OptionalAddressMoverPerson/invalid.goreflect new file mode 100644 index 0000000..2519fd1 --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressMoverPerson/invalid.goreflect @@ -0,0 +1,30 @@ +{ + "Name": "Mover", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressMoverPerson/validator.json b/validator/tests/goreflect/OptionalAddressMoverPerson/validator.json new file mode 100644 index 0000000..fd3e097 --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressMoverPerson/validator.json @@ -0,0 +1,178 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressMoverPerson/validator.txt b/validator/tests/goreflect/OptionalAddressMoverPerson/validator.txt new file mode 100644 index 0000000..551725e --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressMoverPerson/validator.txt @@ -0,0 +1 @@ +.Addresses[(_[Number:*,Street:*])?,_[Number:==456,Street:*]] \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressMoverPerson/validator.xml b/validator/tests/goreflect/OptionalAddressMoverPerson/validator.xml new file mode 100644 index 0000000..99d93ad --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressMoverPerson/validator.xml @@ -0,0 +1,184 @@ + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + ( + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + * + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ) + + + ? + + + + + , + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ] + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressRobertPerson/valid.goreflect b/validator/tests/goreflect/OptionalAddressRobertPerson/valid.goreflect new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressRobertPerson/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressRobertPerson/validator.json b/validator/tests/goreflect/OptionalAddressRobertPerson/validator.json new file mode 100644 index 0000000..fd3e097 --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressRobertPerson/validator.json @@ -0,0 +1,178 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressRobertPerson/validator.txt b/validator/tests/goreflect/OptionalAddressRobertPerson/validator.txt new file mode 100644 index 0000000..551725e --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressRobertPerson/validator.txt @@ -0,0 +1 @@ +.Addresses[(_[Number:*,Street:*])?,_[Number:==456,Street:*]] \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalAddressRobertPerson/validator.xml b/validator/tests/goreflect/OptionalAddressRobertPerson/validator.xml new file mode 100644 index 0000000..99d93ad --- /dev/null +++ b/validator/tests/goreflect/OptionalAddressRobertPerson/validator.xml @@ -0,0 +1,184 @@ + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + ( + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + * + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ) + + + ? + + + + + , + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ] + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameJohnPerson/invalid.goreflect b/validator/tests/goreflect/OptionalNameJohnPerson/invalid.goreflect new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/goreflect/OptionalNameJohnPerson/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameJohnPerson/validator.json b/validator/tests/goreflect/OptionalNameJohnPerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/goreflect/OptionalNameJohnPerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameJohnPerson/validator.txt b/validator/tests/goreflect/OptionalNameJohnPerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/goreflect/OptionalNameJohnPerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameJohnPerson/validator.xml b/validator/tests/goreflect/OptionalNameJohnPerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/goreflect/OptionalNameJohnPerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameNonamePerson/valid.goreflect b/validator/tests/goreflect/OptionalNameNonamePerson/valid.goreflect new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/goreflect/OptionalNameNonamePerson/valid.goreflect @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameNonamePerson/validator.json b/validator/tests/goreflect/OptionalNameNonamePerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/goreflect/OptionalNameNonamePerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameNonamePerson/validator.txt b/validator/tests/goreflect/OptionalNameNonamePerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/goreflect/OptionalNameNonamePerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameNonamePerson/validator.xml b/validator/tests/goreflect/OptionalNameNonamePerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/goreflect/OptionalNameNonamePerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameRoutinePerson/invalid.goreflect b/validator/tests/goreflect/OptionalNameRoutinePerson/invalid.goreflect new file mode 100644 index 0000000..12bbe58 --- /dev/null +++ b/validator/tests/goreflect/OptionalNameRoutinePerson/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Routine", + "Addresses": [ + { + "Number": 3, + "Street": "SomeStreet" + } + ], + "Telephone": "0124444444" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameRoutinePerson/validator.json b/validator/tests/goreflect/OptionalNameRoutinePerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/goreflect/OptionalNameRoutinePerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameRoutinePerson/validator.txt b/validator/tests/goreflect/OptionalNameRoutinePerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/goreflect/OptionalNameRoutinePerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameRoutinePerson/validator.xml b/validator/tests/goreflect/OptionalNameRoutinePerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/goreflect/OptionalNameRoutinePerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameShakerPerson/valid.goreflect b/validator/tests/goreflect/OptionalNameShakerPerson/valid.goreflect new file mode 100644 index 0000000..51416bd --- /dev/null +++ b/validator/tests/goreflect/OptionalNameShakerPerson/valid.goreflect @@ -0,0 +1,22 @@ +{ + "Name": "Shaker", + "Addresses": [ + { + "Number": 55, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameShakerPerson/validator.json b/validator/tests/goreflect/OptionalNameShakerPerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/goreflect/OptionalNameShakerPerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameShakerPerson/validator.txt b/validator/tests/goreflect/OptionalNameShakerPerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/goreflect/OptionalNameShakerPerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameShakerPerson/validator.xml b/validator/tests/goreflect/OptionalNameShakerPerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/goreflect/OptionalNameShakerPerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameSmithPerson/valid.goreflect b/validator/tests/goreflect/OptionalNameSmithPerson/valid.goreflect new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/goreflect/OptionalNameSmithPerson/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameSmithPerson/validator.json b/validator/tests/goreflect/OptionalNameSmithPerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/goreflect/OptionalNameSmithPerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameSmithPerson/validator.txt b/validator/tests/goreflect/OptionalNameSmithPerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/goreflect/OptionalNameSmithPerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/goreflect/OptionalNameSmithPerson/validator.xml b/validator/tests/goreflect/OptionalNameSmithPerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/goreflect/OptionalNameSmithPerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneDavid/valid.goreflect b/validator/tests/goreflect/OrNameTelephoneDavid/valid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneDavid/valid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneDavid/validator.json b/validator/tests/goreflect/OrNameTelephoneDavid/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneDavid/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneDavid/validator.txt b/validator/tests/goreflect/OrNameTelephoneDavid/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneDavid/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneDavid/validator.xml b/validator/tests/goreflect/OrNameTelephoneDavid/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneDavid/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneJohn/valid.goreflect b/validator/tests/goreflect/OrNameTelephoneJohn/valid.goreflect new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneJohn/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneJohn/validator.json b/validator/tests/goreflect/OrNameTelephoneJohn/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneJohn/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneJohn/validator.txt b/validator/tests/goreflect/OrNameTelephoneJohn/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneJohn/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneJohn/validator.xml b/validator/tests/goreflect/OrNameTelephoneJohn/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneJohn/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneMover/valid.goreflect b/validator/tests/goreflect/OrNameTelephoneMover/valid.goreflect new file mode 100644 index 0000000..2519fd1 --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneMover/valid.goreflect @@ -0,0 +1,30 @@ +{ + "Name": "Mover", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneMover/validator.json b/validator/tests/goreflect/OrNameTelephoneMover/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneMover/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneMover/validator.txt b/validator/tests/goreflect/OrNameTelephoneMover/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneMover/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneMover/validator.xml b/validator/tests/goreflect/OrNameTelephoneMover/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneMover/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneSmith/invalid.goreflect b/validator/tests/goreflect/OrNameTelephoneSmith/invalid.goreflect new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneSmith/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneSmith/validator.json b/validator/tests/goreflect/OrNameTelephoneSmith/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneSmith/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneSmith/validator.txt b/validator/tests/goreflect/OrNameTelephoneSmith/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneSmith/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/goreflect/OrNameTelephoneSmith/validator.xml b/validator/tests/goreflect/OrNameTelephoneSmith/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/goreflect/OrNameTelephoneSmith/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonDavid/invalid.goreflect b/validator/tests/goreflect/ProperNotNamePersonDavid/invalid.goreflect new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonDavid/invalid.goreflect @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonDavid/validator.json b/validator/tests/goreflect/ProperNotNamePersonDavid/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonDavid/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonDavid/validator.txt b/validator/tests/goreflect/ProperNotNamePersonDavid/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonDavid/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonDavid/validator.xml b/validator/tests/goreflect/ProperNotNamePersonDavid/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonDavid/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonNoname/valid.goreflect b/validator/tests/goreflect/ProperNotNamePersonNoname/valid.goreflect new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonNoname/valid.goreflect @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonNoname/validator.json b/validator/tests/goreflect/ProperNotNamePersonNoname/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonNoname/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonNoname/validator.txt b/validator/tests/goreflect/ProperNotNamePersonNoname/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonNoname/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonNoname/validator.xml b/validator/tests/goreflect/ProperNotNamePersonNoname/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonNoname/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonRobert/valid.goreflect b/validator/tests/goreflect/ProperNotNamePersonRobert/valid.goreflect new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonRobert/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonRobert/validator.json b/validator/tests/goreflect/ProperNotNamePersonRobert/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonRobert/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonRobert/validator.txt b/validator/tests/goreflect/ProperNotNamePersonRobert/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonRobert/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonRobert/validator.xml b/validator/tests/goreflect/ProperNotNamePersonRobert/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonRobert/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonSmith/valid.goreflect b/validator/tests/goreflect/ProperNotNamePersonSmith/valid.goreflect new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonSmith/valid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonSmith/validator.json b/validator/tests/goreflect/ProperNotNamePersonSmith/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonSmith/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonSmith/validator.txt b/validator/tests/goreflect/ProperNotNamePersonSmith/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonSmith/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/goreflect/ProperNotNamePersonSmith/validator.xml b/validator/tests/goreflect/ProperNotNamePersonSmith/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/goreflect/ProperNotNamePersonSmith/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/PuddingMilkShakeNotAny1/invalid.goreflect b/validator/tests/goreflect/PuddingMilkShakeNotAny1/invalid.goreflect new file mode 100644 index 0000000..704943c --- /dev/null +++ b/validator/tests/goreflect/PuddingMilkShakeNotAny1/invalid.goreflect @@ -0,0 +1,14 @@ +{ + "FinanceJudo": { + "SaladWorry": { + "SpyCarpenter": { + "BridgePepper": [ + "isHOrIGyoLbdXZ9a4t4abCuoFvDpXvxgscJQYRGZ6u" + ], + "FountainTarget": [ + "oqqST33HqlR5s30O61mPwPnXGrwM5AIRWwDQ1YDPZcr8iP56B7AFwemBq1MfsNojkOAPlkt58RuaNn7pTgV66TSpp" + ] + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.json b/validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.json new file mode 100644 index 0000000..46bca96 --- /dev/null +++ b/validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.json @@ -0,0 +1,621 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FinanceJudo" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SpyCarpenter" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.ddddddd~\"", + "StringValue": "mmm.ddddddd~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.ddddddd~\"", + "StringValue": "mmm.ddddddd~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.txt b/validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.txt new file mode 100644 index 0000000..79ffb2c --- /dev/null +++ b/validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.txt @@ -0,0 +1,11 @@ +.FinanceJudo:.SaladWorry:.SpyCarpenter:((((.BridgePepper:!(._ == "aaaaaaaa@mm~") +& +.FountainTarget:!(._ == "aaaaaaaa@mm~")) +& +.BridgePepper:!(._ == "bbbbbbb@~")) +& +.FountainTarget:!(._ == "bbbbbbb@~")) +& +(.BridgePepper:._ == "mmm.ddddddd~" +| +.FountainTarget:._ == "mmm.ddddddd~")) \ No newline at end of file diff --git a/validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.xml b/validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.xml new file mode 100644 index 0000000..bc4c01c --- /dev/null +++ b/validator/tests/goreflect/PuddingMilkShakeNotAny1/validator.xml @@ -0,0 +1,592 @@ + + + + + . + + + + + + FinanceJudo + + + + + : + + + + + . + + + + + + SaladWorry + + + + + : + + + + + . + + + + + + SpyCarpenter + + + + + : + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.ddddddd~" + mmm.ddddddd~ + + + + + + + + + + + + + + + + + + + + | + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.ddddddd~" + mmm.ddddddd~ + + + + + + + + + + + + + + + + + + ) + + + + + + ) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/PuddingMilkShakeNotAny2/invalid.goreflect b/validator/tests/goreflect/PuddingMilkShakeNotAny2/invalid.goreflect new file mode 100644 index 0000000..704943c --- /dev/null +++ b/validator/tests/goreflect/PuddingMilkShakeNotAny2/invalid.goreflect @@ -0,0 +1,14 @@ +{ + "FinanceJudo": { + "SaladWorry": { + "SpyCarpenter": { + "BridgePepper": [ + "isHOrIGyoLbdXZ9a4t4abCuoFvDpXvxgscJQYRGZ6u" + ], + "FountainTarget": [ + "oqqST33HqlR5s30O61mPwPnXGrwM5AIRWwDQ1YDPZcr8iP56B7AFwemBq1MfsNojkOAPlkt58RuaNn7pTgV66TSpp" + ] + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.json b/validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.json new file mode 100644 index 0000000..0f24c6f --- /dev/null +++ b/validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.json @@ -0,0 +1,621 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FinanceJudo" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SpyCarpenter" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~\"", + "StringValue": "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~\"", + "StringValue": "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.txt b/validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.txt new file mode 100644 index 0000000..23e9e80 --- /dev/null +++ b/validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.txt @@ -0,0 +1,11 @@ +.FinanceJudo:.SaladWorry:.SpyCarpenter:((((.BridgePepper:!(._ == "aaaaaaaa@mm~") +& +.FountainTarget:!(._ == "aaaaaaaa@mm~")) +& +.BridgePepper:!(._ == "bbbbbbb@~")) +& +.FountainTarget:!(._ == "bbbbbbb@~")) +& +(.BridgePepper:._ == "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" +| +.FountainTarget:._ == "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~")) \ No newline at end of file diff --git a/validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.xml b/validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.xml new file mode 100644 index 0000000..af1c45c --- /dev/null +++ b/validator/tests/goreflect/PuddingMilkShakeNotAny2/validator.xml @@ -0,0 +1,592 @@ + + + + + . + + + + + + FinanceJudo + + + + + : + + + + + . + + + + + + SaladWorry + + + + + : + + + + + . + + + + + + SpyCarpenter + + + + + : + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~ + + + + + + + + + + + + + + + + + + + + | + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~ + + + + + + + + + + + + + + + + + + ) + + + + + + ) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveElbowBightTurn/invalid.goreflect b/validator/tests/goreflect/RecursiveElbowBightTurn/invalid.goreflect new file mode 100644 index 0000000..81232a1 --- /dev/null +++ b/validator/tests/goreflect/RecursiveElbowBightTurn/invalid.goreflect @@ -0,0 +1,7 @@ +{ + "Bight": [ + { + "Turn": true + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveElbowBightTurn/validator.json b/validator/tests/goreflect/RecursiveElbowBightTurn/validator.json new file mode 100644 index 0000000..c510659 --- /dev/null +++ b/validator/tests/goreflect/RecursiveElbowBightTurn/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveElbowBightTurn/validator.txt b/validator/tests/goreflect/RecursiveElbowBightTurn/validator.txt new file mode 100644 index 0000000..6577fcc --- /dev/null +++ b/validator/tests/goreflect/RecursiveElbowBightTurn/validator.txt @@ -0,0 +1 @@ +(_:@main|Elbow:==true) \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveElbowBightTurn/validator.xml b/validator/tests/goreflect/RecursiveElbowBightTurn/validator.xml new file mode 100644 index 0000000..a9b0079 --- /dev/null +++ b/validator/tests/goreflect/RecursiveElbowBightTurn/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/valid.goreflect b/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/valid.goreflect new file mode 100644 index 0000000..65e7eb6 --- /dev/null +++ b/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/valid.goreflect @@ -0,0 +1,7 @@ +{ + "BitterEnd": { + "BitterEnd": { + "Elbow": true + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.json b/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.json new file mode 100644 index 0000000..c510659 --- /dev/null +++ b/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.txt b/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.txt new file mode 100644 index 0000000..6577fcc --- /dev/null +++ b/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.txt @@ -0,0 +1 @@ +(_:@main|Elbow:==true) \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.xml b/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.xml new file mode 100644 index 0000000..a9b0079 --- /dev/null +++ b/validator/tests/goreflect/RecursiveElbowKnotKnotElbow/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveIoUtil/valid.goreflect b/validator/tests/goreflect/RecursiveIoUtil/valid.goreflect new file mode 100644 index 0000000..4f6fc32 --- /dev/null +++ b/validator/tests/goreflect/RecursiveIoUtil/valid.goreflect @@ -0,0 +1,30 @@ +{ + "PackageName": "io/ioutil", + "Imports": [ + { + "PackageName": "io", + "Imports": [ + { + "PackageName": "errors" + }, + { + "PackageName": "sync" + } + ] + }, + { + "PackageName": "os", + "Imports": [ + { + "PackageName": "errors" + }, + { + "PackageName": "io" + }, + { + "PackageName": "runtime" + } + ] + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveIoUtil/validator.json b/validator/tests/goreflect/RecursiveIoUtil/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/goreflect/RecursiveIoUtil/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveIoUtil/validator.txt b/validator/tests/goreflect/RecursiveIoUtil/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/goreflect/RecursiveIoUtil/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveIoUtil/validator.xml b/validator/tests/goreflect/RecursiveIoUtil/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/goreflect/RecursiveIoUtil/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/RecursivePath/valid.goreflect b/validator/tests/goreflect/RecursivePath/valid.goreflect new file mode 100644 index 0000000..4fd8f8e --- /dev/null +++ b/validator/tests/goreflect/RecursivePath/valid.goreflect @@ -0,0 +1,28 @@ +{ + "PackageName": "path", + "Imports": [ + { + "PackageName": "errors" + }, + { + "PackageName": "strings", + "Imports": [ + { + "PackageName": "errors" + }, + { + "PackageName": "io" + }, + { + "PackageName": "uncode" + }, + { + "PackageName": "uncode/utf8" + } + ] + }, + { + "PackageName": "unicode/utf8" + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursivePath/validator.json b/validator/tests/goreflect/RecursivePath/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/goreflect/RecursivePath/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursivePath/validator.txt b/validator/tests/goreflect/RecursivePath/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/goreflect/RecursivePath/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/goreflect/RecursivePath/validator.xml b/validator/tests/goreflect/RecursivePath/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/goreflect/RecursivePath/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveRuntime/invalid.goreflect b/validator/tests/goreflect/RecursiveRuntime/invalid.goreflect new file mode 100644 index 0000000..02111e4 --- /dev/null +++ b/validator/tests/goreflect/RecursiveRuntime/invalid.goreflect @@ -0,0 +1,8 @@ +{ + "PackageName": "runtime", + "Imports": [ + { + "PackageName": "unsafe" + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveRuntime/validator.json b/validator/tests/goreflect/RecursiveRuntime/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/goreflect/RecursiveRuntime/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveRuntime/validator.txt b/validator/tests/goreflect/RecursiveRuntime/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/goreflect/RecursiveRuntime/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveRuntime/validator.xml b/validator/tests/goreflect/RecursiveRuntime/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/goreflect/RecursiveRuntime/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveSyscall/invalid.goreflect b/validator/tests/goreflect/RecursiveSyscall/invalid.goreflect new file mode 100644 index 0000000..ee161ad --- /dev/null +++ b/validator/tests/goreflect/RecursiveSyscall/invalid.goreflect @@ -0,0 +1,25 @@ +{ + "PackageName": "syscall", + "Imports": [ + { + "PackageName": "errors" + }, + { + "PackageName": "runtime" + }, + { + "PackageName": "sync", + "Imports": [ + { + "PackageName": "sync/atomic" + }, + { + "PackageName": "unsafe" + } + ] + }, + { + "PackageName": "unsafe" + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveSyscall/validator.json b/validator/tests/goreflect/RecursiveSyscall/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/goreflect/RecursiveSyscall/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveSyscall/validator.txt b/validator/tests/goreflect/RecursiveSyscall/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/goreflect/RecursiveSyscall/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveSyscall/validator.xml b/validator/tests/goreflect/RecursiveSyscall/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/goreflect/RecursiveSyscall/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveTurnBightTurn/valid.goreflect b/validator/tests/goreflect/RecursiveTurnBightTurn/valid.goreflect new file mode 100644 index 0000000..81232a1 --- /dev/null +++ b/validator/tests/goreflect/RecursiveTurnBightTurn/valid.goreflect @@ -0,0 +1,7 @@ +{ + "Bight": [ + { + "Turn": true + } + ] +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveTurnBightTurn/validator.json b/validator/tests/goreflect/RecursiveTurnBightTurn/validator.json new file mode 100644 index 0000000..924218a --- /dev/null +++ b/validator/tests/goreflect/RecursiveTurnBightTurn/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Turn" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveTurnBightTurn/validator.txt b/validator/tests/goreflect/RecursiveTurnBightTurn/validator.txt new file mode 100644 index 0000000..d77055d --- /dev/null +++ b/validator/tests/goreflect/RecursiveTurnBightTurn/validator.txt @@ -0,0 +1 @@ +(_:@main|Turn:==true) \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveTurnBightTurn/validator.xml b/validator/tests/goreflect/RecursiveTurnBightTurn/validator.xml new file mode 100644 index 0000000..7560d3e --- /dev/null +++ b/validator/tests/goreflect/RecursiveTurnBightTurn/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Turn + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/invalid.goreflect b/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/invalid.goreflect new file mode 100644 index 0000000..65e7eb6 --- /dev/null +++ b/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/invalid.goreflect @@ -0,0 +1,7 @@ +{ + "BitterEnd": { + "BitterEnd": { + "Elbow": true + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.json b/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.json new file mode 100644 index 0000000..924218a --- /dev/null +++ b/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Turn" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.txt b/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.txt new file mode 100644 index 0000000..d77055d --- /dev/null +++ b/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.txt @@ -0,0 +1 @@ +(_:@main|Turn:==true) \ No newline at end of file diff --git a/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.xml b/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.xml new file mode 100644 index 0000000..7560d3e --- /dev/null +++ b/validator/tests/goreflect/RecursiveTurnKnotKnotElbow/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Turn + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/TopTop1/valid.goreflect b/validator/tests/goreflect/TopTop1/valid.goreflect new file mode 100644 index 0000000..3a809ee --- /dev/null +++ b/validator/tests/goreflect/TopTop1/valid.goreflect @@ -0,0 +1,5 @@ +{ + "Top": { + "Top": 1 + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/TopTop1/validator.json b/validator/tests/goreflect/TopTop1/validator.json new file mode 100644 index 0000000..e08d86a --- /dev/null +++ b/validator/tests/goreflect/TopTop1/validator.json @@ -0,0 +1,45 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Top" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/TopTop1/validator.txt b/validator/tests/goreflect/TopTop1/validator.txt new file mode 100644 index 0000000..e80b1c3 --- /dev/null +++ b/validator/tests/goreflect/TopTop1/validator.txt @@ -0,0 +1 @@ +_:Top:==1 \ No newline at end of file diff --git a/validator/tests/goreflect/TopTop1/validator.xml b/validator/tests/goreflect/TopTop1/validator.xml new file mode 100644 index 0000000..cc55623 --- /dev/null +++ b/validator/tests/goreflect/TopTop1/validator.xml @@ -0,0 +1,47 @@ + + + + + + + _ + + + + + : + + + + + + Top + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/TurfTurf1/invalid.goreflect b/validator/tests/goreflect/TurfTurf1/invalid.goreflect new file mode 100644 index 0000000..1f89f7e --- /dev/null +++ b/validator/tests/goreflect/TurfTurf1/invalid.goreflect @@ -0,0 +1,5 @@ +{ + "Turf": { + "Turf": 1 + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/TurfTurf1/validator.json b/validator/tests/goreflect/TurfTurf1/validator.json new file mode 100644 index 0000000..e08d86a --- /dev/null +++ b/validator/tests/goreflect/TurfTurf1/validator.json @@ -0,0 +1,45 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Top" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/TurfTurf1/validator.txt b/validator/tests/goreflect/TurfTurf1/validator.txt new file mode 100644 index 0000000..e80b1c3 --- /dev/null +++ b/validator/tests/goreflect/TurfTurf1/validator.txt @@ -0,0 +1 @@ +_:Top:==1 \ No newline at end of file diff --git a/validator/tests/goreflect/TurfTurf1/validator.xml b/validator/tests/goreflect/TurfTurf1/validator.xml new file mode 100644 index 0000000..cc55623 --- /dev/null +++ b/validator/tests/goreflect/TurfTurf1/validator.xml @@ -0,0 +1,47 @@ + + + + + + + _ + + + + + : + + + + + + Top + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/goreflect/WrongTypeRobert/invalid.goreflect b/validator/tests/goreflect/WrongTypeRobert/invalid.goreflect new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/goreflect/WrongTypeRobert/invalid.goreflect @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/goreflect/WrongTypeRobert/validator.json b/validator/tests/goreflect/WrongTypeRobert/validator.json new file mode 100644 index 0000000..459bfd0 --- /dev/null +++ b/validator/tests/goreflect/WrongTypeRobert/validator.json @@ -0,0 +1,62 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "type", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 103 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/goreflect/WrongTypeRobert/validator.txt b/validator/tests/goreflect/WrongTypeRobert/validator.txt new file mode 100644 index 0000000..e18bb10 --- /dev/null +++ b/validator/tests/goreflect/WrongTypeRobert/validator.txt @@ -0,0 +1 @@ +[Name:->type($int),*] \ No newline at end of file diff --git a/validator/tests/goreflect/WrongTypeRobert/validator.xml b/validator/tests/goreflect/WrongTypeRobert/validator.xml new file mode 100644 index 0000000..3755a08 --- /dev/null +++ b/validator/tests/goreflect/WrongTypeRobert/validator.xml @@ -0,0 +1,62 @@ + + + + + [ + + + + + + Name + + + + + : + + + + + + -> + + + type + + ( + + + + + + + 103 + + + + + ) + + + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/APocketRoses/valid.json b/validator/tests/json/APocketRoses/valid.json new file mode 100644 index 0000000..45ec160 --- /dev/null +++ b/validator/tests/json/APocketRoses/valid.json @@ -0,0 +1,7 @@ +{ + "MenuPaperclip": [ + "a", + "b", + "c" + ] +} \ No newline at end of file diff --git a/validator/tests/json/APocketRoses/validator.json b/validator/tests/json/APocketRoses/validator.json new file mode 100644 index 0000000..3c6c513 --- /dev/null +++ b/validator/tests/json/APocketRoses/validator.json @@ -0,0 +1,60 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/APocketRoses/validator.txt b/validator/tests/json/APocketRoses/validator.txt new file mode 100644 index 0000000..35ec025 --- /dev/null +++ b/validator/tests/json/APocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[0:=="a",*] \ No newline at end of file diff --git a/validator/tests/json/APocketRoses/validator.xml b/validator/tests/json/APocketRoses/validator.xml new file mode 100644 index 0000000..f8538ba --- /dev/null +++ b/validator/tests/json/APocketRoses/validator.xml @@ -0,0 +1,63 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 0 + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/json/Ab21Any/valid.json b/validator/tests/json/Ab21Any/valid.json new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/json/Ab21Any/valid.json @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/json/Ab21Any/validator.json b/validator/tests/json/Ab21Any/validator.json new file mode 100644 index 0000000..26141ef --- /dev/null +++ b/validator/tests/json/Ab21Any/validator.json @@ -0,0 +1,9 @@ +{ + "TopPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Ab21Any/validator.txt b/validator/tests/json/Ab21Any/validator.txt new file mode 100644 index 0000000..f59ec20 --- /dev/null +++ b/validator/tests/json/Ab21Any/validator.txt @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/validator/tests/json/Ab21Any/validator.xml b/validator/tests/json/Ab21Any/validator.xml new file mode 100644 index 0000000..5a4bee6 --- /dev/null +++ b/validator/tests/json/Ab21Any/validator.xml @@ -0,0 +1,9 @@ + + + + + * + + + + \ No newline at end of file diff --git a/validator/tests/json/Ab21InAnyExceptSaladWorry/invalid.json b/validator/tests/json/Ab21InAnyExceptSaladWorry/invalid.json new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/json/Ab21InAnyExceptSaladWorry/invalid.json @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/json/Ab21InAnyExceptSaladWorry/validator.json b/validator/tests/json/Ab21InAnyExceptSaladWorry/validator.json new file mode 100644 index 0000000..c0b0161 --- /dev/null +++ b/validator/tests/json/Ab21InAnyExceptSaladWorry/validator.json @@ -0,0 +1,93 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyNameExcept": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Except": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Ab21InAnyExceptSaladWorry/validator.txt b/validator/tests/json/Ab21InAnyExceptSaladWorry/validator.txt new file mode 100644 index 0000000..7011915 --- /dev/null +++ b/validator/tests/json/Ab21InAnyExceptSaladWorry/validator.txt @@ -0,0 +1 @@ +[!(SaladWorry)[MagazineFrame:=="a",*],*] \ No newline at end of file diff --git a/validator/tests/json/Ab21InAnyExceptSaladWorry/validator.xml b/validator/tests/json/Ab21InAnyExceptSaladWorry/validator.xml new file mode 100644 index 0000000..2f05599 --- /dev/null +++ b/validator/tests/json/Ab21InAnyExceptSaladWorry/validator.xml @@ -0,0 +1,96 @@ + + + + + [ + + + + + + + ! + + + ( + + + + SaladWorry + + + + + ) + + + + + + + [ + + + + + + MagazineFrame + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/Ab21MagazineFrameA/valid.json b/validator/tests/json/Ab21MagazineFrameA/valid.json new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/json/Ab21MagazineFrameA/valid.json @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/json/Ab21MagazineFrameA/validator.json b/validator/tests/json/Ab21MagazineFrameA/validator.json new file mode 100644 index 0000000..ffecbd2 --- /dev/null +++ b/validator/tests/json/Ab21MagazineFrameA/validator.json @@ -0,0 +1,137 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "XrayPilot" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Ab21MagazineFrameA/validator.txt b/validator/tests/json/Ab21MagazineFrameA/validator.txt new file mode 100644 index 0000000..433a06e --- /dev/null +++ b/validator/tests/json/Ab21MagazineFrameA/validator.txt @@ -0,0 +1 @@ +[SaladWorry[MagazineFrame[_:=="a",*],XrayPilot:*,*],*] \ No newline at end of file diff --git a/validator/tests/json/Ab21MagazineFrameA/validator.xml b/validator/tests/json/Ab21MagazineFrameA/validator.xml new file mode 100644 index 0000000..e61132e --- /dev/null +++ b/validator/tests/json/Ab21MagazineFrameA/validator.xml @@ -0,0 +1,141 @@ + + + + + [ + + + + + + SaladWorry + + + + + + + [ + + + + + + MagazineFrame + + + + + + + [ + + + + + + + _ + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + + + + XrayPilot + + + + + : + + + + + * + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/Ab21MagazineFrameSingleA/invalid.json b/validator/tests/json/Ab21MagazineFrameSingleA/invalid.json new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/json/Ab21MagazineFrameSingleA/invalid.json @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/json/Ab21MagazineFrameSingleA/validator.json b/validator/tests/json/Ab21MagazineFrameSingleA/validator.json new file mode 100644 index 0000000..1dc80f8 --- /dev/null +++ b/validator/tests/json/Ab21MagazineFrameSingleA/validator.json @@ -0,0 +1,106 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "XrayPilot" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Ab21MagazineFrameSingleA/validator.txt b/validator/tests/json/Ab21MagazineFrameSingleA/validator.txt new file mode 100644 index 0000000..42505c9 --- /dev/null +++ b/validator/tests/json/Ab21MagazineFrameSingleA/validator.txt @@ -0,0 +1 @@ +[SaladWorry[MagazineFrame:=="a",XrayPilot:*,*],*] \ No newline at end of file diff --git a/validator/tests/json/Ab21MagazineFrameSingleA/validator.xml b/validator/tests/json/Ab21MagazineFrameSingleA/validator.xml new file mode 100644 index 0000000..9bca86a --- /dev/null +++ b/validator/tests/json/Ab21MagazineFrameSingleA/validator.xml @@ -0,0 +1,110 @@ + + + + + [ + + + + + + SaladWorry + + + + + + + [ + + + + + + MagazineFrame + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + + + + XrayPilot + + + + + : + + + + + * + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/Ab21None/invalid.json b/validator/tests/json/Ab21None/invalid.json new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/json/Ab21None/invalid.json @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/json/Ab21None/validator.json b/validator/tests/json/Ab21None/validator.json new file mode 100644 index 0000000..ce003a2 --- /dev/null +++ b/validator/tests/json/Ab21None/validator.json @@ -0,0 +1,22 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Ab21None/validator.txt b/validator/tests/json/Ab21None/validator.txt new file mode 100644 index 0000000..7fd4f6c --- /dev/null +++ b/validator/tests/json/Ab21None/validator.txt @@ -0,0 +1 @@ +!(*) \ No newline at end of file diff --git a/validator/tests/json/Ab21None/validator.xml b/validator/tests/json/Ab21None/validator.xml new file mode 100644 index 0000000..187533d --- /dev/null +++ b/validator/tests/json/Ab21None/validator.xml @@ -0,0 +1,22 @@ + + + + + ! + + + ( + + + + + * + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/Ab21NotAFieldName/valid.json b/validator/tests/json/Ab21NotAFieldName/valid.json new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/json/Ab21NotAFieldName/valid.json @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/json/Ab21NotAFieldName/validator.json b/validator/tests/json/Ab21NotAFieldName/validator.json new file mode 100644 index 0000000..257c80a --- /dev/null +++ b/validator/tests/json/Ab21NotAFieldName/validator.json @@ -0,0 +1,124 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyNameExcept": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Except": { + "Name": { + "StringValue": "NotAFieldName" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Ab21NotAFieldName/validator.txt b/validator/tests/json/Ab21NotAFieldName/validator.txt new file mode 100644 index 0000000..632e4a9 --- /dev/null +++ b/validator/tests/json/Ab21NotAFieldName/validator.txt @@ -0,0 +1 @@ +[!(NotAFieldName)[MagazineFrame[_:=="a",*],*],*] \ No newline at end of file diff --git a/validator/tests/json/Ab21NotAFieldName/validator.xml b/validator/tests/json/Ab21NotAFieldName/validator.xml new file mode 100644 index 0000000..ddfea72 --- /dev/null +++ b/validator/tests/json/Ab21NotAFieldName/validator.xml @@ -0,0 +1,127 @@ + + + + + [ + + + + + + + ! + + + ( + + + + NotAFieldName + + + + + ) + + + + + + + [ + + + + + + MagazineFrame + + + + + + + [ + + + + + + + _ + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/Ab21Spirit1/valid.json b/validator/tests/json/Ab21Spirit1/valid.json new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/json/Ab21Spirit1/valid.json @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/json/Ab21Spirit1/validator.json b/validator/tests/json/Ab21Spirit1/validator.json new file mode 100644 index 0000000..c66d5ea --- /dev/null +++ b/validator/tests/json/Ab21Spirit1/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "spirit" + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "spirit", + "Eq": { + "Value": "=" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "RumourSpirit" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/Ab21Spirit1/validator.txt b/validator/tests/json/Ab21Spirit1/validator.txt new file mode 100644 index 0000000..33a0c16 --- /dev/null +++ b/validator/tests/json/Ab21Spirit1/validator.txt @@ -0,0 +1,2 @@ +[*,@spirit,*] +#spirit=RumourSpirit:==1 \ No newline at end of file diff --git a/validator/tests/json/Ab21Spirit1/validator.xml b/validator/tests/json/Ab21Spirit1/validator.xml new file mode 100644 index 0000000..84cdbcc --- /dev/null +++ b/validator/tests/json/Ab21Spirit1/validator.xml @@ -0,0 +1,87 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + @ + + spirit + + + + , + + + + + * + + + + + + + ] + + + + + + + + + # + + spirit + + = + + + + + + RumourSpirit + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/Ab21Spirit2/invalid.json b/validator/tests/json/Ab21Spirit2/invalid.json new file mode 100644 index 0000000..d80d65a --- /dev/null +++ b/validator/tests/json/Ab21Spirit2/invalid.json @@ -0,0 +1,12 @@ +{ + "SaladWorry": { + "MagazineFrame": [ + "a", + "b" + ], + "XrayPilot": { + "AnkleCoat": 2 + } + }, + "RumourSpirit": 1 +} \ No newline at end of file diff --git a/validator/tests/json/Ab21Spirit2/validator.json b/validator/tests/json/Ab21Spirit2/validator.json new file mode 100644 index 0000000..7f87012 --- /dev/null +++ b/validator/tests/json/Ab21Spirit2/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "spirit" + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "spirit", + "Eq": { + "Value": "=" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "RumourSpirit" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/Ab21Spirit2/validator.txt b/validator/tests/json/Ab21Spirit2/validator.txt new file mode 100644 index 0000000..4ea85ac --- /dev/null +++ b/validator/tests/json/Ab21Spirit2/validator.txt @@ -0,0 +1,2 @@ +[*,@spirit,*] +#spirit=RumourSpirit:==2 \ No newline at end of file diff --git a/validator/tests/json/Ab21Spirit2/validator.xml b/validator/tests/json/Ab21Spirit2/validator.xml new file mode 100644 index 0000000..c5dd97b --- /dev/null +++ b/validator/tests/json/Ab21Spirit2/validator.xml @@ -0,0 +1,87 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + @ + + spirit + + + + , + + + + + * + + + + + + + ] + + + + + + + + + # + + spirit + + = + + + + + + RumourSpirit + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/AbcPocketRoses/valid.json b/validator/tests/json/AbcPocketRoses/valid.json new file mode 100644 index 0000000..45ec160 --- /dev/null +++ b/validator/tests/json/AbcPocketRoses/valid.json @@ -0,0 +1,7 @@ +{ + "MenuPaperclip": [ + "a", + "b", + "c" + ] +} \ No newline at end of file diff --git a/validator/tests/json/AbcPocketRoses/validator.json b/validator/tests/json/AbcPocketRoses/validator.json new file mode 100644 index 0000000..26822cb --- /dev/null +++ b/validator/tests/json/AbcPocketRoses/validator.json @@ -0,0 +1,118 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 1 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 2 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/AbcPocketRoses/validator.txt b/validator/tests/json/AbcPocketRoses/validator.txt new file mode 100644 index 0000000..67a8552 --- /dev/null +++ b/validator/tests/json/AbcPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[0:=="a",1:=="b",2:=="c"] \ No newline at end of file diff --git a/validator/tests/json/AbcPocketRoses/validator.xml b/validator/tests/json/AbcPocketRoses/validator.xml new file mode 100644 index 0000000..6c0b4d3 --- /dev/null +++ b/validator/tests/json/AbcPocketRoses/validator.xml @@ -0,0 +1,125 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 0 + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + + + + 1 + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + , + + + + + + 2 + + + + + : + + + + + + + == + + + + "c" + c + + + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/json/AndAnyName/valid.json b/validator/tests/json/AndAnyName/valid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/AndAnyName/valid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/AndAnyName/validator.json b/validator/tests/json/AndAnyName/validator.json new file mode 100644 index 0000000..740f182 --- /dev/null +++ b/validator/tests/json/AndAnyName/validator.json @@ -0,0 +1,91 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/AndAnyName/validator.txt b/validator/tests/json/AndAnyName/validator.txt new file mode 100644 index 0000000..4a47959 --- /dev/null +++ b/validator/tests/json/AndAnyName/validator.txt @@ -0,0 +1 @@ +(._:=="0123456789"&._:=="David") \ No newline at end of file diff --git a/validator/tests/json/AndAnyName/validator.xml b/validator/tests/json/AndAnyName/validator.xml new file mode 100644 index 0000000..8154dd6 --- /dev/null +++ b/validator/tests/json/AndAnyName/validator.xml @@ -0,0 +1,93 @@ + + + + + ( + + + + + . + + + + + + + _ + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + & + + + + + . + + + + + + + _ + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneDavid/valid.json b/validator/tests/json/AndNameTelephoneDavid/valid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/AndNameTelephoneDavid/valid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneDavid/validator.json b/validator/tests/json/AndNameTelephoneDavid/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/json/AndNameTelephoneDavid/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneDavid/validator.txt b/validator/tests/json/AndNameTelephoneDavid/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/json/AndNameTelephoneDavid/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneDavid/validator.xml b/validator/tests/json/AndNameTelephoneDavid/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/json/AndNameTelephoneDavid/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneJohn/invalid.json b/validator/tests/json/AndNameTelephoneJohn/invalid.json new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/json/AndNameTelephoneJohn/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneJohn/validator.json b/validator/tests/json/AndNameTelephoneJohn/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/json/AndNameTelephoneJohn/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneJohn/validator.txt b/validator/tests/json/AndNameTelephoneJohn/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/json/AndNameTelephoneJohn/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneJohn/validator.xml b/validator/tests/json/AndNameTelephoneJohn/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/json/AndNameTelephoneJohn/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneMover/invalid.json b/validator/tests/json/AndNameTelephoneMover/invalid.json new file mode 100644 index 0000000..2519fd1 --- /dev/null +++ b/validator/tests/json/AndNameTelephoneMover/invalid.json @@ -0,0 +1,30 @@ +{ + "Name": "Mover", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneMover/validator.json b/validator/tests/json/AndNameTelephoneMover/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/json/AndNameTelephoneMover/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneMover/validator.txt b/validator/tests/json/AndNameTelephoneMover/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/json/AndNameTelephoneMover/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneMover/validator.xml b/validator/tests/json/AndNameTelephoneMover/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/json/AndNameTelephoneMover/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneSmith/invalid.json b/validator/tests/json/AndNameTelephoneSmith/invalid.json new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/json/AndNameTelephoneSmith/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneSmith/validator.json b/validator/tests/json/AndNameTelephoneSmith/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/json/AndNameTelephoneSmith/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneSmith/validator.txt b/validator/tests/json/AndNameTelephoneSmith/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/json/AndNameTelephoneSmith/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/json/AndNameTelephoneSmith/validator.xml b/validator/tests/json/AndNameTelephoneSmith/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/json/AndNameTelephoneSmith/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/BightTurn/invalid.json b/validator/tests/json/BightTurn/invalid.json new file mode 100644 index 0000000..81232a1 --- /dev/null +++ b/validator/tests/json/BightTurn/invalid.json @@ -0,0 +1,7 @@ +{ + "Bight": [ + { + "Turn": true + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/BightTurn/validator.json b/validator/tests/json/BightTurn/validator.json new file mode 100644 index 0000000..c0099b7 --- /dev/null +++ b/validator/tests/json/BightTurn/validator.json @@ -0,0 +1,59 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/BightTurn/validator.txt b/validator/tests/json/BightTurn/validator.txt new file mode 100644 index 0000000..d86366c --- /dev/null +++ b/validator/tests/json/BightTurn/validator.txt @@ -0,0 +1 @@ +_:_:Elbow:==true \ No newline at end of file diff --git a/validator/tests/json/BightTurn/validator.xml b/validator/tests/json/BightTurn/validator.xml new file mode 100644 index 0000000..2190dd3 --- /dev/null +++ b/validator/tests/json/BightTurn/validator.xml @@ -0,0 +1,61 @@ + + + + + + + _ + + + + + : + + + + + + + _ + + + + + : + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/ContextDavid/invalid.json b/validator/tests/json/ContextDavid/invalid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/ContextDavid/invalid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/ContextDavid/validator.json b/validator/tests/json/ContextDavid/validator.json new file mode 100644 index 0000000..b4beea9 --- /dev/null +++ b/validator/tests/json/ContextDavid/validator.json @@ -0,0 +1,103 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"TheStreet\"", + "StringValue": "TheStreet" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/ContextDavid/validator.txt b/validator/tests/json/ContextDavid/validator.txt new file mode 100644 index 0000000..a26833d --- /dev/null +++ b/validator/tests/json/ContextDavid/validator.txt @@ -0,0 +1 @@ +.Addresses:_[Number:==456,Street:=="TheStreet"] \ No newline at end of file diff --git a/validator/tests/json/ContextDavid/validator.xml b/validator/tests/json/ContextDavid/validator.xml new file mode 100644 index 0000000..607dff1 --- /dev/null +++ b/validator/tests/json/ContextDavid/validator.xml @@ -0,0 +1,108 @@ + + + + + . + + + + + + Addresses + + + + + : + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + + + == + + + + "TheStreet" + TheStreet + + + + + + + + + + + ] + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/ContextRobert/valid.json b/validator/tests/json/ContextRobert/valid.json new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/json/ContextRobert/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/ContextRobert/validator.json b/validator/tests/json/ContextRobert/validator.json new file mode 100644 index 0000000..b4beea9 --- /dev/null +++ b/validator/tests/json/ContextRobert/validator.json @@ -0,0 +1,103 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"TheStreet\"", + "StringValue": "TheStreet" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/ContextRobert/validator.txt b/validator/tests/json/ContextRobert/validator.txt new file mode 100644 index 0000000..a26833d --- /dev/null +++ b/validator/tests/json/ContextRobert/validator.txt @@ -0,0 +1 @@ +.Addresses:_[Number:==456,Street:=="TheStreet"] \ No newline at end of file diff --git a/validator/tests/json/ContextRobert/validator.xml b/validator/tests/json/ContextRobert/validator.xml new file mode 100644 index 0000000..607dff1 --- /dev/null +++ b/validator/tests/json/ContextRobert/validator.xml @@ -0,0 +1,108 @@ + + + + + . + + + + + + Addresses + + + + + : + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + + + == + + + + "TheStreet" + TheStreet + + + + + + + + + + + ] + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/CorrectTypeRobert/valid.json b/validator/tests/json/CorrectTypeRobert/valid.json new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/json/CorrectTypeRobert/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/CorrectTypeRobert/validator.json b/validator/tests/json/CorrectTypeRobert/validator.json new file mode 100644 index 0000000..746ca4c --- /dev/null +++ b/validator/tests/json/CorrectTypeRobert/validator.json @@ -0,0 +1,62 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "type", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/CorrectTypeRobert/validator.txt b/validator/tests/json/CorrectTypeRobert/validator.txt new file mode 100644 index 0000000..b4cabd9 --- /dev/null +++ b/validator/tests/json/CorrectTypeRobert/validator.txt @@ -0,0 +1 @@ +[Name:->type($string),*] \ No newline at end of file diff --git a/validator/tests/json/CorrectTypeRobert/validator.xml b/validator/tests/json/CorrectTypeRobert/validator.xml new file mode 100644 index 0000000..e208c1a --- /dev/null +++ b/validator/tests/json/CorrectTypeRobert/validator.xml @@ -0,0 +1,62 @@ + + + + + [ + + + + + + Name + + + + + : + + + + + + -> + + + type + + ( + + + + + + + 109 + + + + + ) + + + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/DPocketRoses/invalid.json b/validator/tests/json/DPocketRoses/invalid.json new file mode 100644 index 0000000..45ec160 --- /dev/null +++ b/validator/tests/json/DPocketRoses/invalid.json @@ -0,0 +1,7 @@ +{ + "MenuPaperclip": [ + "a", + "b", + "c" + ] +} \ No newline at end of file diff --git a/validator/tests/json/DPocketRoses/validator.json b/validator/tests/json/DPocketRoses/validator.json new file mode 100644 index 0000000..4264d8b --- /dev/null +++ b/validator/tests/json/DPocketRoses/validator.json @@ -0,0 +1,60 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"d\"", + "StringValue": "d" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/DPocketRoses/validator.txt b/validator/tests/json/DPocketRoses/validator.txt new file mode 100644 index 0000000..b01201b --- /dev/null +++ b/validator/tests/json/DPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[0:=="d",*] \ No newline at end of file diff --git a/validator/tests/json/DPocketRoses/validator.xml b/validator/tests/json/DPocketRoses/validator.xml new file mode 100644 index 0000000..5d2acfe --- /dev/null +++ b/validator/tests/json/DPocketRoses/validator.xml @@ -0,0 +1,63 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 0 + + + + + : + + + + + + + == + + + + "d" + d + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/json/DeepLeft811/valid.json b/validator/tests/json/DeepLeft811/valid.json new file mode 100644 index 0000000..8c7624d --- /dev/null +++ b/validator/tests/json/DeepLeft811/valid.json @@ -0,0 +1,32 @@ +{ + "A": { + "Left": { + "A": { + "Left": { + "A": { + "Left": { + "A": { + "Value": "#" + } + }, + "Right": { + "A": { + "Value": "#" + } + } + } + }, + "Right": { + "A": { + "Value": "#" + } + } + } + }, + "Right": { + "A": { + "Value": "#" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/DeepLeft811/validator.json b/validator/tests/json/DeepLeft811/validator.json new file mode 100644 index 0000000..5a1076d --- /dev/null +++ b/validator/tests/json/DeepLeft811/validator.json @@ -0,0 +1,314 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "q1", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "q2", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Value" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"#\"", + "StringValue": "#" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/DeepLeft811/validator.txt b/validator/tests/json/DeepLeft811/validator.txt new file mode 100644 index 0000000..ce43695 --- /dev/null +++ b/validator/tests/json/DeepLeft811/validator.txt @@ -0,0 +1,3 @@ +(@q1|@q2) +#q1=(A[Left:@q1,Right:@q2]|A[Left:@q1,Right:@q1]) +#q2=(A[Left:@q2,Right:@q2]|A:Value:=="#") \ No newline at end of file diff --git a/validator/tests/json/DeepLeft811/validator.xml b/validator/tests/json/DeepLeft811/validator.xml new file mode 100644 index 0000000..c10e930 --- /dev/null +++ b/validator/tests/json/DeepLeft811/validator.xml @@ -0,0 +1,320 @@ + + + + + ( + + + + + @ + + q1 + + + + | + + + + + @ + + q2 + + + + ) + + + + + + + + + # + + q1 + + = + + + + + ( + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q1 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q2 + + + + + + ] + + + + + + + | + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q1 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q1 + + + + + + ] + + + + + + + ) + + + + + + + + + + # + + q2 + + = + + + + + ( + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q2 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q2 + + + + + + ] + + + + + + + | + + + + + + A + + + + + : + + + + + + Value + + + + + : + + + + + + + == + + + + "#" + # + + + + + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/DontErrorGivenWrongType/invalid.json b/validator/tests/json/DontErrorGivenWrongType/invalid.json new file mode 100644 index 0000000..4b4af3e --- /dev/null +++ b/validator/tests/json/DontErrorGivenWrongType/invalid.json @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": -1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/DontErrorGivenWrongType/validator.json b/validator/tests/json/DontErrorGivenWrongType/validator.json new file mode 100644 index 0000000..b4faf57 --- /dev/null +++ b/validator/tests/json/DontErrorGivenWrongType/validator.json @@ -0,0 +1,94 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "uint(0)", + "UintValue": 0 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/DontErrorGivenWrongType/validator.txt b/validator/tests/json/DontErrorGivenWrongType/validator.txt new file mode 100644 index 0000000..5bafb7f --- /dev/null +++ b/validator/tests/json/DontErrorGivenWrongType/validator.txt @@ -0,0 +1 @@ +[Addresses:_[Number:>=uint(0),*],*] \ No newline at end of file diff --git a/validator/tests/json/DontErrorGivenWrongType/validator.xml b/validator/tests/json/DontErrorGivenWrongType/validator.xml new file mode 100644 index 0000000..fc595d4 --- /dev/null +++ b/validator/tests/json/DontErrorGivenWrongType/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + + Addresses + + + + + : + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + >= + + + + uint(0) + 0 + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilJohn/invalid.json b/validator/tests/json/EmptyOrNilJohn/invalid.json new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/json/EmptyOrNilJohn/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilJohn/validator.json b/validator/tests/json/EmptyOrNilJohn/validator.json new file mode 100644 index 0000000..d68c824 --- /dev/null +++ b/validator/tests/json/EmptyOrNilJohn/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "empty" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "empty", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilJohn/validator.txt b/validator/tests/json/EmptyOrNilJohn/validator.txt new file mode 100644 index 0000000..ad903a6 --- /dev/null +++ b/validator/tests/json/EmptyOrNilJohn/validator.txt @@ -0,0 +1,3 @@ +(@empty|@nil) +#empty=[*,Name:->eq(length($string),0),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilJohn/validator.xml b/validator/tests/json/EmptyOrNilJohn/validator.xml new file mode 100644 index 0000000..4c72a76 --- /dev/null +++ b/validator/tests/json/EmptyOrNilJohn/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + empty + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + empty + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilNoname/valid.json b/validator/tests/json/EmptyOrNilNoname/valid.json new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/json/EmptyOrNilNoname/valid.json @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilNoname/validator.json b/validator/tests/json/EmptyOrNilNoname/validator.json new file mode 100644 index 0000000..d68c824 --- /dev/null +++ b/validator/tests/json/EmptyOrNilNoname/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "empty" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "empty", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilNoname/validator.txt b/validator/tests/json/EmptyOrNilNoname/validator.txt new file mode 100644 index 0000000..ad903a6 --- /dev/null +++ b/validator/tests/json/EmptyOrNilNoname/validator.txt @@ -0,0 +1,3 @@ +(@empty|@nil) +#empty=[*,Name:->eq(length($string),0),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilNoname/validator.xml b/validator/tests/json/EmptyOrNilNoname/validator.xml new file mode 100644 index 0000000..4c72a76 --- /dev/null +++ b/validator/tests/json/EmptyOrNilNoname/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + empty + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + empty + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilSmith/valid.json b/validator/tests/json/EmptyOrNilSmith/valid.json new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/json/EmptyOrNilSmith/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilSmith/validator.json b/validator/tests/json/EmptyOrNilSmith/validator.json new file mode 100644 index 0000000..d68c824 --- /dev/null +++ b/validator/tests/json/EmptyOrNilSmith/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "empty" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "empty", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilSmith/validator.txt b/validator/tests/json/EmptyOrNilSmith/validator.txt new file mode 100644 index 0000000..ad903a6 --- /dev/null +++ b/validator/tests/json/EmptyOrNilSmith/validator.txt @@ -0,0 +1,3 @@ +(@empty|@nil) +#empty=[*,Name:->eq(length($string),0),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/json/EmptyOrNilSmith/validator.xml b/validator/tests/json/EmptyOrNilSmith/validator.xml new file mode 100644 index 0000000..4c72a76 --- /dev/null +++ b/validator/tests/json/EmptyOrNilSmith/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + empty + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + empty + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/FinalCPocketRoses/valid.json b/validator/tests/json/FinalCPocketRoses/valid.json new file mode 100644 index 0000000..45ec160 --- /dev/null +++ b/validator/tests/json/FinalCPocketRoses/valid.json @@ -0,0 +1,7 @@ +{ + "MenuPaperclip": [ + "a", + "b", + "c" + ] +} \ No newline at end of file diff --git a/validator/tests/json/FinalCPocketRoses/validator.json b/validator/tests/json/FinalCPocketRoses/validator.json new file mode 100644 index 0000000..105c55a --- /dev/null +++ b/validator/tests/json/FinalCPocketRoses/validator.json @@ -0,0 +1,60 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 2 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/FinalCPocketRoses/validator.txt b/validator/tests/json/FinalCPocketRoses/validator.txt new file mode 100644 index 0000000..36df8ad --- /dev/null +++ b/validator/tests/json/FinalCPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[*,2:=="c"] \ No newline at end of file diff --git a/validator/tests/json/FinalCPocketRoses/validator.xml b/validator/tests/json/FinalCPocketRoses/validator.xml new file mode 100644 index 0000000..87cfb48 --- /dev/null +++ b/validator/tests/json/FinalCPocketRoses/validator.xml @@ -0,0 +1,63 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + * + + + + + , + + + + + + 2 + + + + + : + + + + + + + == + + + + "c" + c + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/json/GoBigOr10/valid.json b/validator/tests/json/GoBigOr10/valid.json new file mode 100644 index 0000000..21a95bb --- /dev/null +++ b/validator/tests/json/GoBigOr10/valid.json @@ -0,0 +1 @@ +{"A": 10} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr10/validator.json b/validator/tests/json/GoBigOr10/validator.json new file mode 100644 index 0000000..e0cd03d --- /dev/null +++ b/validator/tests/json/GoBigOr10/validator.json @@ -0,0 +1,3011 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "3", + "IntValue": 3 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "4", + "IntValue": 4 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "5", + "IntValue": 5 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "6", + "IntValue": 6 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "7", + "IntValue": 7 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "8", + "IntValue": 8 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "9", + "IntValue": 9 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "10", + "IntValue": 10 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "11", + "IntValue": 11 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "12", + "IntValue": 12 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "13", + "IntValue": 13 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "14", + "IntValue": 14 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "15", + "IntValue": 15 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "16", + "IntValue": 16 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "17", + "IntValue": 17 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "18", + "IntValue": 18 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "19", + "IntValue": 19 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "20", + "IntValue": 20 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "21", + "IntValue": 21 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "22", + "IntValue": 22 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "23", + "IntValue": 23 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "24", + "IntValue": 24 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "25", + "IntValue": 25 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "26", + "IntValue": 26 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "27", + "IntValue": 27 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "28", + "IntValue": 28 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "29", + "IntValue": 29 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "30", + "IntValue": 30 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "31", + "IntValue": 31 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "32", + "IntValue": 32 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "33", + "IntValue": 33 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "34", + "IntValue": 34 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "35", + "IntValue": 35 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "36", + "IntValue": 36 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "37", + "IntValue": 37 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "38", + "IntValue": 38 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "39", + "IntValue": 39 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "40", + "IntValue": 40 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "41", + "IntValue": 41 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "42", + "IntValue": 42 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "43", + "IntValue": 43 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "44", + "IntValue": 44 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "45", + "IntValue": 45 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "46", + "IntValue": 46 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "47", + "IntValue": 47 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "48", + "IntValue": 48 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "49", + "IntValue": 49 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "50", + "IntValue": 50 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "51", + "IntValue": 51 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "52", + "IntValue": 52 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "53", + "IntValue": 53 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "54", + "IntValue": 54 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "55", + "IntValue": 55 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "56", + "IntValue": 56 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "57", + "IntValue": 57 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "58", + "IntValue": 58 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "59", + "IntValue": 59 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "60", + "IntValue": 60 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "61", + "IntValue": 61 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "62", + "IntValue": 62 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "63", + "IntValue": 63 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "64", + "IntValue": 64 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "65", + "IntValue": 65 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "66", + "IntValue": 66 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "67", + "IntValue": 67 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "68", + "IntValue": 68 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "69", + "IntValue": 69 + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr10/validator.txt b/validator/tests/json/GoBigOr10/validator.txt new file mode 100644 index 0000000..5147e56 --- /dev/null +++ b/validator/tests/json/GoBigOr10/validator.txt @@ -0,0 +1 @@ +(.A:==0|.A:==1|.A:==2|.A:==3|.A:==4|.A:==5|.A:==6|.A:==7|.A:==8|.A:==9|.A:==10|.A:==11|.A:==12|.A:==13|.A:==14|.A:==15|.A:==16|.A:==17|.A:==18|.A:==19|.A:==20|.A:==21|.A:==22|.A:==23|.A:==24|.A:==25|.A:==26|.A:==27|.A:==28|.A:==29|.A:==30|.A:==31|.A:==32|.A:==33|.A:==34|.A:==35|.A:==36|.A:==37|.A:==38|.A:==39|.A:==40|.A:==41|.A:==42|.A:==43|.A:==44|.A:==45|.A:==46|.A:==47|.A:==48|.A:==49|.A:==50|.A:==51|.A:==52|.A:==53|.A:==54|.A:==55|.A:==56|.A:==57|.A:==58|.A:==59|.A:==60|.A:==61|.A:==62|.A:==63|.A:==64|.A:==65|.A:==66|.A:==67|.A:==68|.A:==69) \ No newline at end of file diff --git a/validator/tests/json/GoBigOr10/validator.xml b/validator/tests/json/GoBigOr10/validator.xml new file mode 100644 index 0000000..8d7b0e3 --- /dev/null +++ b/validator/tests/json/GoBigOr10/validator.xml @@ -0,0 +1,3151 @@ + + + + + ( + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 0 + 0 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 3 + 3 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 4 + 4 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 5 + 5 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 6 + 6 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 7 + 7 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 8 + 8 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 9 + 9 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 10 + 10 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 11 + 11 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 12 + 12 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 13 + 13 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 14 + 14 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 15 + 15 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 16 + 16 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 17 + 17 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 18 + 18 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 19 + 19 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 20 + 20 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 21 + 21 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 22 + 22 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 23 + 23 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 24 + 24 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 25 + 25 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 26 + 26 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 27 + 27 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 28 + 28 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 29 + 29 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 30 + 30 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 31 + 31 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 32 + 32 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 33 + 33 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 34 + 34 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 35 + 35 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 36 + 36 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 37 + 37 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 38 + 38 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 39 + 39 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 40 + 40 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 41 + 41 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 42 + 42 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 43 + 43 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 44 + 44 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 45 + 45 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 46 + 46 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 47 + 47 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 48 + 48 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 49 + 49 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 50 + 50 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 51 + 51 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 52 + 52 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 53 + 53 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 54 + 54 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 55 + 55 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 56 + 56 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 57 + 57 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 58 + 58 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 59 + 59 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 60 + 60 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 61 + 61 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 62 + 62 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 63 + 63 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 64 + 64 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 65 + 65 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 66 + 66 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 67 + 67 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 68 + 68 + + + + + + + + + + + + + | + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 69 + 69 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/GoBigOr5/valid.json b/validator/tests/json/GoBigOr5/valid.json new file mode 100644 index 0000000..45fbead --- /dev/null +++ b/validator/tests/json/GoBigOr5/valid.json @@ -0,0 +1 @@ +{"A": 5} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr5/validator.json b/validator/tests/json/GoBigOr5/validator.json new file mode 100644 index 0000000..e0cd03d --- /dev/null +++ b/validator/tests/json/GoBigOr5/validator.json @@ -0,0 +1,3011 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "3", + "IntValue": 3 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "4", + "IntValue": 4 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "5", + "IntValue": 5 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "6", + "IntValue": 6 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "7", + "IntValue": 7 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "8", + "IntValue": 8 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "9", + "IntValue": 9 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "10", + "IntValue": 10 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "11", + "IntValue": 11 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "12", + "IntValue": 12 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "13", + "IntValue": 13 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "14", + "IntValue": 14 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "15", + "IntValue": 15 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "16", + "IntValue": 16 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "17", + "IntValue": 17 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "18", + "IntValue": 18 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "19", + "IntValue": 19 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "20", + "IntValue": 20 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "21", + "IntValue": 21 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "22", + "IntValue": 22 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "23", + "IntValue": 23 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "24", + "IntValue": 24 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "25", + "IntValue": 25 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "26", + "IntValue": 26 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "27", + "IntValue": 27 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "28", + "IntValue": 28 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "29", + "IntValue": 29 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "30", + "IntValue": 30 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "31", + "IntValue": 31 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "32", + "IntValue": 32 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "33", + "IntValue": 33 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "34", + "IntValue": 34 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "35", + "IntValue": 35 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "36", + "IntValue": 36 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "37", + "IntValue": 37 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "38", + "IntValue": 38 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "39", + "IntValue": 39 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "40", + "IntValue": 40 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "41", + "IntValue": 41 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "42", + "IntValue": 42 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "43", + "IntValue": 43 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "44", + "IntValue": 44 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "45", + "IntValue": 45 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "46", + "IntValue": 46 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "47", + "IntValue": 47 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "48", + "IntValue": 48 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "49", + "IntValue": 49 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "50", + "IntValue": 50 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "51", + "IntValue": 51 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "52", + "IntValue": 52 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "53", + "IntValue": 53 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "54", + "IntValue": 54 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "55", + "IntValue": 55 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "56", + "IntValue": 56 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "57", + "IntValue": 57 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "58", + "IntValue": 58 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "59", + "IntValue": 59 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "60", + "IntValue": 60 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "61", + "IntValue": 61 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "62", + "IntValue": 62 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "63", + "IntValue": 63 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "64", + "IntValue": 64 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "65", + "IntValue": 65 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "66", + "IntValue": 66 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "67", + "IntValue": 67 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "68", + "IntValue": 68 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "69", + "IntValue": 69 + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr5/validator.txt b/validator/tests/json/GoBigOr5/validator.txt new file mode 100644 index 0000000..5147e56 --- /dev/null +++ b/validator/tests/json/GoBigOr5/validator.txt @@ -0,0 +1 @@ +(.A:==0|.A:==1|.A:==2|.A:==3|.A:==4|.A:==5|.A:==6|.A:==7|.A:==8|.A:==9|.A:==10|.A:==11|.A:==12|.A:==13|.A:==14|.A:==15|.A:==16|.A:==17|.A:==18|.A:==19|.A:==20|.A:==21|.A:==22|.A:==23|.A:==24|.A:==25|.A:==26|.A:==27|.A:==28|.A:==29|.A:==30|.A:==31|.A:==32|.A:==33|.A:==34|.A:==35|.A:==36|.A:==37|.A:==38|.A:==39|.A:==40|.A:==41|.A:==42|.A:==43|.A:==44|.A:==45|.A:==46|.A:==47|.A:==48|.A:==49|.A:==50|.A:==51|.A:==52|.A:==53|.A:==54|.A:==55|.A:==56|.A:==57|.A:==58|.A:==59|.A:==60|.A:==61|.A:==62|.A:==63|.A:==64|.A:==65|.A:==66|.A:==67|.A:==68|.A:==69) \ No newline at end of file diff --git a/validator/tests/json/GoBigOr5/validator.xml b/validator/tests/json/GoBigOr5/validator.xml new file mode 100644 index 0000000..8d7b0e3 --- /dev/null +++ b/validator/tests/json/GoBigOr5/validator.xml @@ -0,0 +1,3151 @@ + + + + + ( + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 0 + 0 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 3 + 3 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 4 + 4 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 5 + 5 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 6 + 6 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 7 + 7 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 8 + 8 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 9 + 9 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 10 + 10 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 11 + 11 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 12 + 12 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 13 + 13 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 14 + 14 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 15 + 15 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 16 + 16 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 17 + 17 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 18 + 18 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 19 + 19 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 20 + 20 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 21 + 21 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 22 + 22 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 23 + 23 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 24 + 24 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 25 + 25 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 26 + 26 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 27 + 27 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 28 + 28 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 29 + 29 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 30 + 30 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 31 + 31 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 32 + 32 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 33 + 33 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 34 + 34 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 35 + 35 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 36 + 36 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 37 + 37 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 38 + 38 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 39 + 39 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 40 + 40 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 41 + 41 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 42 + 42 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 43 + 43 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 44 + 44 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 45 + 45 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 46 + 46 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 47 + 47 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 48 + 48 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 49 + 49 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 50 + 50 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 51 + 51 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 52 + 52 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 53 + 53 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 54 + 54 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 55 + 55 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 56 + 56 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 57 + 57 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 58 + 58 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 59 + 59 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 60 + 60 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 61 + 61 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 62 + 62 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 63 + 63 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 64 + 64 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 65 + 65 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 66 + 66 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 67 + 67 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 68 + 68 + + + + + + + + + + + + + | + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 69 + 69 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/GoBigOr6/valid.json b/validator/tests/json/GoBigOr6/valid.json new file mode 100644 index 0000000..1e7778d --- /dev/null +++ b/validator/tests/json/GoBigOr6/valid.json @@ -0,0 +1 @@ +{"A": 6} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr6/validator.json b/validator/tests/json/GoBigOr6/validator.json new file mode 100644 index 0000000..e0cd03d --- /dev/null +++ b/validator/tests/json/GoBigOr6/validator.json @@ -0,0 +1,3011 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "3", + "IntValue": 3 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "4", + "IntValue": 4 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "5", + "IntValue": 5 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "6", + "IntValue": 6 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "7", + "IntValue": 7 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "8", + "IntValue": 8 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "9", + "IntValue": 9 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "10", + "IntValue": 10 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "11", + "IntValue": 11 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "12", + "IntValue": 12 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "13", + "IntValue": 13 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "14", + "IntValue": 14 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "15", + "IntValue": 15 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "16", + "IntValue": 16 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "17", + "IntValue": 17 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "18", + "IntValue": 18 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "19", + "IntValue": 19 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "20", + "IntValue": 20 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "21", + "IntValue": 21 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "22", + "IntValue": 22 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "23", + "IntValue": 23 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "24", + "IntValue": 24 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "25", + "IntValue": 25 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "26", + "IntValue": 26 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "27", + "IntValue": 27 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "28", + "IntValue": 28 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "29", + "IntValue": 29 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "30", + "IntValue": 30 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "31", + "IntValue": 31 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "32", + "IntValue": 32 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "33", + "IntValue": 33 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "34", + "IntValue": 34 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "35", + "IntValue": 35 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "36", + "IntValue": 36 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "37", + "IntValue": 37 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "38", + "IntValue": 38 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "39", + "IntValue": 39 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "40", + "IntValue": 40 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "41", + "IntValue": 41 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "42", + "IntValue": 42 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "43", + "IntValue": 43 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "44", + "IntValue": 44 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "45", + "IntValue": 45 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "46", + "IntValue": 46 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "47", + "IntValue": 47 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "48", + "IntValue": 48 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "49", + "IntValue": 49 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "50", + "IntValue": 50 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "51", + "IntValue": 51 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "52", + "IntValue": 52 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "53", + "IntValue": 53 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "54", + "IntValue": 54 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "55", + "IntValue": 55 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "56", + "IntValue": 56 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "57", + "IntValue": 57 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "58", + "IntValue": 58 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "59", + "IntValue": 59 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "60", + "IntValue": 60 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "61", + "IntValue": 61 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "62", + "IntValue": 62 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "63", + "IntValue": 63 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "64", + "IntValue": 64 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "65", + "IntValue": 65 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "66", + "IntValue": 66 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "67", + "IntValue": 67 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "68", + "IntValue": 68 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "69", + "IntValue": 69 + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr6/validator.txt b/validator/tests/json/GoBigOr6/validator.txt new file mode 100644 index 0000000..5147e56 --- /dev/null +++ b/validator/tests/json/GoBigOr6/validator.txt @@ -0,0 +1 @@ +(.A:==0|.A:==1|.A:==2|.A:==3|.A:==4|.A:==5|.A:==6|.A:==7|.A:==8|.A:==9|.A:==10|.A:==11|.A:==12|.A:==13|.A:==14|.A:==15|.A:==16|.A:==17|.A:==18|.A:==19|.A:==20|.A:==21|.A:==22|.A:==23|.A:==24|.A:==25|.A:==26|.A:==27|.A:==28|.A:==29|.A:==30|.A:==31|.A:==32|.A:==33|.A:==34|.A:==35|.A:==36|.A:==37|.A:==38|.A:==39|.A:==40|.A:==41|.A:==42|.A:==43|.A:==44|.A:==45|.A:==46|.A:==47|.A:==48|.A:==49|.A:==50|.A:==51|.A:==52|.A:==53|.A:==54|.A:==55|.A:==56|.A:==57|.A:==58|.A:==59|.A:==60|.A:==61|.A:==62|.A:==63|.A:==64|.A:==65|.A:==66|.A:==67|.A:==68|.A:==69) \ No newline at end of file diff --git a/validator/tests/json/GoBigOr6/validator.xml b/validator/tests/json/GoBigOr6/validator.xml new file mode 100644 index 0000000..8d7b0e3 --- /dev/null +++ b/validator/tests/json/GoBigOr6/validator.xml @@ -0,0 +1,3151 @@ + + + + + ( + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 0 + 0 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 3 + 3 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 4 + 4 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 5 + 5 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 6 + 6 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 7 + 7 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 8 + 8 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 9 + 9 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 10 + 10 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 11 + 11 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 12 + 12 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 13 + 13 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 14 + 14 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 15 + 15 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 16 + 16 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 17 + 17 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 18 + 18 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 19 + 19 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 20 + 20 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 21 + 21 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 22 + 22 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 23 + 23 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 24 + 24 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 25 + 25 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 26 + 26 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 27 + 27 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 28 + 28 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 29 + 29 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 30 + 30 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 31 + 31 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 32 + 32 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 33 + 33 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 34 + 34 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 35 + 35 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 36 + 36 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 37 + 37 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 38 + 38 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 39 + 39 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 40 + 40 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 41 + 41 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 42 + 42 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 43 + 43 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 44 + 44 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 45 + 45 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 46 + 46 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 47 + 47 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 48 + 48 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 49 + 49 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 50 + 50 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 51 + 51 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 52 + 52 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 53 + 53 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 54 + 54 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 55 + 55 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 56 + 56 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 57 + 57 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 58 + 58 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 59 + 59 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 60 + 60 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 61 + 61 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 62 + 62 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 63 + 63 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 64 + 64 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 65 + 65 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 66 + 66 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 67 + 67 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 68 + 68 + + + + + + + + + + + + + | + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 69 + 69 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/GoBigOr7/valid.json b/validator/tests/json/GoBigOr7/valid.json new file mode 100644 index 0000000..30a41e5 --- /dev/null +++ b/validator/tests/json/GoBigOr7/valid.json @@ -0,0 +1 @@ +{"A": 7} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr7/validator.json b/validator/tests/json/GoBigOr7/validator.json new file mode 100644 index 0000000..e0cd03d --- /dev/null +++ b/validator/tests/json/GoBigOr7/validator.json @@ -0,0 +1,3011 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "3", + "IntValue": 3 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "4", + "IntValue": 4 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "5", + "IntValue": 5 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "6", + "IntValue": 6 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "7", + "IntValue": 7 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "8", + "IntValue": 8 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "9", + "IntValue": 9 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "10", + "IntValue": 10 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "11", + "IntValue": 11 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "12", + "IntValue": 12 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "13", + "IntValue": 13 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "14", + "IntValue": 14 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "15", + "IntValue": 15 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "16", + "IntValue": 16 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "17", + "IntValue": 17 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "18", + "IntValue": 18 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "19", + "IntValue": 19 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "20", + "IntValue": 20 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "21", + "IntValue": 21 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "22", + "IntValue": 22 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "23", + "IntValue": 23 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "24", + "IntValue": 24 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "25", + "IntValue": 25 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "26", + "IntValue": 26 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "27", + "IntValue": 27 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "28", + "IntValue": 28 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "29", + "IntValue": 29 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "30", + "IntValue": 30 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "31", + "IntValue": 31 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "32", + "IntValue": 32 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "33", + "IntValue": 33 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "34", + "IntValue": 34 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "35", + "IntValue": 35 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "36", + "IntValue": 36 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "37", + "IntValue": 37 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "38", + "IntValue": 38 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "39", + "IntValue": 39 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "40", + "IntValue": 40 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "41", + "IntValue": 41 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "42", + "IntValue": 42 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "43", + "IntValue": 43 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "44", + "IntValue": 44 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "45", + "IntValue": 45 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "46", + "IntValue": 46 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "47", + "IntValue": 47 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "48", + "IntValue": 48 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "49", + "IntValue": 49 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "50", + "IntValue": 50 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "51", + "IntValue": 51 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "52", + "IntValue": 52 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "53", + "IntValue": 53 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "54", + "IntValue": 54 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "55", + "IntValue": 55 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "56", + "IntValue": 56 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "57", + "IntValue": 57 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "58", + "IntValue": 58 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "59", + "IntValue": 59 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "60", + "IntValue": 60 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "61", + "IntValue": 61 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "62", + "IntValue": 62 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "63", + "IntValue": 63 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "64", + "IntValue": 64 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "65", + "IntValue": 65 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "66", + "IntValue": 66 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "67", + "IntValue": 67 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "68", + "IntValue": 68 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "69", + "IntValue": 69 + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr7/validator.txt b/validator/tests/json/GoBigOr7/validator.txt new file mode 100644 index 0000000..5147e56 --- /dev/null +++ b/validator/tests/json/GoBigOr7/validator.txt @@ -0,0 +1 @@ +(.A:==0|.A:==1|.A:==2|.A:==3|.A:==4|.A:==5|.A:==6|.A:==7|.A:==8|.A:==9|.A:==10|.A:==11|.A:==12|.A:==13|.A:==14|.A:==15|.A:==16|.A:==17|.A:==18|.A:==19|.A:==20|.A:==21|.A:==22|.A:==23|.A:==24|.A:==25|.A:==26|.A:==27|.A:==28|.A:==29|.A:==30|.A:==31|.A:==32|.A:==33|.A:==34|.A:==35|.A:==36|.A:==37|.A:==38|.A:==39|.A:==40|.A:==41|.A:==42|.A:==43|.A:==44|.A:==45|.A:==46|.A:==47|.A:==48|.A:==49|.A:==50|.A:==51|.A:==52|.A:==53|.A:==54|.A:==55|.A:==56|.A:==57|.A:==58|.A:==59|.A:==60|.A:==61|.A:==62|.A:==63|.A:==64|.A:==65|.A:==66|.A:==67|.A:==68|.A:==69) \ No newline at end of file diff --git a/validator/tests/json/GoBigOr7/validator.xml b/validator/tests/json/GoBigOr7/validator.xml new file mode 100644 index 0000000..8d7b0e3 --- /dev/null +++ b/validator/tests/json/GoBigOr7/validator.xml @@ -0,0 +1,3151 @@ + + + + + ( + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 0 + 0 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 3 + 3 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 4 + 4 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 5 + 5 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 6 + 6 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 7 + 7 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 8 + 8 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 9 + 9 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 10 + 10 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 11 + 11 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 12 + 12 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 13 + 13 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 14 + 14 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 15 + 15 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 16 + 16 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 17 + 17 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 18 + 18 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 19 + 19 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 20 + 20 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 21 + 21 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 22 + 22 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 23 + 23 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 24 + 24 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 25 + 25 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 26 + 26 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 27 + 27 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 28 + 28 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 29 + 29 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 30 + 30 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 31 + 31 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 32 + 32 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 33 + 33 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 34 + 34 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 35 + 35 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 36 + 36 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 37 + 37 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 38 + 38 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 39 + 39 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 40 + 40 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 41 + 41 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 42 + 42 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 43 + 43 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 44 + 44 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 45 + 45 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 46 + 46 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 47 + 47 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 48 + 48 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 49 + 49 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 50 + 50 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 51 + 51 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 52 + 52 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 53 + 53 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 54 + 54 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 55 + 55 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 56 + 56 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 57 + 57 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 58 + 58 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 59 + 59 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 60 + 60 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 61 + 61 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 62 + 62 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 63 + 63 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 64 + 64 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 65 + 65 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 66 + 66 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 67 + 67 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 68 + 68 + + + + + + + + + + + + + | + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 69 + 69 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/GoBigOr8/valid.json b/validator/tests/json/GoBigOr8/valid.json new file mode 100644 index 0000000..097f2cc --- /dev/null +++ b/validator/tests/json/GoBigOr8/valid.json @@ -0,0 +1 @@ +{"A": 8} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr8/validator.json b/validator/tests/json/GoBigOr8/validator.json new file mode 100644 index 0000000..e0cd03d --- /dev/null +++ b/validator/tests/json/GoBigOr8/validator.json @@ -0,0 +1,3011 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "3", + "IntValue": 3 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "4", + "IntValue": 4 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "5", + "IntValue": 5 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "6", + "IntValue": 6 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "7", + "IntValue": 7 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "8", + "IntValue": 8 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "9", + "IntValue": 9 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "10", + "IntValue": 10 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "11", + "IntValue": 11 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "12", + "IntValue": 12 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "13", + "IntValue": 13 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "14", + "IntValue": 14 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "15", + "IntValue": 15 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "16", + "IntValue": 16 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "17", + "IntValue": 17 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "18", + "IntValue": 18 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "19", + "IntValue": 19 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "20", + "IntValue": 20 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "21", + "IntValue": 21 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "22", + "IntValue": 22 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "23", + "IntValue": 23 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "24", + "IntValue": 24 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "25", + "IntValue": 25 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "26", + "IntValue": 26 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "27", + "IntValue": 27 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "28", + "IntValue": 28 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "29", + "IntValue": 29 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "30", + "IntValue": 30 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "31", + "IntValue": 31 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "32", + "IntValue": 32 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "33", + "IntValue": 33 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "34", + "IntValue": 34 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "35", + "IntValue": 35 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "36", + "IntValue": 36 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "37", + "IntValue": 37 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "38", + "IntValue": 38 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "39", + "IntValue": 39 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "40", + "IntValue": 40 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "41", + "IntValue": 41 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "42", + "IntValue": 42 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "43", + "IntValue": 43 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "44", + "IntValue": 44 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "45", + "IntValue": 45 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "46", + "IntValue": 46 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "47", + "IntValue": 47 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "48", + "IntValue": 48 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "49", + "IntValue": 49 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "50", + "IntValue": 50 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "51", + "IntValue": 51 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "52", + "IntValue": 52 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "53", + "IntValue": 53 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "54", + "IntValue": 54 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "55", + "IntValue": 55 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "56", + "IntValue": 56 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "57", + "IntValue": 57 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "58", + "IntValue": 58 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "59", + "IntValue": 59 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "60", + "IntValue": 60 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "61", + "IntValue": 61 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "62", + "IntValue": 62 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "63", + "IntValue": 63 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "64", + "IntValue": 64 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "65", + "IntValue": 65 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "66", + "IntValue": 66 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "67", + "IntValue": 67 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "68", + "IntValue": 68 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "69", + "IntValue": 69 + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr8/validator.txt b/validator/tests/json/GoBigOr8/validator.txt new file mode 100644 index 0000000..5147e56 --- /dev/null +++ b/validator/tests/json/GoBigOr8/validator.txt @@ -0,0 +1 @@ +(.A:==0|.A:==1|.A:==2|.A:==3|.A:==4|.A:==5|.A:==6|.A:==7|.A:==8|.A:==9|.A:==10|.A:==11|.A:==12|.A:==13|.A:==14|.A:==15|.A:==16|.A:==17|.A:==18|.A:==19|.A:==20|.A:==21|.A:==22|.A:==23|.A:==24|.A:==25|.A:==26|.A:==27|.A:==28|.A:==29|.A:==30|.A:==31|.A:==32|.A:==33|.A:==34|.A:==35|.A:==36|.A:==37|.A:==38|.A:==39|.A:==40|.A:==41|.A:==42|.A:==43|.A:==44|.A:==45|.A:==46|.A:==47|.A:==48|.A:==49|.A:==50|.A:==51|.A:==52|.A:==53|.A:==54|.A:==55|.A:==56|.A:==57|.A:==58|.A:==59|.A:==60|.A:==61|.A:==62|.A:==63|.A:==64|.A:==65|.A:==66|.A:==67|.A:==68|.A:==69) \ No newline at end of file diff --git a/validator/tests/json/GoBigOr8/validator.xml b/validator/tests/json/GoBigOr8/validator.xml new file mode 100644 index 0000000..8d7b0e3 --- /dev/null +++ b/validator/tests/json/GoBigOr8/validator.xml @@ -0,0 +1,3151 @@ + + + + + ( + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 0 + 0 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 3 + 3 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 4 + 4 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 5 + 5 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 6 + 6 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 7 + 7 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 8 + 8 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 9 + 9 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 10 + 10 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 11 + 11 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 12 + 12 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 13 + 13 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 14 + 14 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 15 + 15 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 16 + 16 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 17 + 17 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 18 + 18 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 19 + 19 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 20 + 20 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 21 + 21 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 22 + 22 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 23 + 23 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 24 + 24 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 25 + 25 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 26 + 26 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 27 + 27 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 28 + 28 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 29 + 29 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 30 + 30 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 31 + 31 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 32 + 32 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 33 + 33 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 34 + 34 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 35 + 35 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 36 + 36 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 37 + 37 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 38 + 38 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 39 + 39 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 40 + 40 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 41 + 41 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 42 + 42 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 43 + 43 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 44 + 44 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 45 + 45 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 46 + 46 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 47 + 47 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 48 + 48 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 49 + 49 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 50 + 50 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 51 + 51 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 52 + 52 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 53 + 53 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 54 + 54 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 55 + 55 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 56 + 56 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 57 + 57 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 58 + 58 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 59 + 59 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 60 + 60 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 61 + 61 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 62 + 62 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 63 + 63 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 64 + 64 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 65 + 65 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 66 + 66 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 67 + 67 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 68 + 68 + + + + + + + + + + + + + | + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 69 + 69 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/GoBigOr9/valid.json b/validator/tests/json/GoBigOr9/valid.json new file mode 100644 index 0000000..a5b7495 --- /dev/null +++ b/validator/tests/json/GoBigOr9/valid.json @@ -0,0 +1 @@ +{"A": 9} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr9/validator.json b/validator/tests/json/GoBigOr9/validator.json new file mode 100644 index 0000000..e0cd03d --- /dev/null +++ b/validator/tests/json/GoBigOr9/validator.json @@ -0,0 +1,3011 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "3", + "IntValue": 3 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "4", + "IntValue": 4 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "5", + "IntValue": 5 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "6", + "IntValue": 6 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "7", + "IntValue": 7 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "8", + "IntValue": 8 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "9", + "IntValue": 9 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "10", + "IntValue": 10 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "11", + "IntValue": 11 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "12", + "IntValue": 12 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "13", + "IntValue": 13 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "14", + "IntValue": 14 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "15", + "IntValue": 15 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "16", + "IntValue": 16 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "17", + "IntValue": 17 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "18", + "IntValue": 18 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "19", + "IntValue": 19 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "20", + "IntValue": 20 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "21", + "IntValue": 21 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "22", + "IntValue": 22 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "23", + "IntValue": 23 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "24", + "IntValue": 24 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "25", + "IntValue": 25 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "26", + "IntValue": 26 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "27", + "IntValue": 27 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "28", + "IntValue": 28 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "29", + "IntValue": 29 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "30", + "IntValue": 30 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "31", + "IntValue": 31 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "32", + "IntValue": 32 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "33", + "IntValue": 33 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "34", + "IntValue": 34 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "35", + "IntValue": 35 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "36", + "IntValue": 36 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "37", + "IntValue": 37 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "38", + "IntValue": 38 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "39", + "IntValue": 39 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "40", + "IntValue": 40 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "41", + "IntValue": 41 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "42", + "IntValue": 42 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "43", + "IntValue": 43 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "44", + "IntValue": 44 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "45", + "IntValue": 45 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "46", + "IntValue": 46 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "47", + "IntValue": 47 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "48", + "IntValue": 48 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "49", + "IntValue": 49 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "50", + "IntValue": 50 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "51", + "IntValue": 51 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "52", + "IntValue": 52 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "53", + "IntValue": 53 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "54", + "IntValue": 54 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "55", + "IntValue": 55 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "56", + "IntValue": 56 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "57", + "IntValue": 57 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "58", + "IntValue": 58 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "59", + "IntValue": 59 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "60", + "IntValue": 60 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "61", + "IntValue": 61 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "62", + "IntValue": 62 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "63", + "IntValue": 63 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "64", + "IntValue": 64 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "65", + "IntValue": 65 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "66", + "IntValue": 66 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "67", + "IntValue": 67 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "68", + "IntValue": 68 + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "69", + "IntValue": 69 + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/GoBigOr9/validator.txt b/validator/tests/json/GoBigOr9/validator.txt new file mode 100644 index 0000000..5147e56 --- /dev/null +++ b/validator/tests/json/GoBigOr9/validator.txt @@ -0,0 +1 @@ +(.A:==0|.A:==1|.A:==2|.A:==3|.A:==4|.A:==5|.A:==6|.A:==7|.A:==8|.A:==9|.A:==10|.A:==11|.A:==12|.A:==13|.A:==14|.A:==15|.A:==16|.A:==17|.A:==18|.A:==19|.A:==20|.A:==21|.A:==22|.A:==23|.A:==24|.A:==25|.A:==26|.A:==27|.A:==28|.A:==29|.A:==30|.A:==31|.A:==32|.A:==33|.A:==34|.A:==35|.A:==36|.A:==37|.A:==38|.A:==39|.A:==40|.A:==41|.A:==42|.A:==43|.A:==44|.A:==45|.A:==46|.A:==47|.A:==48|.A:==49|.A:==50|.A:==51|.A:==52|.A:==53|.A:==54|.A:==55|.A:==56|.A:==57|.A:==58|.A:==59|.A:==60|.A:==61|.A:==62|.A:==63|.A:==64|.A:==65|.A:==66|.A:==67|.A:==68|.A:==69) \ No newline at end of file diff --git a/validator/tests/json/GoBigOr9/validator.xml b/validator/tests/json/GoBigOr9/validator.xml new file mode 100644 index 0000000..8d7b0e3 --- /dev/null +++ b/validator/tests/json/GoBigOr9/validator.xml @@ -0,0 +1,3151 @@ + + + + + ( + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 0 + 0 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 3 + 3 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 4 + 4 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 5 + 5 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 6 + 6 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 7 + 7 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 8 + 8 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 9 + 9 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 10 + 10 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 11 + 11 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 12 + 12 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 13 + 13 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 14 + 14 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 15 + 15 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 16 + 16 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 17 + 17 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 18 + 18 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 19 + 19 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 20 + 20 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 21 + 21 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 22 + 22 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 23 + 23 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 24 + 24 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 25 + 25 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 26 + 26 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 27 + 27 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 28 + 28 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 29 + 29 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 30 + 30 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 31 + 31 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 32 + 32 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 33 + 33 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 34 + 34 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 35 + 35 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 36 + 36 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 37 + 37 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 38 + 38 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 39 + 39 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 40 + 40 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 41 + 41 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 42 + 42 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 43 + 43 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 44 + 44 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 45 + 45 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 46 + 46 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 47 + 47 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 48 + 48 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 49 + 49 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 50 + 50 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 51 + 51 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 52 + 52 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 53 + 53 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 54 + 54 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 55 + 55 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 56 + 56 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 57 + 57 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 58 + 58 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 59 + 59 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 60 + 60 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 61 + 61 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 62 + 62 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 63 + 63 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 64 + 64 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 65 + 65 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 66 + 66 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 67 + 67 + + + + + + + + + + + + + | + + + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 68 + 68 + + + + + + + + + + + + + | + + + + + . + + + + + + A + + + + + : + + + + + + + == + + + + 69 + 69 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/HiddenLeftRecursionDavid/valid.json b/validator/tests/json/HiddenLeftRecursionDavid/valid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/HiddenLeftRecursionDavid/valid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/HiddenLeftRecursionDavid/validator.json b/validator/tests/json/HiddenLeftRecursionDavid/validator.json new file mode 100644 index 0000000..f36edfb --- /dev/null +++ b/validator/tests/json/HiddenLeftRecursionDavid/validator.json @@ -0,0 +1,96 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "hidden" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "hidden", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/HiddenLeftRecursionDavid/validator.txt b/validator/tests/json/HiddenLeftRecursionDavid/validator.txt new file mode 100644 index 0000000..534c1be --- /dev/null +++ b/validator/tests/json/HiddenLeftRecursionDavid/validator.txt @@ -0,0 +1,2 @@ +(@hidden|[*,Telephone:=="0123456789"]) +#hidden=@main \ No newline at end of file diff --git a/validator/tests/json/HiddenLeftRecursionDavid/validator.xml b/validator/tests/json/HiddenLeftRecursionDavid/validator.xml new file mode 100644 index 0000000..f62291e --- /dev/null +++ b/validator/tests/json/HiddenLeftRecursionDavid/validator.xml @@ -0,0 +1,94 @@ + + + + + ( + + + + + @ + + hidden + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + + + + + + # + + hidden + + = + + + + + @ + + main + + + + \ No newline at end of file diff --git a/validator/tests/json/HiddenLeftRecursionRobert/invalid.json b/validator/tests/json/HiddenLeftRecursionRobert/invalid.json new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/json/HiddenLeftRecursionRobert/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/HiddenLeftRecursionRobert/validator.json b/validator/tests/json/HiddenLeftRecursionRobert/validator.json new file mode 100644 index 0000000..f36edfb --- /dev/null +++ b/validator/tests/json/HiddenLeftRecursionRobert/validator.json @@ -0,0 +1,96 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "hidden" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "hidden", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/HiddenLeftRecursionRobert/validator.txt b/validator/tests/json/HiddenLeftRecursionRobert/validator.txt new file mode 100644 index 0000000..534c1be --- /dev/null +++ b/validator/tests/json/HiddenLeftRecursionRobert/validator.txt @@ -0,0 +1,2 @@ +(@hidden|[*,Telephone:=="0123456789"]) +#hidden=@main \ No newline at end of file diff --git a/validator/tests/json/HiddenLeftRecursionRobert/validator.xml b/validator/tests/json/HiddenLeftRecursionRobert/validator.xml new file mode 100644 index 0000000..f62291e --- /dev/null +++ b/validator/tests/json/HiddenLeftRecursionRobert/validator.xml @@ -0,0 +1,94 @@ + + + + + ( + + + + + @ + + hidden + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + + + + + + # + + hidden + + = + + + + + @ + + main + + + + \ No newline at end of file diff --git a/validator/tests/json/InSetPersonDavid/invalid.json b/validator/tests/json/InSetPersonDavid/invalid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/InSetPersonDavid/invalid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/InSetPersonDavid/validator.json b/validator/tests/json/InSetPersonDavid/validator.json new file mode 100644 index 0000000..949e35b --- /dev/null +++ b/validator/tests/json/InSetPersonDavid/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "contains", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "List": { + "Type": 209, + "OpenCurly": { + "Value": "{" + }, + "Elems": [ + { + "Terminal": { + "Literal": "\"The\"", + "StringValue": "The" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Robert\"", + "StringValue": "Robert" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Smith\"", + "StringValue": "Smith" + } + } + ], + "CloseCurly": { + "Value": "}" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/InSetPersonDavid/validator.txt b/validator/tests/json/InSetPersonDavid/validator.txt new file mode 100644 index 0000000..5d9f6f3 --- /dev/null +++ b/validator/tests/json/InSetPersonDavid/validator.txt @@ -0,0 +1 @@ +.Name:->contains($string,[]string{"The","Robert","Smith"}) \ No newline at end of file diff --git a/validator/tests/json/InSetPersonDavid/validator.xml b/validator/tests/json/InSetPersonDavid/validator.xml new file mode 100644 index 0000000..48591ef --- /dev/null +++ b/validator/tests/json/InSetPersonDavid/validator.xml @@ -0,0 +1,90 @@ + + + + + . + + + + + + Name + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 109 + + + + + + , + + + 209 + + { + + + + "The" + The + + + + + + , + + + "Robert" + Robert + + + + + + , + + + "Smith" + Smith + + + + + } + + + + + ) + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/InSetPersonRobert/valid.json b/validator/tests/json/InSetPersonRobert/valid.json new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/json/InSetPersonRobert/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/InSetPersonRobert/validator.json b/validator/tests/json/InSetPersonRobert/validator.json new file mode 100644 index 0000000..949e35b --- /dev/null +++ b/validator/tests/json/InSetPersonRobert/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "contains", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "List": { + "Type": 209, + "OpenCurly": { + "Value": "{" + }, + "Elems": [ + { + "Terminal": { + "Literal": "\"The\"", + "StringValue": "The" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Robert\"", + "StringValue": "Robert" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Smith\"", + "StringValue": "Smith" + } + } + ], + "CloseCurly": { + "Value": "}" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/InSetPersonRobert/validator.txt b/validator/tests/json/InSetPersonRobert/validator.txt new file mode 100644 index 0000000..5d9f6f3 --- /dev/null +++ b/validator/tests/json/InSetPersonRobert/validator.txt @@ -0,0 +1 @@ +.Name:->contains($string,[]string{"The","Robert","Smith"}) \ No newline at end of file diff --git a/validator/tests/json/InSetPersonRobert/validator.xml b/validator/tests/json/InSetPersonRobert/validator.xml new file mode 100644 index 0000000..48591ef --- /dev/null +++ b/validator/tests/json/InSetPersonRobert/validator.xml @@ -0,0 +1,90 @@ + + + + + . + + + + + + Name + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 109 + + + + + + , + + + 209 + + { + + + + "The" + The + + + + + + , + + + "Robert" + Robert + + + + + + , + + + "Smith" + Smith + + + + + } + + + + + ) + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/KnotKnotElbow/valid.json b/validator/tests/json/KnotKnotElbow/valid.json new file mode 100644 index 0000000..65e7eb6 --- /dev/null +++ b/validator/tests/json/KnotKnotElbow/valid.json @@ -0,0 +1,7 @@ +{ + "BitterEnd": { + "BitterEnd": { + "Elbow": true + } + } +} \ No newline at end of file diff --git a/validator/tests/json/KnotKnotElbow/validator.json b/validator/tests/json/KnotKnotElbow/validator.json new file mode 100644 index 0000000..c0099b7 --- /dev/null +++ b/validator/tests/json/KnotKnotElbow/validator.json @@ -0,0 +1,59 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/KnotKnotElbow/validator.txt b/validator/tests/json/KnotKnotElbow/validator.txt new file mode 100644 index 0000000..d86366c --- /dev/null +++ b/validator/tests/json/KnotKnotElbow/validator.txt @@ -0,0 +1 @@ +_:_:Elbow:==true \ No newline at end of file diff --git a/validator/tests/json/KnotKnotElbow/validator.xml b/validator/tests/json/KnotKnotElbow/validator.xml new file mode 100644 index 0000000..2190dd3 --- /dev/null +++ b/validator/tests/json/KnotKnotElbow/validator.xml @@ -0,0 +1,61 @@ + + + + + + + _ + + + + + : + + + + + + + _ + + + + + : + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/LatentSimplificationFalse/invalid.json b/validator/tests/json/LatentSimplificationFalse/invalid.json new file mode 100644 index 0000000..24f7098 --- /dev/null +++ b/validator/tests/json/LatentSimplificationFalse/invalid.json @@ -0,0 +1,12 @@ +{ + "PocketRoses": { + "BadgeShopping": 2, + "DaisySled": 0, + "MenuPaperclip": [ + "a" + ], + "BeetlePoker": [ + "a" + ] + } +} \ No newline at end of file diff --git a/validator/tests/json/LatentSimplificationFalse/validator.json b/validator/tests/json/LatentSimplificationFalse/validator.json new file mode 100644 index 0000000..7840101 --- /dev/null +++ b/validator/tests/json/LatentSimplificationFalse/validator.json @@ -0,0 +1,727 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003c=" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "DaisySled" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/LatentSimplificationFalse/validator.txt b/validator/tests/json/LatentSimplificationFalse/validator.txt new file mode 100644 index 0000000..e914da9 --- /dev/null +++ b/validator/tests/json/LatentSimplificationFalse/validator.txt @@ -0,0 +1 @@ +((((.PocketRoses:.MenuPaperclip:._:*="a"|.PocketRoses:.BeetlePoker:._:*="a")|(.PocketRoses:.MenuPaperclip:._:*="b"|.PocketRoses:.BeetlePoker:._:*="b"))&(.PocketRoses:.MenuPaperclip:._:*="c"|.PocketRoses:.BeetlePoker:._:*="c"))&(.PocketRoses:.BadgeShopping:<=2&(.PocketRoses:.BadgeShopping:>=0&.PocketRoses:.DaisySled:>=1))) \ No newline at end of file diff --git a/validator/tests/json/LatentSimplificationFalse/validator.xml b/validator/tests/json/LatentSimplificationFalse/validator.xml new file mode 100644 index 0000000..b6bfd25 --- /dev/null +++ b/validator/tests/json/LatentSimplificationFalse/validator.xml @@ -0,0 +1,754 @@ + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + <= + + + + 2 + 2 + + + + + + + + + + + + + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + >= + + + + 0 + 0 + + + + + + + + + + + + + + + + + & + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + DaisySled + + + + + : + + + + + + + >= + + + + 1 + 1 + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/LatentSimplificationTrue/valid.json b/validator/tests/json/LatentSimplificationTrue/valid.json new file mode 100644 index 0000000..3f37d8c --- /dev/null +++ b/validator/tests/json/LatentSimplificationTrue/valid.json @@ -0,0 +1,12 @@ +{ + "PocketRoses": { + "BadgeShopping": 2, + "DaisySled": 1, + "MenuPaperclip": [ + "b" + ], + "BeetlePoker": [ + "c" + ] + } +} \ No newline at end of file diff --git a/validator/tests/json/LatentSimplificationTrue/validator.json b/validator/tests/json/LatentSimplificationTrue/validator.json new file mode 100644 index 0000000..7840101 --- /dev/null +++ b/validator/tests/json/LatentSimplificationTrue/validator.json @@ -0,0 +1,727 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003c=" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "DaisySled" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/LatentSimplificationTrue/validator.txt b/validator/tests/json/LatentSimplificationTrue/validator.txt new file mode 100644 index 0000000..e914da9 --- /dev/null +++ b/validator/tests/json/LatentSimplificationTrue/validator.txt @@ -0,0 +1 @@ +((((.PocketRoses:.MenuPaperclip:._:*="a"|.PocketRoses:.BeetlePoker:._:*="a")|(.PocketRoses:.MenuPaperclip:._:*="b"|.PocketRoses:.BeetlePoker:._:*="b"))&(.PocketRoses:.MenuPaperclip:._:*="c"|.PocketRoses:.BeetlePoker:._:*="c"))&(.PocketRoses:.BadgeShopping:<=2&(.PocketRoses:.BadgeShopping:>=0&.PocketRoses:.DaisySled:>=1))) \ No newline at end of file diff --git a/validator/tests/json/LatentSimplificationTrue/validator.xml b/validator/tests/json/LatentSimplificationTrue/validator.xml new file mode 100644 index 0000000..b6bfd25 --- /dev/null +++ b/validator/tests/json/LatentSimplificationTrue/validator.xml @@ -0,0 +1,754 @@ + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + <= + + + + 2 + 2 + + + + + + + + + + + + + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + >= + + + + 0 + 0 + + + + + + + + + + + + + + + + + & + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + DaisySled + + + + + : + + + + + + + >= + + + + 1 + 1 + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/LeftRecursionDavid/valid.json b/validator/tests/json/LeftRecursionDavid/valid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/LeftRecursionDavid/valid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/LeftRecursionDavid/validator.json b/validator/tests/json/LeftRecursionDavid/validator.json new file mode 100644 index 0000000..33d5b61 --- /dev/null +++ b/validator/tests/json/LeftRecursionDavid/validator.json @@ -0,0 +1,72 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/LeftRecursionDavid/validator.txt b/validator/tests/json/LeftRecursionDavid/validator.txt new file mode 100644 index 0000000..d76d7d4 --- /dev/null +++ b/validator/tests/json/LeftRecursionDavid/validator.txt @@ -0,0 +1 @@ +(@main|[*,Telephone:=="0123456789"]) \ No newline at end of file diff --git a/validator/tests/json/LeftRecursionDavid/validator.xml b/validator/tests/json/LeftRecursionDavid/validator.xml new file mode 100644 index 0000000..ba1fb1e --- /dev/null +++ b/validator/tests/json/LeftRecursionDavid/validator.xml @@ -0,0 +1,74 @@ + + + + + ( + + + + + @ + + main + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/LeftRecursionRobert/invalid.json b/validator/tests/json/LeftRecursionRobert/invalid.json new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/json/LeftRecursionRobert/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/LeftRecursionRobert/validator.json b/validator/tests/json/LeftRecursionRobert/validator.json new file mode 100644 index 0000000..33d5b61 --- /dev/null +++ b/validator/tests/json/LeftRecursionRobert/validator.json @@ -0,0 +1,72 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/LeftRecursionRobert/validator.txt b/validator/tests/json/LeftRecursionRobert/validator.txt new file mode 100644 index 0000000..d76d7d4 --- /dev/null +++ b/validator/tests/json/LeftRecursionRobert/validator.txt @@ -0,0 +1 @@ +(@main|[*,Telephone:=="0123456789"]) \ No newline at end of file diff --git a/validator/tests/json/LeftRecursionRobert/validator.xml b/validator/tests/json/LeftRecursionRobert/validator.xml new file mode 100644 index 0000000..ba1fb1e --- /dev/null +++ b/validator/tests/json/LeftRecursionRobert/validator.xml @@ -0,0 +1,74 @@ + + + + + ( + + + + + @ + + main + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/LenNameJohn/invalid.json b/validator/tests/json/LenNameJohn/invalid.json new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/json/LenNameJohn/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/LenNameJohn/validator.json b/validator/tests/json/LenNameJohn/validator.json new file mode 100644 index 0000000..c70c6dd --- /dev/null +++ b/validator/tests/json/LenNameJohn/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/LenNameJohn/validator.txt b/validator/tests/json/LenNameJohn/validator.txt new file mode 100644 index 0000000..ca5eb5b --- /dev/null +++ b/validator/tests/json/LenNameJohn/validator.txt @@ -0,0 +1 @@ +[*,Name:->eq(length($string),0),*] \ No newline at end of file diff --git a/validator/tests/json/LenNameJohn/validator.xml b/validator/tests/json/LenNameJohn/validator.xml new file mode 100644 index 0000000..87ff11c --- /dev/null +++ b/validator/tests/json/LenNameJohn/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/LenNameNoname/invalid.json b/validator/tests/json/LenNameNoname/invalid.json new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/json/LenNameNoname/invalid.json @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/LenNameNoname/validator.json b/validator/tests/json/LenNameNoname/validator.json new file mode 100644 index 0000000..c70c6dd --- /dev/null +++ b/validator/tests/json/LenNameNoname/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/LenNameNoname/validator.txt b/validator/tests/json/LenNameNoname/validator.txt new file mode 100644 index 0000000..ca5eb5b --- /dev/null +++ b/validator/tests/json/LenNameNoname/validator.txt @@ -0,0 +1 @@ +[*,Name:->eq(length($string),0),*] \ No newline at end of file diff --git a/validator/tests/json/LenNameNoname/validator.xml b/validator/tests/json/LenNameNoname/validator.xml new file mode 100644 index 0000000..87ff11c --- /dev/null +++ b/validator/tests/json/LenNameNoname/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/LenNameSmith/valid.json b/validator/tests/json/LenNameSmith/valid.json new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/json/LenNameSmith/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/LenNameSmith/validator.json b/validator/tests/json/LenNameSmith/validator.json new file mode 100644 index 0000000..c70c6dd --- /dev/null +++ b/validator/tests/json/LenNameSmith/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/LenNameSmith/validator.txt b/validator/tests/json/LenNameSmith/validator.txt new file mode 100644 index 0000000..ca5eb5b --- /dev/null +++ b/validator/tests/json/LenNameSmith/validator.txt @@ -0,0 +1 @@ +[*,Name:->eq(length($string),0),*] \ No newline at end of file diff --git a/validator/tests/json/LenNameSmith/validator.xml b/validator/tests/json/LenNameSmith/validator.xml new file mode 100644 index 0000000..87ff11c --- /dev/null +++ b/validator/tests/json/LenNameSmith/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressMover/invalid.json b/validator/tests/json/ListIndexAddressMover/invalid.json new file mode 100644 index 0000000..2519fd1 --- /dev/null +++ b/validator/tests/json/ListIndexAddressMover/invalid.json @@ -0,0 +1,30 @@ +{ + "Name": "Mover", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressMover/validator.json b/validator/tests/json/ListIndexAddressMover/validator.json new file mode 100644 index 0000000..6ecafe6 --- /dev/null +++ b/validator/tests/json/ListIndexAddressMover/validator.json @@ -0,0 +1,172 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressMover/validator.txt b/validator/tests/json/ListIndexAddressMover/validator.txt new file mode 100644 index 0000000..3dffdfc --- /dev/null +++ b/validator/tests/json/ListIndexAddressMover/validator.txt @@ -0,0 +1 @@ +[*,Addresses[*,_:.Number:==2,_:.Number:==1],*] \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressMover/validator.xml b/validator/tests/json/ListIndexAddressMover/validator.xml new file mode 100644 index 0000000..62d8a9d --- /dev/null +++ b/validator/tests/json/ListIndexAddressMover/validator.xml @@ -0,0 +1,177 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + + + , + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressRoutine/invalid.json b/validator/tests/json/ListIndexAddressRoutine/invalid.json new file mode 100644 index 0000000..12bbe58 --- /dev/null +++ b/validator/tests/json/ListIndexAddressRoutine/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "Routine", + "Addresses": [ + { + "Number": 3, + "Street": "SomeStreet" + } + ], + "Telephone": "0124444444" +} \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressRoutine/validator.json b/validator/tests/json/ListIndexAddressRoutine/validator.json new file mode 100644 index 0000000..6ecafe6 --- /dev/null +++ b/validator/tests/json/ListIndexAddressRoutine/validator.json @@ -0,0 +1,172 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressRoutine/validator.txt b/validator/tests/json/ListIndexAddressRoutine/validator.txt new file mode 100644 index 0000000..3dffdfc --- /dev/null +++ b/validator/tests/json/ListIndexAddressRoutine/validator.txt @@ -0,0 +1 @@ +[*,Addresses[*,_:.Number:==2,_:.Number:==1],*] \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressRoutine/validator.xml b/validator/tests/json/ListIndexAddressRoutine/validator.xml new file mode 100644 index 0000000..62d8a9d --- /dev/null +++ b/validator/tests/json/ListIndexAddressRoutine/validator.xml @@ -0,0 +1,177 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + + + , + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressShaker/valid.json b/validator/tests/json/ListIndexAddressShaker/valid.json new file mode 100644 index 0000000..51416bd --- /dev/null +++ b/validator/tests/json/ListIndexAddressShaker/valid.json @@ -0,0 +1,22 @@ +{ + "Name": "Shaker", + "Addresses": [ + { + "Number": 55, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressShaker/validator.json b/validator/tests/json/ListIndexAddressShaker/validator.json new file mode 100644 index 0000000..6ecafe6 --- /dev/null +++ b/validator/tests/json/ListIndexAddressShaker/validator.json @@ -0,0 +1,172 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressShaker/validator.txt b/validator/tests/json/ListIndexAddressShaker/validator.txt new file mode 100644 index 0000000..3dffdfc --- /dev/null +++ b/validator/tests/json/ListIndexAddressShaker/validator.txt @@ -0,0 +1 @@ +[*,Addresses[*,_:.Number:==2,_:.Number:==1],*] \ No newline at end of file diff --git a/validator/tests/json/ListIndexAddressShaker/validator.xml b/validator/tests/json/ListIndexAddressShaker/validator.xml new file mode 100644 index 0000000..62d8a9d --- /dev/null +++ b/validator/tests/json/ListIndexAddressShaker/validator.xml @@ -0,0 +1,177 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + + + , + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesDavid/valid.json b/validator/tests/json/ListOfTelephonesDavid/valid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/ListOfTelephonesDavid/valid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesDavid/validator.json b/validator/tests/json/ListOfTelephonesDavid/validator.json new file mode 100644 index 0000000..477a1bb --- /dev/null +++ b/validator/tests/json/ListOfTelephonesDavid/validator.json @@ -0,0 +1,131 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "or", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesDavid/validator.txt b/validator/tests/json/ListOfTelephonesDavid/validator.txt new file mode 100644 index 0000000..644337f --- /dev/null +++ b/validator/tests/json/ListOfTelephonesDavid/validator.txt @@ -0,0 +1 @@ +[*,Telephone:->or(eq($string,"0123456789"),eq($string,"0127897897")),*] \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesDavid/validator.xml b/validator/tests/json/ListOfTelephonesDavid/validator.xml new file mode 100644 index 0000000..0194a78 --- /dev/null +++ b/validator/tests/json/ListOfTelephonesDavid/validator.xml @@ -0,0 +1,130 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + -> + + + or + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0123456789" + 0123456789 + + + + + ) + + + + + + , + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0127897897" + 0127897897 + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesRoutine/invalid.json b/validator/tests/json/ListOfTelephonesRoutine/invalid.json new file mode 100644 index 0000000..12bbe58 --- /dev/null +++ b/validator/tests/json/ListOfTelephonesRoutine/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "Routine", + "Addresses": [ + { + "Number": 3, + "Street": "SomeStreet" + } + ], + "Telephone": "0124444444" +} \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesRoutine/validator.json b/validator/tests/json/ListOfTelephonesRoutine/validator.json new file mode 100644 index 0000000..477a1bb --- /dev/null +++ b/validator/tests/json/ListOfTelephonesRoutine/validator.json @@ -0,0 +1,131 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "or", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesRoutine/validator.txt b/validator/tests/json/ListOfTelephonesRoutine/validator.txt new file mode 100644 index 0000000..644337f --- /dev/null +++ b/validator/tests/json/ListOfTelephonesRoutine/validator.txt @@ -0,0 +1 @@ +[*,Telephone:->or(eq($string,"0123456789"),eq($string,"0127897897")),*] \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesRoutine/validator.xml b/validator/tests/json/ListOfTelephonesRoutine/validator.xml new file mode 100644 index 0000000..0194a78 --- /dev/null +++ b/validator/tests/json/ListOfTelephonesRoutine/validator.xml @@ -0,0 +1,130 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + -> + + + or + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0123456789" + 0123456789 + + + + + ) + + + + + + , + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0127897897" + 0127897897 + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesShaker/valid.json b/validator/tests/json/ListOfTelephonesShaker/valid.json new file mode 100644 index 0000000..51416bd --- /dev/null +++ b/validator/tests/json/ListOfTelephonesShaker/valid.json @@ -0,0 +1,22 @@ +{ + "Name": "Shaker", + "Addresses": [ + { + "Number": 55, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesShaker/validator.json b/validator/tests/json/ListOfTelephonesShaker/validator.json new file mode 100644 index 0000000..477a1bb --- /dev/null +++ b/validator/tests/json/ListOfTelephonesShaker/validator.json @@ -0,0 +1,131 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "or", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesShaker/validator.txt b/validator/tests/json/ListOfTelephonesShaker/validator.txt new file mode 100644 index 0000000..644337f --- /dev/null +++ b/validator/tests/json/ListOfTelephonesShaker/validator.txt @@ -0,0 +1 @@ +[*,Telephone:->or(eq($string,"0123456789"),eq($string,"0127897897")),*] \ No newline at end of file diff --git a/validator/tests/json/ListOfTelephonesShaker/validator.xml b/validator/tests/json/ListOfTelephonesShaker/validator.xml new file mode 100644 index 0000000..0194a78 --- /dev/null +++ b/validator/tests/json/ListOfTelephonesShaker/validator.xml @@ -0,0 +1,130 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + -> + + + or + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0123456789" + 0123456789 + + + + + ) + + + + + + , + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0127897897" + 0127897897 + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameDavid/invalid.json b/validator/tests/json/NaiveNotNameDavid/invalid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/NaiveNotNameDavid/invalid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameDavid/validator.json b/validator/tests/json/NaiveNotNameDavid/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/json/NaiveNotNameDavid/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameDavid/validator.txt b/validator/tests/json/NaiveNotNameDavid/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/json/NaiveNotNameDavid/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameDavid/validator.xml b/validator/tests/json/NaiveNotNameDavid/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/json/NaiveNotNameDavid/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameNoname/invalid.json b/validator/tests/json/NaiveNotNameNoname/invalid.json new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/json/NaiveNotNameNoname/invalid.json @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameNoname/validator.json b/validator/tests/json/NaiveNotNameNoname/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/json/NaiveNotNameNoname/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameNoname/validator.txt b/validator/tests/json/NaiveNotNameNoname/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/json/NaiveNotNameNoname/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameNoname/validator.xml b/validator/tests/json/NaiveNotNameNoname/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/json/NaiveNotNameNoname/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameRobert/valid.json b/validator/tests/json/NaiveNotNameRobert/valid.json new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/json/NaiveNotNameRobert/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameRobert/validator.json b/validator/tests/json/NaiveNotNameRobert/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/json/NaiveNotNameRobert/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameRobert/validator.txt b/validator/tests/json/NaiveNotNameRobert/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/json/NaiveNotNameRobert/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameRobert/validator.xml b/validator/tests/json/NaiveNotNameRobert/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/json/NaiveNotNameRobert/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameSmith/valid.json b/validator/tests/json/NaiveNotNameSmith/valid.json new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/json/NaiveNotNameSmith/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameSmith/validator.json b/validator/tests/json/NaiveNotNameSmith/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/json/NaiveNotNameSmith/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameSmith/validator.txt b/validator/tests/json/NaiveNotNameSmith/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/json/NaiveNotNameSmith/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/json/NaiveNotNameSmith/validator.xml b/validator/tests/json/NaiveNotNameSmith/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/json/NaiveNotNameSmith/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/NextAPocketRoses/invalid.json b/validator/tests/json/NextAPocketRoses/invalid.json new file mode 100644 index 0000000..45ec160 --- /dev/null +++ b/validator/tests/json/NextAPocketRoses/invalid.json @@ -0,0 +1,7 @@ +{ + "MenuPaperclip": [ + "a", + "b", + "c" + ] +} \ No newline at end of file diff --git a/validator/tests/json/NextAPocketRoses/validator.json b/validator/tests/json/NextAPocketRoses/validator.json new file mode 100644 index 0000000..49beb20 --- /dev/null +++ b/validator/tests/json/NextAPocketRoses/validator.json @@ -0,0 +1,118 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 1 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 2 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/NextAPocketRoses/validator.txt b/validator/tests/json/NextAPocketRoses/validator.txt new file mode 100644 index 0000000..577118a --- /dev/null +++ b/validator/tests/json/NextAPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[1:=="a",0:=="b",2:=="c"] \ No newline at end of file diff --git a/validator/tests/json/NextAPocketRoses/validator.xml b/validator/tests/json/NextAPocketRoses/validator.xml new file mode 100644 index 0000000..6ad24e5 --- /dev/null +++ b/validator/tests/json/NextAPocketRoses/validator.xml @@ -0,0 +1,125 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 1 + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + + + + 0 + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + , + + + + + + 2 + + + + + : + + + + + + + == + + + + "c" + c + + + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/json/NilNameJohn/invalid.json b/validator/tests/json/NilNameJohn/invalid.json new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/json/NilNameJohn/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/NilNameJohn/validator.json b/validator/tests/json/NilNameJohn/validator.json new file mode 100644 index 0000000..2779c47 --- /dev/null +++ b/validator/tests/json/NilNameJohn/validator.json @@ -0,0 +1,41 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/NilNameJohn/validator.txt b/validator/tests/json/NilNameJohn/validator.txt new file mode 100644 index 0000000..0e09869 --- /dev/null +++ b/validator/tests/json/NilNameJohn/validator.txt @@ -0,0 +1 @@ +!(.Name:*) \ No newline at end of file diff --git a/validator/tests/json/NilNameJohn/validator.xml b/validator/tests/json/NilNameJohn/validator.xml new file mode 100644 index 0000000..75f6b17 --- /dev/null +++ b/validator/tests/json/NilNameJohn/validator.xml @@ -0,0 +1,42 @@ + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/NilNameNoname/valid.json b/validator/tests/json/NilNameNoname/valid.json new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/json/NilNameNoname/valid.json @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/NilNameNoname/validator.json b/validator/tests/json/NilNameNoname/validator.json new file mode 100644 index 0000000..2779c47 --- /dev/null +++ b/validator/tests/json/NilNameNoname/validator.json @@ -0,0 +1,41 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/NilNameNoname/validator.txt b/validator/tests/json/NilNameNoname/validator.txt new file mode 100644 index 0000000..0e09869 --- /dev/null +++ b/validator/tests/json/NilNameNoname/validator.txt @@ -0,0 +1 @@ +!(.Name:*) \ No newline at end of file diff --git a/validator/tests/json/NilNameNoname/validator.xml b/validator/tests/json/NilNameNoname/validator.xml new file mode 100644 index 0000000..75f6b17 --- /dev/null +++ b/validator/tests/json/NilNameNoname/validator.xml @@ -0,0 +1,42 @@ + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/NilNameSmith/invalid.json b/validator/tests/json/NilNameSmith/invalid.json new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/json/NilNameSmith/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/NilNameSmith/validator.json b/validator/tests/json/NilNameSmith/validator.json new file mode 100644 index 0000000..2779c47 --- /dev/null +++ b/validator/tests/json/NilNameSmith/validator.json @@ -0,0 +1,41 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/NilNameSmith/validator.txt b/validator/tests/json/NilNameSmith/validator.txt new file mode 100644 index 0000000..0e09869 --- /dev/null +++ b/validator/tests/json/NilNameSmith/validator.txt @@ -0,0 +1 @@ +!(.Name:*) \ No newline at end of file diff --git a/validator/tests/json/NilNameSmith/validator.xml b/validator/tests/json/NilNameSmith/validator.xml new file mode 100644 index 0000000..75f6b17 --- /dev/null +++ b/validator/tests/json/NilNameSmith/validator.xml @@ -0,0 +1,42 @@ + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/OneHash811/invalid.json b/validator/tests/json/OneHash811/invalid.json new file mode 100644 index 0000000..e0d6e41 --- /dev/null +++ b/validator/tests/json/OneHash811/invalid.json @@ -0,0 +1,9 @@ +{ + "A": { + "Right": { + "A": { + "Value": "#" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OneHash811/validator.json b/validator/tests/json/OneHash811/validator.json new file mode 100644 index 0000000..5a1076d --- /dev/null +++ b/validator/tests/json/OneHash811/validator.json @@ -0,0 +1,314 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "q1", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "q2", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Value" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"#\"", + "StringValue": "#" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/OneHash811/validator.txt b/validator/tests/json/OneHash811/validator.txt new file mode 100644 index 0000000..ce43695 --- /dev/null +++ b/validator/tests/json/OneHash811/validator.txt @@ -0,0 +1,3 @@ +(@q1|@q2) +#q1=(A[Left:@q1,Right:@q2]|A[Left:@q1,Right:@q1]) +#q2=(A[Left:@q2,Right:@q2]|A:Value:=="#") \ No newline at end of file diff --git a/validator/tests/json/OneHash811/validator.xml b/validator/tests/json/OneHash811/validator.xml new file mode 100644 index 0000000..c10e930 --- /dev/null +++ b/validator/tests/json/OneHash811/validator.xml @@ -0,0 +1,320 @@ + + + + + ( + + + + + @ + + q1 + + + + | + + + + + @ + + q2 + + + + ) + + + + + + + + + # + + q1 + + = + + + + + ( + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q1 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q2 + + + + + + ] + + + + + + + | + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q1 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q1 + + + + + + ] + + + + + + + ) + + + + + + + + + + # + + q2 + + = + + + + + ( + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q2 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q2 + + + + + + ] + + + + + + + | + + + + + + A + + + + + : + + + + + + Value + + + + + : + + + + + + + == + + + + "#" + # + + + + + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/OneLeftAndTwoRightHashes811/valid.json b/validator/tests/json/OneLeftAndTwoRightHashes811/valid.json new file mode 100644 index 0000000..ed6df50 --- /dev/null +++ b/validator/tests/json/OneLeftAndTwoRightHashes811/valid.json @@ -0,0 +1,23 @@ +{ + "A": { + "Left": { + "A": { + "Value": "#" + } + }, + "Right": { + "A": { + "Left": { + "A": { + "Value": "#" + } + }, + "Right": { + "A": { + "Value": "#" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OneLeftAndTwoRightHashes811/validator.json b/validator/tests/json/OneLeftAndTwoRightHashes811/validator.json new file mode 100644 index 0000000..5a1076d --- /dev/null +++ b/validator/tests/json/OneLeftAndTwoRightHashes811/validator.json @@ -0,0 +1,314 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "q1", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "q2", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Value" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"#\"", + "StringValue": "#" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/OneLeftAndTwoRightHashes811/validator.txt b/validator/tests/json/OneLeftAndTwoRightHashes811/validator.txt new file mode 100644 index 0000000..ce43695 --- /dev/null +++ b/validator/tests/json/OneLeftAndTwoRightHashes811/validator.txt @@ -0,0 +1,3 @@ +(@q1|@q2) +#q1=(A[Left:@q1,Right:@q2]|A[Left:@q1,Right:@q1]) +#q2=(A[Left:@q2,Right:@q2]|A:Value:=="#") \ No newline at end of file diff --git a/validator/tests/json/OneLeftAndTwoRightHashes811/validator.xml b/validator/tests/json/OneLeftAndTwoRightHashes811/validator.xml new file mode 100644 index 0000000..c10e930 --- /dev/null +++ b/validator/tests/json/OneLeftAndTwoRightHashes811/validator.xml @@ -0,0 +1,320 @@ + + + + + ( + + + + + @ + + q1 + + + + | + + + + + @ + + q2 + + + + ) + + + + + + + + + # + + q1 + + = + + + + + ( + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q1 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q2 + + + + + + ] + + + + + + + | + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q1 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q1 + + + + + + ] + + + + + + + ) + + + + + + + + + + # + + q2 + + = + + + + + ( + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q2 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q2 + + + + + + ] + + + + + + + | + + + + + + A + + + + + : + + + + + + Value + + + + + : + + + + + + + == + + + + "#" + # + + + + + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressDavidPerson/valid.json b/validator/tests/json/OptionalAddressDavidPerson/valid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/OptionalAddressDavidPerson/valid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressDavidPerson/validator.json b/validator/tests/json/OptionalAddressDavidPerson/validator.json new file mode 100644 index 0000000..fd3e097 --- /dev/null +++ b/validator/tests/json/OptionalAddressDavidPerson/validator.json @@ -0,0 +1,178 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressDavidPerson/validator.txt b/validator/tests/json/OptionalAddressDavidPerson/validator.txt new file mode 100644 index 0000000..551725e --- /dev/null +++ b/validator/tests/json/OptionalAddressDavidPerson/validator.txt @@ -0,0 +1 @@ +.Addresses[(_[Number:*,Street:*])?,_[Number:==456,Street:*]] \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressDavidPerson/validator.xml b/validator/tests/json/OptionalAddressDavidPerson/validator.xml new file mode 100644 index 0000000..99d93ad --- /dev/null +++ b/validator/tests/json/OptionalAddressDavidPerson/validator.xml @@ -0,0 +1,184 @@ + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + ( + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + * + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ) + + + ? + + + + + , + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ] + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressMoverPerson/invalid.json b/validator/tests/json/OptionalAddressMoverPerson/invalid.json new file mode 100644 index 0000000..2519fd1 --- /dev/null +++ b/validator/tests/json/OptionalAddressMoverPerson/invalid.json @@ -0,0 +1,30 @@ +{ + "Name": "Mover", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressMoverPerson/validator.json b/validator/tests/json/OptionalAddressMoverPerson/validator.json new file mode 100644 index 0000000..fd3e097 --- /dev/null +++ b/validator/tests/json/OptionalAddressMoverPerson/validator.json @@ -0,0 +1,178 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressMoverPerson/validator.txt b/validator/tests/json/OptionalAddressMoverPerson/validator.txt new file mode 100644 index 0000000..551725e --- /dev/null +++ b/validator/tests/json/OptionalAddressMoverPerson/validator.txt @@ -0,0 +1 @@ +.Addresses[(_[Number:*,Street:*])?,_[Number:==456,Street:*]] \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressMoverPerson/validator.xml b/validator/tests/json/OptionalAddressMoverPerson/validator.xml new file mode 100644 index 0000000..99d93ad --- /dev/null +++ b/validator/tests/json/OptionalAddressMoverPerson/validator.xml @@ -0,0 +1,184 @@ + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + ( + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + * + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ) + + + ? + + + + + , + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ] + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressRobertPerson/valid.json b/validator/tests/json/OptionalAddressRobertPerson/valid.json new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/json/OptionalAddressRobertPerson/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressRobertPerson/validator.json b/validator/tests/json/OptionalAddressRobertPerson/validator.json new file mode 100644 index 0000000..fd3e097 --- /dev/null +++ b/validator/tests/json/OptionalAddressRobertPerson/validator.json @@ -0,0 +1,178 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressRobertPerson/validator.txt b/validator/tests/json/OptionalAddressRobertPerson/validator.txt new file mode 100644 index 0000000..551725e --- /dev/null +++ b/validator/tests/json/OptionalAddressRobertPerson/validator.txt @@ -0,0 +1 @@ +.Addresses[(_[Number:*,Street:*])?,_[Number:==456,Street:*]] \ No newline at end of file diff --git a/validator/tests/json/OptionalAddressRobertPerson/validator.xml b/validator/tests/json/OptionalAddressRobertPerson/validator.xml new file mode 100644 index 0000000..99d93ad --- /dev/null +++ b/validator/tests/json/OptionalAddressRobertPerson/validator.xml @@ -0,0 +1,184 @@ + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + ( + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + * + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ) + + + ? + + + + + , + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ] + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/OptionalNameJohnPerson/invalid.json b/validator/tests/json/OptionalNameJohnPerson/invalid.json new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/json/OptionalNameJohnPerson/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/OptionalNameJohnPerson/validator.json b/validator/tests/json/OptionalNameJohnPerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/json/OptionalNameJohnPerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OptionalNameJohnPerson/validator.txt b/validator/tests/json/OptionalNameJohnPerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/json/OptionalNameJohnPerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/json/OptionalNameJohnPerson/validator.xml b/validator/tests/json/OptionalNameJohnPerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/json/OptionalNameJohnPerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/OptionalNameNonamePerson/valid.json b/validator/tests/json/OptionalNameNonamePerson/valid.json new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/json/OptionalNameNonamePerson/valid.json @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/OptionalNameNonamePerson/validator.json b/validator/tests/json/OptionalNameNonamePerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/json/OptionalNameNonamePerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OptionalNameNonamePerson/validator.txt b/validator/tests/json/OptionalNameNonamePerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/json/OptionalNameNonamePerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/json/OptionalNameNonamePerson/validator.xml b/validator/tests/json/OptionalNameNonamePerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/json/OptionalNameNonamePerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/OptionalNameRoutinePerson/invalid.json b/validator/tests/json/OptionalNameRoutinePerson/invalid.json new file mode 100644 index 0000000..12bbe58 --- /dev/null +++ b/validator/tests/json/OptionalNameRoutinePerson/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "Routine", + "Addresses": [ + { + "Number": 3, + "Street": "SomeStreet" + } + ], + "Telephone": "0124444444" +} \ No newline at end of file diff --git a/validator/tests/json/OptionalNameRoutinePerson/validator.json b/validator/tests/json/OptionalNameRoutinePerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/json/OptionalNameRoutinePerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OptionalNameRoutinePerson/validator.txt b/validator/tests/json/OptionalNameRoutinePerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/json/OptionalNameRoutinePerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/json/OptionalNameRoutinePerson/validator.xml b/validator/tests/json/OptionalNameRoutinePerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/json/OptionalNameRoutinePerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/OptionalNameShakerPerson/valid.json b/validator/tests/json/OptionalNameShakerPerson/valid.json new file mode 100644 index 0000000..51416bd --- /dev/null +++ b/validator/tests/json/OptionalNameShakerPerson/valid.json @@ -0,0 +1,22 @@ +{ + "Name": "Shaker", + "Addresses": [ + { + "Number": 55, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/OptionalNameShakerPerson/validator.json b/validator/tests/json/OptionalNameShakerPerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/json/OptionalNameShakerPerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OptionalNameShakerPerson/validator.txt b/validator/tests/json/OptionalNameShakerPerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/json/OptionalNameShakerPerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/json/OptionalNameShakerPerson/validator.xml b/validator/tests/json/OptionalNameShakerPerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/json/OptionalNameShakerPerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/OptionalNameSmithPerson/valid.json b/validator/tests/json/OptionalNameSmithPerson/valid.json new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/json/OptionalNameSmithPerson/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/OptionalNameSmithPerson/validator.json b/validator/tests/json/OptionalNameSmithPerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/json/OptionalNameSmithPerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OptionalNameSmithPerson/validator.txt b/validator/tests/json/OptionalNameSmithPerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/json/OptionalNameSmithPerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/json/OptionalNameSmithPerson/validator.xml b/validator/tests/json/OptionalNameSmithPerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/json/OptionalNameSmithPerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneDavid/valid.json b/validator/tests/json/OrNameTelephoneDavid/valid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/OrNameTelephoneDavid/valid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneDavid/validator.json b/validator/tests/json/OrNameTelephoneDavid/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/json/OrNameTelephoneDavid/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneDavid/validator.txt b/validator/tests/json/OrNameTelephoneDavid/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/json/OrNameTelephoneDavid/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneDavid/validator.xml b/validator/tests/json/OrNameTelephoneDavid/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/json/OrNameTelephoneDavid/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneJohn/valid.json b/validator/tests/json/OrNameTelephoneJohn/valid.json new file mode 100644 index 0000000..eb4652e --- /dev/null +++ b/validator/tests/json/OrNameTelephoneJohn/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "John", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneJohn/validator.json b/validator/tests/json/OrNameTelephoneJohn/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/json/OrNameTelephoneJohn/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneJohn/validator.txt b/validator/tests/json/OrNameTelephoneJohn/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/json/OrNameTelephoneJohn/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneJohn/validator.xml b/validator/tests/json/OrNameTelephoneJohn/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/json/OrNameTelephoneJohn/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneMover/valid.json b/validator/tests/json/OrNameTelephoneMover/valid.json new file mode 100644 index 0000000..2519fd1 --- /dev/null +++ b/validator/tests/json/OrNameTelephoneMover/valid.json @@ -0,0 +1,30 @@ +{ + "Name": "Mover", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + }, + { + "Number": 1, + "Street": "SomeStreet" + }, + { + "Number": 2, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneMover/validator.json b/validator/tests/json/OrNameTelephoneMover/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/json/OrNameTelephoneMover/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneMover/validator.txt b/validator/tests/json/OrNameTelephoneMover/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/json/OrNameTelephoneMover/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneMover/validator.xml b/validator/tests/json/OrNameTelephoneMover/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/json/OrNameTelephoneMover/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneSmith/invalid.json b/validator/tests/json/OrNameTelephoneSmith/invalid.json new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/json/OrNameTelephoneSmith/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneSmith/validator.json b/validator/tests/json/OrNameTelephoneSmith/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/json/OrNameTelephoneSmith/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneSmith/validator.txt b/validator/tests/json/OrNameTelephoneSmith/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/json/OrNameTelephoneSmith/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/json/OrNameTelephoneSmith/validator.xml b/validator/tests/json/OrNameTelephoneSmith/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/json/OrNameTelephoneSmith/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194abcd/valid.json b/validator/tests/json/Page194abcd/valid.json new file mode 100644 index 0000000..af80092 --- /dev/null +++ b/validator/tests/json/Page194abcd/valid.json @@ -0,0 +1,6 @@ +{ + "A": "#", + "B": "#", + "C": "#", + "D": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194abcd/validator.json b/validator/tests/json/Page194abcd/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194abcd/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194abcd/validator.txt b/validator/tests/json/Page194abcd/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194abcd/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194abcd/validator.xml b/validator/tests/json/Page194abcd/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194abcd/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194abdc/invalid.json b/validator/tests/json/Page194abdc/invalid.json new file mode 100644 index 0000000..2312cb8 --- /dev/null +++ b/validator/tests/json/Page194abdc/invalid.json @@ -0,0 +1,6 @@ +{ + "A": "#", + "B": "#", + "D": "#", + "C": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194abdc/validator.json b/validator/tests/json/Page194abdc/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194abdc/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194abdc/validator.txt b/validator/tests/json/Page194abdc/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194abdc/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194abdc/validator.xml b/validator/tests/json/Page194abdc/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194abdc/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194acbd/valid.json b/validator/tests/json/Page194acbd/valid.json new file mode 100644 index 0000000..71c5a07 --- /dev/null +++ b/validator/tests/json/Page194acbd/valid.json @@ -0,0 +1,6 @@ +{ + "A": "#", + "C": "#", + "B": "#", + "D": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194acbd/validator.json b/validator/tests/json/Page194acbd/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194acbd/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194acbd/validator.txt b/validator/tests/json/Page194acbd/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194acbd/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194acbd/validator.xml b/validator/tests/json/Page194acbd/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194acbd/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194acdb/valid.json b/validator/tests/json/Page194acdb/valid.json new file mode 100644 index 0000000..6694af3 --- /dev/null +++ b/validator/tests/json/Page194acdb/valid.json @@ -0,0 +1,6 @@ +{ + "A": "#", + "C": "#", + "D": "#", + "B": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194acdb/validator.json b/validator/tests/json/Page194acdb/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194acdb/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194acdb/validator.txt b/validator/tests/json/Page194acdb/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194acdb/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194acdb/validator.xml b/validator/tests/json/Page194acdb/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194acdb/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194adbc/invalid.json b/validator/tests/json/Page194adbc/invalid.json new file mode 100644 index 0000000..fe03c9e --- /dev/null +++ b/validator/tests/json/Page194adbc/invalid.json @@ -0,0 +1,6 @@ +{ + "A": "#", + "D": "#", + "B": "#", + "C": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194adbc/validator.json b/validator/tests/json/Page194adbc/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194adbc/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194adbc/validator.txt b/validator/tests/json/Page194adbc/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194adbc/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194adbc/validator.xml b/validator/tests/json/Page194adbc/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194adbc/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194adcb/invalid.json b/validator/tests/json/Page194adcb/invalid.json new file mode 100644 index 0000000..5963bab --- /dev/null +++ b/validator/tests/json/Page194adcb/invalid.json @@ -0,0 +1,6 @@ +{ + "A": "#", + "D": "#", + "C": "#", + "B": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194adcb/validator.json b/validator/tests/json/Page194adcb/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194adcb/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194adcb/validator.txt b/validator/tests/json/Page194adcb/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194adcb/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194adcb/validator.xml b/validator/tests/json/Page194adcb/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194adcb/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194bacd/invalid.json b/validator/tests/json/Page194bacd/invalid.json new file mode 100644 index 0000000..b86851d --- /dev/null +++ b/validator/tests/json/Page194bacd/invalid.json @@ -0,0 +1,6 @@ +{ + "B": "#", + "A": "#", + "C": "#", + "D": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194bacd/validator.json b/validator/tests/json/Page194bacd/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194bacd/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194bacd/validator.txt b/validator/tests/json/Page194bacd/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194bacd/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194bacd/validator.xml b/validator/tests/json/Page194bacd/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194bacd/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194badc/invalid.json b/validator/tests/json/Page194badc/invalid.json new file mode 100644 index 0000000..cff9dfb --- /dev/null +++ b/validator/tests/json/Page194badc/invalid.json @@ -0,0 +1,6 @@ +{ + "B": "#", + "A": "#", + "D": "#", + "C": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194badc/validator.json b/validator/tests/json/Page194badc/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194badc/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194badc/validator.txt b/validator/tests/json/Page194badc/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194badc/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194badc/validator.xml b/validator/tests/json/Page194badc/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194badc/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194bcad/invalid.json b/validator/tests/json/Page194bcad/invalid.json new file mode 100644 index 0000000..ed668a5 --- /dev/null +++ b/validator/tests/json/Page194bcad/invalid.json @@ -0,0 +1,6 @@ +{ + "B": "#", + "C": "#", + "A": "#", + "D": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194bcad/validator.json b/validator/tests/json/Page194bcad/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194bcad/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194bcad/validator.txt b/validator/tests/json/Page194bcad/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194bcad/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194bcad/validator.xml b/validator/tests/json/Page194bcad/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194bcad/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194bcda/invalid.json b/validator/tests/json/Page194bcda/invalid.json new file mode 100644 index 0000000..92bf32b --- /dev/null +++ b/validator/tests/json/Page194bcda/invalid.json @@ -0,0 +1,6 @@ +{ + "B": "#", + "C": "#", + "D": "#", + "A": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194bcda/validator.json b/validator/tests/json/Page194bcda/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194bcda/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194bcda/validator.txt b/validator/tests/json/Page194bcda/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194bcda/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194bcda/validator.xml b/validator/tests/json/Page194bcda/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194bcda/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194bdac/invalid.json b/validator/tests/json/Page194bdac/invalid.json new file mode 100644 index 0000000..f97494a --- /dev/null +++ b/validator/tests/json/Page194bdac/invalid.json @@ -0,0 +1,6 @@ +{ + "B": "#", + "D": "#", + "A": "#", + "C": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194bdac/validator.json b/validator/tests/json/Page194bdac/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194bdac/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194bdac/validator.txt b/validator/tests/json/Page194bdac/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194bdac/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194bdac/validator.xml b/validator/tests/json/Page194bdac/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194bdac/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194bdca/invalid.json b/validator/tests/json/Page194bdca/invalid.json new file mode 100644 index 0000000..8560290 --- /dev/null +++ b/validator/tests/json/Page194bdca/invalid.json @@ -0,0 +1,6 @@ +{ + "D": "#", + "C": "#", + "B": "#", + "A": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194bdca/validator.json b/validator/tests/json/Page194bdca/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194bdca/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194bdca/validator.txt b/validator/tests/json/Page194bdca/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194bdca/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194bdca/validator.xml b/validator/tests/json/Page194bdca/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194bdca/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194cabd/valid.json b/validator/tests/json/Page194cabd/valid.json new file mode 100644 index 0000000..f594314 --- /dev/null +++ b/validator/tests/json/Page194cabd/valid.json @@ -0,0 +1,6 @@ +{ + "C": "#", + "A": "#", + "B": "#", + "D": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194cabd/validator.json b/validator/tests/json/Page194cabd/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194cabd/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194cabd/validator.txt b/validator/tests/json/Page194cabd/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194cabd/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194cabd/validator.xml b/validator/tests/json/Page194cabd/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194cabd/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194cadb/valid.json b/validator/tests/json/Page194cadb/valid.json new file mode 100644 index 0000000..d0323e1 --- /dev/null +++ b/validator/tests/json/Page194cadb/valid.json @@ -0,0 +1,6 @@ +{ + "C": "#", + "A": "#", + "D": "#", + "B": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194cadb/validator.json b/validator/tests/json/Page194cadb/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194cadb/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194cadb/validator.txt b/validator/tests/json/Page194cadb/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194cadb/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194cadb/validator.xml b/validator/tests/json/Page194cadb/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194cadb/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194cbad/invalid.json b/validator/tests/json/Page194cbad/invalid.json new file mode 100644 index 0000000..16bc3a6 --- /dev/null +++ b/validator/tests/json/Page194cbad/invalid.json @@ -0,0 +1,6 @@ +{ + "C": "#", + "B": "#", + "A": "#", + "D": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194cbad/validator.json b/validator/tests/json/Page194cbad/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194cbad/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194cbad/validator.txt b/validator/tests/json/Page194cbad/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194cbad/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194cbad/validator.xml b/validator/tests/json/Page194cbad/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194cbad/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194cbda/invalid.json b/validator/tests/json/Page194cbda/invalid.json new file mode 100644 index 0000000..563b738 --- /dev/null +++ b/validator/tests/json/Page194cbda/invalid.json @@ -0,0 +1,6 @@ +{ + "C": "#", + "B": "#", + "D": "#", + "A": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194cbda/validator.json b/validator/tests/json/Page194cbda/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194cbda/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194cbda/validator.txt b/validator/tests/json/Page194cbda/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194cbda/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194cbda/validator.xml b/validator/tests/json/Page194cbda/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194cbda/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194cdab/valid.json b/validator/tests/json/Page194cdab/valid.json new file mode 100644 index 0000000..8885e48 --- /dev/null +++ b/validator/tests/json/Page194cdab/valid.json @@ -0,0 +1,6 @@ +{ + "C": "#", + "D": "#", + "A": "#", + "B": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194cdab/validator.json b/validator/tests/json/Page194cdab/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194cdab/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194cdab/validator.txt b/validator/tests/json/Page194cdab/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194cdab/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194cdab/validator.xml b/validator/tests/json/Page194cdab/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194cdab/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194cdba/invalid.json b/validator/tests/json/Page194cdba/invalid.json new file mode 100644 index 0000000..514418d --- /dev/null +++ b/validator/tests/json/Page194cdba/invalid.json @@ -0,0 +1,6 @@ +{ + "C": "#", + "D": "#", + "B": "#", + "A": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194cdba/validator.json b/validator/tests/json/Page194cdba/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194cdba/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194cdba/validator.txt b/validator/tests/json/Page194cdba/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194cdba/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194cdba/validator.xml b/validator/tests/json/Page194cdba/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194cdba/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194dabc/invalid.json b/validator/tests/json/Page194dabc/invalid.json new file mode 100644 index 0000000..05445d0 --- /dev/null +++ b/validator/tests/json/Page194dabc/invalid.json @@ -0,0 +1,6 @@ +{ + "D": "#", + "A": "#", + "B": "#", + "C": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194dabc/validator.json b/validator/tests/json/Page194dabc/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194dabc/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194dabc/validator.txt b/validator/tests/json/Page194dabc/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194dabc/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194dabc/validator.xml b/validator/tests/json/Page194dabc/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194dabc/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194dacb/invalid.json b/validator/tests/json/Page194dacb/invalid.json new file mode 100644 index 0000000..92ca7ac --- /dev/null +++ b/validator/tests/json/Page194dacb/invalid.json @@ -0,0 +1,6 @@ +{ + "D": "#", + "A": "#", + "C": "#", + "B": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194dacb/validator.json b/validator/tests/json/Page194dacb/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194dacb/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194dacb/validator.txt b/validator/tests/json/Page194dacb/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194dacb/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194dacb/validator.xml b/validator/tests/json/Page194dacb/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194dacb/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194dbac/invalid.json b/validator/tests/json/Page194dbac/invalid.json new file mode 100644 index 0000000..ca534b2 --- /dev/null +++ b/validator/tests/json/Page194dbac/invalid.json @@ -0,0 +1,6 @@ +{ + "D": "#", + "B": "#", + "A": "#", + "C": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194dbac/validator.json b/validator/tests/json/Page194dbac/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194dbac/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194dbac/validator.txt b/validator/tests/json/Page194dbac/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194dbac/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194dbac/validator.xml b/validator/tests/json/Page194dbac/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194dbac/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194dbca/invalid.json b/validator/tests/json/Page194dbca/invalid.json new file mode 100644 index 0000000..4530298 --- /dev/null +++ b/validator/tests/json/Page194dbca/invalid.json @@ -0,0 +1,6 @@ +{ + "D": "#", + "B": "#", + "C": "#", + "A": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194dbca/validator.json b/validator/tests/json/Page194dbca/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194dbca/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194dbca/validator.txt b/validator/tests/json/Page194dbca/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194dbca/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194dbca/validator.xml b/validator/tests/json/Page194dbca/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194dbca/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194dcab/invalid.json b/validator/tests/json/Page194dcab/invalid.json new file mode 100644 index 0000000..83351c5 --- /dev/null +++ b/validator/tests/json/Page194dcab/invalid.json @@ -0,0 +1,6 @@ +{ + "D": "#", + "C": "#", + "A": "#", + "B": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194dcab/validator.json b/validator/tests/json/Page194dcab/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194dcab/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194dcab/validator.txt b/validator/tests/json/Page194dcab/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194dcab/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194dcab/validator.xml b/validator/tests/json/Page194dcab/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194dcab/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/Page194dcba/invalid.json b/validator/tests/json/Page194dcba/invalid.json new file mode 100644 index 0000000..8560290 --- /dev/null +++ b/validator/tests/json/Page194dcba/invalid.json @@ -0,0 +1,6 @@ +{ + "D": "#", + "C": "#", + "B": "#", + "A": "#" +} \ No newline at end of file diff --git a/validator/tests/json/Page194dcba/validator.json b/validator/tests/json/Page194dcba/validator.json new file mode 100644 index 0000000..1de1778 --- /dev/null +++ b/validator/tests/json/Page194dcba/validator.json @@ -0,0 +1,117 @@ +{ + "TopPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/Page194dcba/validator.txt b/validator/tests/json/Page194dcba/validator.txt new file mode 100644 index 0000000..cde50d8 --- /dev/null +++ b/validator/tests/json/Page194dcba/validator.txt @@ -0,0 +1 @@ +{[A:*,B:*];[C:*,D:*]} \ No newline at end of file diff --git a/validator/tests/json/Page194dcba/validator.xml b/validator/tests/json/Page194dcba/validator.xml new file mode 100644 index 0000000..74b055d --- /dev/null +++ b/validator/tests/json/Page194dcba/validator.xml @@ -0,0 +1,121 @@ + + + + + { + + + + + [ + + + + + + A + + + + + : + + + + + * + + + + + + + , + + + + + + B + + + + + : + + + + + * + + + + + + + ] + + + + + ; + + + + + [ + + + + + + C + + + + + : + + + + + * + + + + + + + , + + + + + + D + + + + + : + + + + + * + + + + + + + ] + + + + + } + + + + \ No newline at end of file diff --git a/validator/tests/json/PlaygroundFalse/invalid.json b/validator/tests/json/PlaygroundFalse/invalid.json new file mode 100644 index 0000000..2d23104 --- /dev/null +++ b/validator/tests/json/PlaygroundFalse/invalid.json @@ -0,0 +1,42 @@ +{ + "DragonsExist": false, + "Family": { + "Class": "Insecta", + "Family": "Tettigoniidae", + "Order": { + "Order": "Orthoptera", + "Superorder": { + "Infraclass": "Polyneoptera", + "Subclass": "Pterygota" + } + }, + "Suborder": "Ensifera" + }, + "FeatureRequests": [ + { + "Anatomy": "Abdomen", + "Name": "Dart", + "Properties": [ + "Poison", + "Projectile" + ] + }, + { + "Anatomy": "Mouth", + "Name": "Fire Breath", + "Properties": [ + "Fire", + "Vapor" + ] + } + ], + "History": [ + "Giant Lizards", + "Meteor", + "Lizards Dead", + "Katydids Alive" + ], + "MonkeysSmart": true, + "Survived": 100000000, + "WhatsUp": "E" +} \ No newline at end of file diff --git a/validator/tests/json/PlaygroundFalse/validator.json b/validator/tests/json/PlaygroundFalse/validator.json new file mode 100644 index 0000000..d97072b --- /dev/null +++ b/validator/tests/json/PlaygroundFalse/validator.json @@ -0,0 +1,506 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "WhatsUp" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"F\"", + "StringValue": "F" + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "LeftPattern": { + "And": { + "LeftPattern": { + "And": { + "LeftPattern": { + "And": { + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Survived" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "1000000", + "IntValue": 1000000 + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "/*years*/", + " " + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "DragonsExist" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "!=" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MonkeysSmart" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "::" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "", + "Variable": { + "Type": 108 + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "History" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Before": {}, + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"Katydids Alive\"", + "StringValue": "Katydids Alive" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "]" + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FeatureRequests" + } + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "Before": {}, + "StringValue": "Name" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"art\"", + "StringValue": "art" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZAny": { + "Star": { + "Before": {}, + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "Before": { + "Space": [ + "\n" + ] + }, + "StringValue": "Anatomy" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "$=" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"omen\"", + "StringValue": "omen" + } + } + } + } + } + } + } + } + } + }, + "ExtraSemiColon": { + "Value": ";" + }, + "CloseCurly": { + "Before": {}, + "Value": "}" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/PlaygroundFalse/validator.txt b/validator/tests/json/PlaygroundFalse/validator.txt new file mode 100644 index 0000000..9ecf754 --- /dev/null +++ b/validator/tests/json/PlaygroundFalse/validator.txt @@ -0,0 +1,8 @@ +(.WhatsUp == "F" &.Survived >= 1000000/*years*/ & +.DragonsExist != true & +.MonkeysSmart :: $bool & +.History [*, +_ == "Katydids Alive" +] & +.FeatureRequests._ {Name *= "art";*; +Anatomy $= "omen";}) \ No newline at end of file diff --git a/validator/tests/json/PlaygroundFalse/validator.xml b/validator/tests/json/PlaygroundFalse/validator.xml new file mode 100644 index 0000000..97e46dc --- /dev/null +++ b/validator/tests/json/PlaygroundFalse/validator.xml @@ -0,0 +1,465 @@ + + + + + + ( + + + + + + . + + + + + + WhatsUp + + + + + + + + + + + + == + + + + + + + "F" + F + + + + + + + + + + + + + + + + & + + + + + + + + + + + + + + . + + + + + + Survived + + + + + + + + + + + + >= + + + + + + + 1000000 + 1000000 + + + + + + + + + + + + + + /*years*/ + + + & + + + + + + + + . + + + + + + DragonsExist + + + + + + + + + + + + != + + + + + + + true + true + + + + + + + + + + + + + + + + + + & + + + + + + + + . + + + + + + MonkeysSmart + + + + + + + + + + + + :: + + + + + + + + + + 108 + + + + + + + + + + + + + + + + + + & + + + + + + + + . + + + + + + History + + + + + + + + + + [ + + + + + + * + + + + + , + + + + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "Katydids Alive" + Katydids Alive + + + + + + + + + + + + + + ] + + + + + + + + + + + + + + & + + + + + + + + . + + + + + + FeatureRequests + + + + + + + . + + + + + + + _ + + + + + + + + + + { + + + + + + + Name + + + + + + + + + + + + *= + + + + + + + "art" + art + + + + + + + + + + + ; + + + + + + + + * + + + + + ; + + + + + + + + + Anatomy + + + + + + + + + + + + $= + + + + + + + "omen" + omen + + + + + + + + + + + + + ; + + + + } + + + + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/PlaygroundTrue/valid.json b/validator/tests/json/PlaygroundTrue/valid.json new file mode 100644 index 0000000..2d23104 --- /dev/null +++ b/validator/tests/json/PlaygroundTrue/valid.json @@ -0,0 +1,42 @@ +{ + "DragonsExist": false, + "Family": { + "Class": "Insecta", + "Family": "Tettigoniidae", + "Order": { + "Order": "Orthoptera", + "Superorder": { + "Infraclass": "Polyneoptera", + "Subclass": "Pterygota" + } + }, + "Suborder": "Ensifera" + }, + "FeatureRequests": [ + { + "Anatomy": "Abdomen", + "Name": "Dart", + "Properties": [ + "Poison", + "Projectile" + ] + }, + { + "Anatomy": "Mouth", + "Name": "Fire Breath", + "Properties": [ + "Fire", + "Vapor" + ] + } + ], + "History": [ + "Giant Lizards", + "Meteor", + "Lizards Dead", + "Katydids Alive" + ], + "MonkeysSmart": true, + "Survived": 100000000, + "WhatsUp": "E" +} \ No newline at end of file diff --git a/validator/tests/json/PlaygroundTrue/validator.json b/validator/tests/json/PlaygroundTrue/validator.json new file mode 100644 index 0000000..88bd0dd --- /dev/null +++ b/validator/tests/json/PlaygroundTrue/validator.json @@ -0,0 +1,506 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "WhatsUp" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"E\"", + "StringValue": "E" + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "LeftPattern": { + "And": { + "LeftPattern": { + "And": { + "LeftPattern": { + "And": { + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Survived" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "1000000", + "IntValue": 1000000 + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "/*years*/", + " " + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "DragonsExist" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "!=" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MonkeysSmart" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "::" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "", + "Variable": { + "Type": 108 + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "History" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Before": {}, + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"Katydids Alive\"", + "StringValue": "Katydids Alive" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "]" + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FeatureRequests" + } + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "Before": {}, + "StringValue": "Name" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"art\"", + "StringValue": "art" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZAny": { + "Star": { + "Before": {}, + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "Before": { + "Space": [ + "\n" + ] + }, + "StringValue": "Anatomy" + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "$=" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"omen\"", + "StringValue": "omen" + } + } + } + } + } + } + } + } + } + }, + "ExtraSemiColon": { + "Value": ";" + }, + "CloseCurly": { + "Before": {}, + "Value": "}" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/PlaygroundTrue/validator.txt b/validator/tests/json/PlaygroundTrue/validator.txt new file mode 100644 index 0000000..b6d3331 --- /dev/null +++ b/validator/tests/json/PlaygroundTrue/validator.txt @@ -0,0 +1,8 @@ +(.WhatsUp == "E" &.Survived >= 1000000/*years*/ & +.DragonsExist != true & +.MonkeysSmart :: $bool & +.History [*, +_ == "Katydids Alive" +] & +.FeatureRequests._ {Name *= "art";*; +Anatomy $= "omen";}) \ No newline at end of file diff --git a/validator/tests/json/PlaygroundTrue/validator.xml b/validator/tests/json/PlaygroundTrue/validator.xml new file mode 100644 index 0000000..6d1bcdb --- /dev/null +++ b/validator/tests/json/PlaygroundTrue/validator.xml @@ -0,0 +1,465 @@ + + + + + + ( + + + + + + . + + + + + + WhatsUp + + + + + + + + + + + + == + + + + + + + "E" + E + + + + + + + + + + + + + + + + & + + + + + + + + + + + + + + . + + + + + + Survived + + + + + + + + + + + + >= + + + + + + + 1000000 + 1000000 + + + + + + + + + + + + + + /*years*/ + + + & + + + + + + + + . + + + + + + DragonsExist + + + + + + + + + + + + != + + + + + + + true + true + + + + + + + + + + + + + + + + + + & + + + + + + + + . + + + + + + MonkeysSmart + + + + + + + + + + + + :: + + + + + + + + + + 108 + + + + + + + + + + + + + + + + + + & + + + + + + + + . + + + + + + History + + + + + + + + + + [ + + + + + + * + + + + + , + + + + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "Katydids Alive" + Katydids Alive + + + + + + + + + + + + + + ] + + + + + + + + + + + + + + & + + + + + + + + . + + + + + + FeatureRequests + + + + + + + . + + + + + + + _ + + + + + + + + + + { + + + + + + + Name + + + + + + + + + + + + *= + + + + + + + "art" + art + + + + + + + + + + + ; + + + + + + + + * + + + + + ; + + + + + + + + + Anatomy + + + + + + + + + + + + $= + + + + + + + "omen" + omen + + + + + + + + + + + + + ; + + + + } + + + + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonDavid/invalid.json b/validator/tests/json/ProperNotNamePersonDavid/invalid.json new file mode 100644 index 0000000..0f78c7c --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonDavid/invalid.json @@ -0,0 +1,14 @@ +{ + "Name": "David", + "Addresses": [ + { + "Number": 123, + "Street": "TheStreet" + }, + { + "Number": 456, + "Street": "SomeStreet" + } + ], + "Telephone": "0123456789" +} \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonDavid/validator.json b/validator/tests/json/ProperNotNamePersonDavid/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonDavid/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonDavid/validator.txt b/validator/tests/json/ProperNotNamePersonDavid/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonDavid/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonDavid/validator.xml b/validator/tests/json/ProperNotNamePersonDavid/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonDavid/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonNoname/valid.json b/validator/tests/json/ProperNotNamePersonNoname/valid.json new file mode 100644 index 0000000..372cf9a --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonNoname/valid.json @@ -0,0 +1,9 @@ +{ + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonNoname/validator.json b/validator/tests/json/ProperNotNamePersonNoname/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonNoname/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonNoname/validator.txt b/validator/tests/json/ProperNotNamePersonNoname/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonNoname/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonNoname/validator.xml b/validator/tests/json/ProperNotNamePersonNoname/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonNoname/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonRobert/valid.json b/validator/tests/json/ProperNotNamePersonRobert/valid.json new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonRobert/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonRobert/validator.json b/validator/tests/json/ProperNotNamePersonRobert/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonRobert/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonRobert/validator.txt b/validator/tests/json/ProperNotNamePersonRobert/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonRobert/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonRobert/validator.xml b/validator/tests/json/ProperNotNamePersonRobert/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonRobert/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonSmith/valid.json b/validator/tests/json/ProperNotNamePersonSmith/valid.json new file mode 100644 index 0000000..d92f954 --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonSmith/valid.json @@ -0,0 +1,10 @@ +{ + "Name": "", + "Addresses": [ + { + "Number": 1, + "Street": "SomeStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonSmith/validator.json b/validator/tests/json/ProperNotNamePersonSmith/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonSmith/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonSmith/validator.txt b/validator/tests/json/ProperNotNamePersonSmith/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonSmith/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/json/ProperNotNamePersonSmith/validator.xml b/validator/tests/json/ProperNotNamePersonSmith/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/json/ProperNotNamePersonSmith/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/PuddingMilkShakeNotAny1/invalid.json b/validator/tests/json/PuddingMilkShakeNotAny1/invalid.json new file mode 100644 index 0000000..704943c --- /dev/null +++ b/validator/tests/json/PuddingMilkShakeNotAny1/invalid.json @@ -0,0 +1,14 @@ +{ + "FinanceJudo": { + "SaladWorry": { + "SpyCarpenter": { + "BridgePepper": [ + "isHOrIGyoLbdXZ9a4t4abCuoFvDpXvxgscJQYRGZ6u" + ], + "FountainTarget": [ + "oqqST33HqlR5s30O61mPwPnXGrwM5AIRWwDQ1YDPZcr8iP56B7AFwemBq1MfsNojkOAPlkt58RuaNn7pTgV66TSpp" + ] + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/PuddingMilkShakeNotAny1/validator.json b/validator/tests/json/PuddingMilkShakeNotAny1/validator.json new file mode 100644 index 0000000..46bca96 --- /dev/null +++ b/validator/tests/json/PuddingMilkShakeNotAny1/validator.json @@ -0,0 +1,621 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FinanceJudo" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SpyCarpenter" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.ddddddd~\"", + "StringValue": "mmm.ddddddd~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.ddddddd~\"", + "StringValue": "mmm.ddddddd~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/PuddingMilkShakeNotAny1/validator.txt b/validator/tests/json/PuddingMilkShakeNotAny1/validator.txt new file mode 100644 index 0000000..79ffb2c --- /dev/null +++ b/validator/tests/json/PuddingMilkShakeNotAny1/validator.txt @@ -0,0 +1,11 @@ +.FinanceJudo:.SaladWorry:.SpyCarpenter:((((.BridgePepper:!(._ == "aaaaaaaa@mm~") +& +.FountainTarget:!(._ == "aaaaaaaa@mm~")) +& +.BridgePepper:!(._ == "bbbbbbb@~")) +& +.FountainTarget:!(._ == "bbbbbbb@~")) +& +(.BridgePepper:._ == "mmm.ddddddd~" +| +.FountainTarget:._ == "mmm.ddddddd~")) \ No newline at end of file diff --git a/validator/tests/json/PuddingMilkShakeNotAny1/validator.xml b/validator/tests/json/PuddingMilkShakeNotAny1/validator.xml new file mode 100644 index 0000000..bc4c01c --- /dev/null +++ b/validator/tests/json/PuddingMilkShakeNotAny1/validator.xml @@ -0,0 +1,592 @@ + + + + + . + + + + + + FinanceJudo + + + + + : + + + + + . + + + + + + SaladWorry + + + + + : + + + + + . + + + + + + SpyCarpenter + + + + + : + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.ddddddd~" + mmm.ddddddd~ + + + + + + + + + + + + + + + + + + + + | + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.ddddddd~" + mmm.ddddddd~ + + + + + + + + + + + + + + + + + + ) + + + + + + ) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/PuddingMilkShakeNotAny2/invalid.json b/validator/tests/json/PuddingMilkShakeNotAny2/invalid.json new file mode 100644 index 0000000..704943c --- /dev/null +++ b/validator/tests/json/PuddingMilkShakeNotAny2/invalid.json @@ -0,0 +1,14 @@ +{ + "FinanceJudo": { + "SaladWorry": { + "SpyCarpenter": { + "BridgePepper": [ + "isHOrIGyoLbdXZ9a4t4abCuoFvDpXvxgscJQYRGZ6u" + ], + "FountainTarget": [ + "oqqST33HqlR5s30O61mPwPnXGrwM5AIRWwDQ1YDPZcr8iP56B7AFwemBq1MfsNojkOAPlkt58RuaNn7pTgV66TSpp" + ] + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/PuddingMilkShakeNotAny2/validator.json b/validator/tests/json/PuddingMilkShakeNotAny2/validator.json new file mode 100644 index 0000000..0f24c6f --- /dev/null +++ b/validator/tests/json/PuddingMilkShakeNotAny2/validator.json @@ -0,0 +1,621 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FinanceJudo" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SpyCarpenter" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~\"", + "StringValue": "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~\"", + "StringValue": "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/PuddingMilkShakeNotAny2/validator.txt b/validator/tests/json/PuddingMilkShakeNotAny2/validator.txt new file mode 100644 index 0000000..23e9e80 --- /dev/null +++ b/validator/tests/json/PuddingMilkShakeNotAny2/validator.txt @@ -0,0 +1,11 @@ +.FinanceJudo:.SaladWorry:.SpyCarpenter:((((.BridgePepper:!(._ == "aaaaaaaa@mm~") +& +.FountainTarget:!(._ == "aaaaaaaa@mm~")) +& +.BridgePepper:!(._ == "bbbbbbb@~")) +& +.FountainTarget:!(._ == "bbbbbbb@~")) +& +(.BridgePepper:._ == "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" +| +.FountainTarget:._ == "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~")) \ No newline at end of file diff --git a/validator/tests/json/PuddingMilkShakeNotAny2/validator.xml b/validator/tests/json/PuddingMilkShakeNotAny2/validator.xml new file mode 100644 index 0000000..af1c45c --- /dev/null +++ b/validator/tests/json/PuddingMilkShakeNotAny2/validator.xml @@ -0,0 +1,592 @@ + + + + + . + + + + + + FinanceJudo + + + + + : + + + + + . + + + + + + SaladWorry + + + + + : + + + + + . + + + + + + SpyCarpenter + + + + + : + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~ + + + + + + + + + + + + + + + + + + + + | + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~ + + + + + + + + + + + + + + + + + + ) + + + + + + ) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/RecursiveElbowBightTurn/invalid.json b/validator/tests/json/RecursiveElbowBightTurn/invalid.json new file mode 100644 index 0000000..81232a1 --- /dev/null +++ b/validator/tests/json/RecursiveElbowBightTurn/invalid.json @@ -0,0 +1,7 @@ +{ + "Bight": [ + { + "Turn": true + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveElbowBightTurn/validator.json b/validator/tests/json/RecursiveElbowBightTurn/validator.json new file mode 100644 index 0000000..c510659 --- /dev/null +++ b/validator/tests/json/RecursiveElbowBightTurn/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveElbowBightTurn/validator.txt b/validator/tests/json/RecursiveElbowBightTurn/validator.txt new file mode 100644 index 0000000..6577fcc --- /dev/null +++ b/validator/tests/json/RecursiveElbowBightTurn/validator.txt @@ -0,0 +1 @@ +(_:@main|Elbow:==true) \ No newline at end of file diff --git a/validator/tests/json/RecursiveElbowBightTurn/validator.xml b/validator/tests/json/RecursiveElbowBightTurn/validator.xml new file mode 100644 index 0000000..a9b0079 --- /dev/null +++ b/validator/tests/json/RecursiveElbowBightTurn/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/RecursiveElbowKnotKnotElbow/valid.json b/validator/tests/json/RecursiveElbowKnotKnotElbow/valid.json new file mode 100644 index 0000000..65e7eb6 --- /dev/null +++ b/validator/tests/json/RecursiveElbowKnotKnotElbow/valid.json @@ -0,0 +1,7 @@ +{ + "BitterEnd": { + "BitterEnd": { + "Elbow": true + } + } +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveElbowKnotKnotElbow/validator.json b/validator/tests/json/RecursiveElbowKnotKnotElbow/validator.json new file mode 100644 index 0000000..c510659 --- /dev/null +++ b/validator/tests/json/RecursiveElbowKnotKnotElbow/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveElbowKnotKnotElbow/validator.txt b/validator/tests/json/RecursiveElbowKnotKnotElbow/validator.txt new file mode 100644 index 0000000..6577fcc --- /dev/null +++ b/validator/tests/json/RecursiveElbowKnotKnotElbow/validator.txt @@ -0,0 +1 @@ +(_:@main|Elbow:==true) \ No newline at end of file diff --git a/validator/tests/json/RecursiveElbowKnotKnotElbow/validator.xml b/validator/tests/json/RecursiveElbowKnotKnotElbow/validator.xml new file mode 100644 index 0000000..a9b0079 --- /dev/null +++ b/validator/tests/json/RecursiveElbowKnotKnotElbow/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/RecursiveIoUtil/valid.json b/validator/tests/json/RecursiveIoUtil/valid.json new file mode 100644 index 0000000..4f6fc32 --- /dev/null +++ b/validator/tests/json/RecursiveIoUtil/valid.json @@ -0,0 +1,30 @@ +{ + "PackageName": "io/ioutil", + "Imports": [ + { + "PackageName": "io", + "Imports": [ + { + "PackageName": "errors" + }, + { + "PackageName": "sync" + } + ] + }, + { + "PackageName": "os", + "Imports": [ + { + "PackageName": "errors" + }, + { + "PackageName": "io" + }, + { + "PackageName": "runtime" + } + ] + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveIoUtil/validator.json b/validator/tests/json/RecursiveIoUtil/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/json/RecursiveIoUtil/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveIoUtil/validator.txt b/validator/tests/json/RecursiveIoUtil/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/json/RecursiveIoUtil/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/json/RecursiveIoUtil/validator.xml b/validator/tests/json/RecursiveIoUtil/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/json/RecursiveIoUtil/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/RecursivePath/valid.json b/validator/tests/json/RecursivePath/valid.json new file mode 100644 index 0000000..4fd8f8e --- /dev/null +++ b/validator/tests/json/RecursivePath/valid.json @@ -0,0 +1,28 @@ +{ + "PackageName": "path", + "Imports": [ + { + "PackageName": "errors" + }, + { + "PackageName": "strings", + "Imports": [ + { + "PackageName": "errors" + }, + { + "PackageName": "io" + }, + { + "PackageName": "uncode" + }, + { + "PackageName": "uncode/utf8" + } + ] + }, + { + "PackageName": "unicode/utf8" + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/RecursivePath/validator.json b/validator/tests/json/RecursivePath/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/json/RecursivePath/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/RecursivePath/validator.txt b/validator/tests/json/RecursivePath/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/json/RecursivePath/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/json/RecursivePath/validator.xml b/validator/tests/json/RecursivePath/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/json/RecursivePath/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/RecursiveRuntime/invalid.json b/validator/tests/json/RecursiveRuntime/invalid.json new file mode 100644 index 0000000..02111e4 --- /dev/null +++ b/validator/tests/json/RecursiveRuntime/invalid.json @@ -0,0 +1,8 @@ +{ + "PackageName": "runtime", + "Imports": [ + { + "PackageName": "unsafe" + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveRuntime/validator.json b/validator/tests/json/RecursiveRuntime/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/json/RecursiveRuntime/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveRuntime/validator.txt b/validator/tests/json/RecursiveRuntime/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/json/RecursiveRuntime/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/json/RecursiveRuntime/validator.xml b/validator/tests/json/RecursiveRuntime/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/json/RecursiveRuntime/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/RecursiveSyscall/invalid.json b/validator/tests/json/RecursiveSyscall/invalid.json new file mode 100644 index 0000000..ee161ad --- /dev/null +++ b/validator/tests/json/RecursiveSyscall/invalid.json @@ -0,0 +1,25 @@ +{ + "PackageName": "syscall", + "Imports": [ + { + "PackageName": "errors" + }, + { + "PackageName": "runtime" + }, + { + "PackageName": "sync", + "Imports": [ + { + "PackageName": "sync/atomic" + }, + { + "PackageName": "unsafe" + } + ] + }, + { + "PackageName": "unsafe" + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveSyscall/validator.json b/validator/tests/json/RecursiveSyscall/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/json/RecursiveSyscall/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveSyscall/validator.txt b/validator/tests/json/RecursiveSyscall/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/json/RecursiveSyscall/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/json/RecursiveSyscall/validator.xml b/validator/tests/json/RecursiveSyscall/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/json/RecursiveSyscall/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/RecursiveTurnBightTurn/valid.json b/validator/tests/json/RecursiveTurnBightTurn/valid.json new file mode 100644 index 0000000..81232a1 --- /dev/null +++ b/validator/tests/json/RecursiveTurnBightTurn/valid.json @@ -0,0 +1,7 @@ +{ + "Bight": [ + { + "Turn": true + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveTurnBightTurn/validator.json b/validator/tests/json/RecursiveTurnBightTurn/validator.json new file mode 100644 index 0000000..924218a --- /dev/null +++ b/validator/tests/json/RecursiveTurnBightTurn/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Turn" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveTurnBightTurn/validator.txt b/validator/tests/json/RecursiveTurnBightTurn/validator.txt new file mode 100644 index 0000000..d77055d --- /dev/null +++ b/validator/tests/json/RecursiveTurnBightTurn/validator.txt @@ -0,0 +1 @@ +(_:@main|Turn:==true) \ No newline at end of file diff --git a/validator/tests/json/RecursiveTurnBightTurn/validator.xml b/validator/tests/json/RecursiveTurnBightTurn/validator.xml new file mode 100644 index 0000000..7560d3e --- /dev/null +++ b/validator/tests/json/RecursiveTurnBightTurn/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Turn + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/RecursiveTurnKnotKnotElbow/invalid.json b/validator/tests/json/RecursiveTurnKnotKnotElbow/invalid.json new file mode 100644 index 0000000..65e7eb6 --- /dev/null +++ b/validator/tests/json/RecursiveTurnKnotKnotElbow/invalid.json @@ -0,0 +1,7 @@ +{ + "BitterEnd": { + "BitterEnd": { + "Elbow": true + } + } +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveTurnKnotKnotElbow/validator.json b/validator/tests/json/RecursiveTurnKnotKnotElbow/validator.json new file mode 100644 index 0000000..924218a --- /dev/null +++ b/validator/tests/json/RecursiveTurnKnotKnotElbow/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Turn" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/RecursiveTurnKnotKnotElbow/validator.txt b/validator/tests/json/RecursiveTurnKnotKnotElbow/validator.txt new file mode 100644 index 0000000..d77055d --- /dev/null +++ b/validator/tests/json/RecursiveTurnKnotKnotElbow/validator.txt @@ -0,0 +1 @@ +(_:@main|Turn:==true) \ No newline at end of file diff --git a/validator/tests/json/RecursiveTurnKnotKnotElbow/validator.xml b/validator/tests/json/RecursiveTurnKnotKnotElbow/validator.xml new file mode 100644 index 0000000..7560d3e --- /dev/null +++ b/validator/tests/json/RecursiveTurnKnotKnotElbow/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Turn + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/json/TopTop1/valid.json b/validator/tests/json/TopTop1/valid.json new file mode 100644 index 0000000..3a809ee --- /dev/null +++ b/validator/tests/json/TopTop1/valid.json @@ -0,0 +1,5 @@ +{ + "Top": { + "Top": 1 + } +} \ No newline at end of file diff --git a/validator/tests/json/TopTop1/validator.json b/validator/tests/json/TopTop1/validator.json new file mode 100644 index 0000000..e08d86a --- /dev/null +++ b/validator/tests/json/TopTop1/validator.json @@ -0,0 +1,45 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Top" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/TopTop1/validator.txt b/validator/tests/json/TopTop1/validator.txt new file mode 100644 index 0000000..e80b1c3 --- /dev/null +++ b/validator/tests/json/TopTop1/validator.txt @@ -0,0 +1 @@ +_:Top:==1 \ No newline at end of file diff --git a/validator/tests/json/TopTop1/validator.xml b/validator/tests/json/TopTop1/validator.xml new file mode 100644 index 0000000..cc55623 --- /dev/null +++ b/validator/tests/json/TopTop1/validator.xml @@ -0,0 +1,47 @@ + + + + + + + _ + + + + + : + + + + + + Top + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/TurfTurf1/invalid.json b/validator/tests/json/TurfTurf1/invalid.json new file mode 100644 index 0000000..1f89f7e --- /dev/null +++ b/validator/tests/json/TurfTurf1/invalid.json @@ -0,0 +1,5 @@ +{ + "Turf": { + "Turf": 1 + } +} \ No newline at end of file diff --git a/validator/tests/json/TurfTurf1/validator.json b/validator/tests/json/TurfTurf1/validator.json new file mode 100644 index 0000000..e08d86a --- /dev/null +++ b/validator/tests/json/TurfTurf1/validator.json @@ -0,0 +1,45 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Top" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/TurfTurf1/validator.txt b/validator/tests/json/TurfTurf1/validator.txt new file mode 100644 index 0000000..e80b1c3 --- /dev/null +++ b/validator/tests/json/TurfTurf1/validator.txt @@ -0,0 +1 @@ +_:Top:==1 \ No newline at end of file diff --git a/validator/tests/json/TurfTurf1/validator.xml b/validator/tests/json/TurfTurf1/validator.xml new file mode 100644 index 0000000..cc55623 --- /dev/null +++ b/validator/tests/json/TurfTurf1/validator.xml @@ -0,0 +1,47 @@ + + + + + + + _ + + + + + : + + + + + + Top + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/json/TwoHashes811/valid.json b/validator/tests/json/TwoHashes811/valid.json new file mode 100644 index 0000000..285bdcc --- /dev/null +++ b/validator/tests/json/TwoHashes811/valid.json @@ -0,0 +1,14 @@ +{ + "A": { + "Left": { + "A": { + "Value": "#" + } + }, + "Right": { + "A": { + "Value": "#" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/TwoHashes811/validator.json b/validator/tests/json/TwoHashes811/validator.json new file mode 100644 index 0000000..5a1076d --- /dev/null +++ b/validator/tests/json/TwoHashes811/validator.json @@ -0,0 +1,314 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "q1", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "q2", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Value" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"#\"", + "StringValue": "#" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/TwoHashes811/validator.txt b/validator/tests/json/TwoHashes811/validator.txt new file mode 100644 index 0000000..ce43695 --- /dev/null +++ b/validator/tests/json/TwoHashes811/validator.txt @@ -0,0 +1,3 @@ +(@q1|@q2) +#q1=(A[Left:@q1,Right:@q2]|A[Left:@q1,Right:@q1]) +#q2=(A[Left:@q2,Right:@q2]|A:Value:=="#") \ No newline at end of file diff --git a/validator/tests/json/TwoHashes811/validator.xml b/validator/tests/json/TwoHashes811/validator.xml new file mode 100644 index 0000000..c10e930 --- /dev/null +++ b/validator/tests/json/TwoHashes811/validator.xml @@ -0,0 +1,320 @@ + + + + + ( + + + + + @ + + q1 + + + + | + + + + + @ + + q2 + + + + ) + + + + + + + + + # + + q1 + + = + + + + + ( + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q1 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q2 + + + + + + ] + + + + + + + | + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q1 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q1 + + + + + + ] + + + + + + + ) + + + + + + + + + + # + + q2 + + = + + + + + ( + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q2 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q2 + + + + + + ] + + + + + + + | + + + + + + A + + + + + : + + + + + + Value + + + + + : + + + + + + + == + + + + "#" + # + + + + + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/TwoLeftAndOneRightHashes811/valid.json b/validator/tests/json/TwoLeftAndOneRightHashes811/valid.json new file mode 100644 index 0000000..09b22a0 --- /dev/null +++ b/validator/tests/json/TwoLeftAndOneRightHashes811/valid.json @@ -0,0 +1,23 @@ +{ + "A": { + "Left": { + "A": { + "Left": { + "A": { + "Value": "#" + } + }, + "Right": { + "A": { + "Value": "#" + } + } + } + }, + "Right": { + "A": { + "Value": "#" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/TwoLeftAndOneRightHashes811/validator.json b/validator/tests/json/TwoLeftAndOneRightHashes811/validator.json new file mode 100644 index 0000000..5a1076d --- /dev/null +++ b/validator/tests/json/TwoLeftAndOneRightHashes811/validator.json @@ -0,0 +1,314 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "q1", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q1" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "q2", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Left" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Right" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "q2" + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Value" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"#\"", + "StringValue": "#" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/json/TwoLeftAndOneRightHashes811/validator.txt b/validator/tests/json/TwoLeftAndOneRightHashes811/validator.txt new file mode 100644 index 0000000..ce43695 --- /dev/null +++ b/validator/tests/json/TwoLeftAndOneRightHashes811/validator.txt @@ -0,0 +1,3 @@ +(@q1|@q2) +#q1=(A[Left:@q1,Right:@q2]|A[Left:@q1,Right:@q1]) +#q2=(A[Left:@q2,Right:@q2]|A:Value:=="#") \ No newline at end of file diff --git a/validator/tests/json/TwoLeftAndOneRightHashes811/validator.xml b/validator/tests/json/TwoLeftAndOneRightHashes811/validator.xml new file mode 100644 index 0000000..c10e930 --- /dev/null +++ b/validator/tests/json/TwoLeftAndOneRightHashes811/validator.xml @@ -0,0 +1,320 @@ + + + + + ( + + + + + @ + + q1 + + + + | + + + + + @ + + q2 + + + + ) + + + + + + + + + # + + q1 + + = + + + + + ( + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q1 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q2 + + + + + + ] + + + + + + + | + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q1 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q1 + + + + + + ] + + + + + + + ) + + + + + + + + + + # + + q2 + + = + + + + + ( + + + + + + A + + + + + + + [ + + + + + + Left + + + + + : + + + + + @ + + q2 + + + + + + , + + + + + + Right + + + + + : + + + + + @ + + q2 + + + + + + ] + + + + + + + | + + + + + + A + + + + + : + + + + + + Value + + + + + : + + + + + + + == + + + + "#" + # + + + + + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/json/WrongTypeRobert/invalid.json b/validator/tests/json/WrongTypeRobert/invalid.json new file mode 100644 index 0000000..81496f7 --- /dev/null +++ b/validator/tests/json/WrongTypeRobert/invalid.json @@ -0,0 +1,10 @@ +{ + "Name": "Robert", + "Addresses": [ + { + "Number": 456, + "Street": "TheStreet" + } + ], + "Telephone": "0127897897" +} \ No newline at end of file diff --git a/validator/tests/json/WrongTypeRobert/validator.json b/validator/tests/json/WrongTypeRobert/validator.json new file mode 100644 index 0000000..459bfd0 --- /dev/null +++ b/validator/tests/json/WrongTypeRobert/validator.json @@ -0,0 +1,62 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "type", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 103 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/json/WrongTypeRobert/validator.txt b/validator/tests/json/WrongTypeRobert/validator.txt new file mode 100644 index 0000000..e18bb10 --- /dev/null +++ b/validator/tests/json/WrongTypeRobert/validator.txt @@ -0,0 +1 @@ +[Name:->type($int),*] \ No newline at end of file diff --git a/validator/tests/json/WrongTypeRobert/validator.xml b/validator/tests/json/WrongTypeRobert/validator.xml new file mode 100644 index 0000000..3755a08 --- /dev/null +++ b/validator/tests/json/WrongTypeRobert/validator.xml @@ -0,0 +1,62 @@ + + + + + [ + + + + + + Name + + + + + : + + + + + + -> + + + type + + ( + + + + + + + 103 + + + + + ) + + + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/APocketRoses/valid.main.PocketRoses.desc.pb b/validator/tests/pb/APocketRoses/valid.main.PocketRoses.desc.pb new file mode 100644 index 0000000..91a35ff --- /dev/null +++ b/validator/tests/pb/APocketRoses/valid.main.PocketRoses.desc.pb @@ -0,0 +1 @@ +BaBbBc \ No newline at end of file diff --git a/validator/tests/pb/APocketRoses/validator.json b/validator/tests/pb/APocketRoses/validator.json new file mode 100644 index 0000000..3c6c513 --- /dev/null +++ b/validator/tests/pb/APocketRoses/validator.json @@ -0,0 +1,60 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/APocketRoses/validator.txt b/validator/tests/pb/APocketRoses/validator.txt new file mode 100644 index 0000000..35ec025 --- /dev/null +++ b/validator/tests/pb/APocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[0:=="a",*] \ No newline at end of file diff --git a/validator/tests/pb/APocketRoses/validator.xml b/validator/tests/pb/APocketRoses/validator.xml new file mode 100644 index 0000000..f8538ba --- /dev/null +++ b/validator/tests/pb/APocketRoses/validator.xml @@ -0,0 +1,63 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 0 + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/Ab21Any/valid.main.FinanceJudo.desc.pb b/validator/tests/pb/Ab21Any/valid.main.FinanceJudo.desc.pb new file mode 100644 index 0000000..55fd5e5 --- /dev/null +++ b/validator/tests/pb/Ab21Any/valid.main.FinanceJudo.desc.pb @@ -0,0 +1,3 @@ + + +ab" \ No newline at end of file diff --git a/validator/tests/pb/Ab21Any/validator.json b/validator/tests/pb/Ab21Any/validator.json new file mode 100644 index 0000000..26141ef --- /dev/null +++ b/validator/tests/pb/Ab21Any/validator.json @@ -0,0 +1,9 @@ +{ + "TopPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/Ab21Any/validator.txt b/validator/tests/pb/Ab21Any/validator.txt new file mode 100644 index 0000000..f59ec20 --- /dev/null +++ b/validator/tests/pb/Ab21Any/validator.txt @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/validator/tests/pb/Ab21Any/validator.xml b/validator/tests/pb/Ab21Any/validator.xml new file mode 100644 index 0000000..5a4bee6 --- /dev/null +++ b/validator/tests/pb/Ab21Any/validator.xml @@ -0,0 +1,9 @@ + + + + + * + + + + \ No newline at end of file diff --git a/validator/tests/pb/Ab21InAnyExceptSaladWorry/invalid.main.FinanceJudo.desc.pb b/validator/tests/pb/Ab21InAnyExceptSaladWorry/invalid.main.FinanceJudo.desc.pb new file mode 100644 index 0000000..55fd5e5 --- /dev/null +++ b/validator/tests/pb/Ab21InAnyExceptSaladWorry/invalid.main.FinanceJudo.desc.pb @@ -0,0 +1,3 @@ + + +ab" \ No newline at end of file diff --git a/validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.json b/validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.json new file mode 100644 index 0000000..c0b0161 --- /dev/null +++ b/validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.json @@ -0,0 +1,93 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyNameExcept": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Except": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.txt b/validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.txt new file mode 100644 index 0000000..7011915 --- /dev/null +++ b/validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.txt @@ -0,0 +1 @@ +[!(SaladWorry)[MagazineFrame:=="a",*],*] \ No newline at end of file diff --git a/validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.xml b/validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.xml new file mode 100644 index 0000000..2f05599 --- /dev/null +++ b/validator/tests/pb/Ab21InAnyExceptSaladWorry/validator.xml @@ -0,0 +1,96 @@ + + + + + [ + + + + + + + ! + + + ( + + + + SaladWorry + + + + + ) + + + + + + + [ + + + + + + MagazineFrame + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/Ab21MagazineFrameA/valid.main.FinanceJudo.desc.pb b/validator/tests/pb/Ab21MagazineFrameA/valid.main.FinanceJudo.desc.pb new file mode 100644 index 0000000..55fd5e5 --- /dev/null +++ b/validator/tests/pb/Ab21MagazineFrameA/valid.main.FinanceJudo.desc.pb @@ -0,0 +1,3 @@ + + +ab" \ No newline at end of file diff --git a/validator/tests/pb/Ab21MagazineFrameA/validator.json b/validator/tests/pb/Ab21MagazineFrameA/validator.json new file mode 100644 index 0000000..ffecbd2 --- /dev/null +++ b/validator/tests/pb/Ab21MagazineFrameA/validator.json @@ -0,0 +1,137 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "XrayPilot" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/Ab21MagazineFrameA/validator.txt b/validator/tests/pb/Ab21MagazineFrameA/validator.txt new file mode 100644 index 0000000..433a06e --- /dev/null +++ b/validator/tests/pb/Ab21MagazineFrameA/validator.txt @@ -0,0 +1 @@ +[SaladWorry[MagazineFrame[_:=="a",*],XrayPilot:*,*],*] \ No newline at end of file diff --git a/validator/tests/pb/Ab21MagazineFrameA/validator.xml b/validator/tests/pb/Ab21MagazineFrameA/validator.xml new file mode 100644 index 0000000..e61132e --- /dev/null +++ b/validator/tests/pb/Ab21MagazineFrameA/validator.xml @@ -0,0 +1,141 @@ + + + + + [ + + + + + + SaladWorry + + + + + + + [ + + + + + + MagazineFrame + + + + + + + [ + + + + + + + _ + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + + + + XrayPilot + + + + + : + + + + + * + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/Ab21MagazineFrameSingleA/invalid.main.FinanceJudo.desc.pb b/validator/tests/pb/Ab21MagazineFrameSingleA/invalid.main.FinanceJudo.desc.pb new file mode 100644 index 0000000..55fd5e5 --- /dev/null +++ b/validator/tests/pb/Ab21MagazineFrameSingleA/invalid.main.FinanceJudo.desc.pb @@ -0,0 +1,3 @@ + + +ab" \ No newline at end of file diff --git a/validator/tests/pb/Ab21MagazineFrameSingleA/validator.json b/validator/tests/pb/Ab21MagazineFrameSingleA/validator.json new file mode 100644 index 0000000..1dc80f8 --- /dev/null +++ b/validator/tests/pb/Ab21MagazineFrameSingleA/validator.json @@ -0,0 +1,106 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "XrayPilot" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/Ab21MagazineFrameSingleA/validator.txt b/validator/tests/pb/Ab21MagazineFrameSingleA/validator.txt new file mode 100644 index 0000000..42505c9 --- /dev/null +++ b/validator/tests/pb/Ab21MagazineFrameSingleA/validator.txt @@ -0,0 +1 @@ +[SaladWorry[MagazineFrame:=="a",XrayPilot:*,*],*] \ No newline at end of file diff --git a/validator/tests/pb/Ab21MagazineFrameSingleA/validator.xml b/validator/tests/pb/Ab21MagazineFrameSingleA/validator.xml new file mode 100644 index 0000000..9bca86a --- /dev/null +++ b/validator/tests/pb/Ab21MagazineFrameSingleA/validator.xml @@ -0,0 +1,110 @@ + + + + + [ + + + + + + SaladWorry + + + + + + + [ + + + + + + MagazineFrame + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + + + + XrayPilot + + + + + : + + + + + * + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/Ab21None/invalid.main.FinanceJudo.desc.pb b/validator/tests/pb/Ab21None/invalid.main.FinanceJudo.desc.pb new file mode 100644 index 0000000..55fd5e5 --- /dev/null +++ b/validator/tests/pb/Ab21None/invalid.main.FinanceJudo.desc.pb @@ -0,0 +1,3 @@ + + +ab" \ No newline at end of file diff --git a/validator/tests/pb/Ab21None/validator.json b/validator/tests/pb/Ab21None/validator.json new file mode 100644 index 0000000..ce003a2 --- /dev/null +++ b/validator/tests/pb/Ab21None/validator.json @@ -0,0 +1,22 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/Ab21None/validator.txt b/validator/tests/pb/Ab21None/validator.txt new file mode 100644 index 0000000..7fd4f6c --- /dev/null +++ b/validator/tests/pb/Ab21None/validator.txt @@ -0,0 +1 @@ +!(*) \ No newline at end of file diff --git a/validator/tests/pb/Ab21None/validator.xml b/validator/tests/pb/Ab21None/validator.xml new file mode 100644 index 0000000..187533d --- /dev/null +++ b/validator/tests/pb/Ab21None/validator.xml @@ -0,0 +1,22 @@ + + + + + ! + + + ( + + + + + * + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/Ab21NotAFieldName/valid.main.FinanceJudo.desc.pb b/validator/tests/pb/Ab21NotAFieldName/valid.main.FinanceJudo.desc.pb new file mode 100644 index 0000000..55fd5e5 --- /dev/null +++ b/validator/tests/pb/Ab21NotAFieldName/valid.main.FinanceJudo.desc.pb @@ -0,0 +1,3 @@ + + +ab" \ No newline at end of file diff --git a/validator/tests/pb/Ab21NotAFieldName/validator.json b/validator/tests/pb/Ab21NotAFieldName/validator.json new file mode 100644 index 0000000..257c80a --- /dev/null +++ b/validator/tests/pb/Ab21NotAFieldName/validator.json @@ -0,0 +1,124 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyNameExcept": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Except": { + "Name": { + "StringValue": "NotAFieldName" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MagazineFrame" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/Ab21NotAFieldName/validator.txt b/validator/tests/pb/Ab21NotAFieldName/validator.txt new file mode 100644 index 0000000..632e4a9 --- /dev/null +++ b/validator/tests/pb/Ab21NotAFieldName/validator.txt @@ -0,0 +1 @@ +[!(NotAFieldName)[MagazineFrame[_:=="a",*],*],*] \ No newline at end of file diff --git a/validator/tests/pb/Ab21NotAFieldName/validator.xml b/validator/tests/pb/Ab21NotAFieldName/validator.xml new file mode 100644 index 0000000..ddfea72 --- /dev/null +++ b/validator/tests/pb/Ab21NotAFieldName/validator.xml @@ -0,0 +1,127 @@ + + + + + [ + + + + + + + ! + + + ( + + + + NotAFieldName + + + + + ) + + + + + + + [ + + + + + + MagazineFrame + + + + + + + [ + + + + + + + _ + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/Ab21Spirit1/valid.main.FinanceJudo.desc.pb b/validator/tests/pb/Ab21Spirit1/valid.main.FinanceJudo.desc.pb new file mode 100644 index 0000000..55fd5e5 --- /dev/null +++ b/validator/tests/pb/Ab21Spirit1/valid.main.FinanceJudo.desc.pb @@ -0,0 +1,3 @@ + + +ab" \ No newline at end of file diff --git a/validator/tests/pb/Ab21Spirit1/validator.json b/validator/tests/pb/Ab21Spirit1/validator.json new file mode 100644 index 0000000..c66d5ea --- /dev/null +++ b/validator/tests/pb/Ab21Spirit1/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "spirit" + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "spirit", + "Eq": { + "Value": "=" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "RumourSpirit" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/Ab21Spirit1/validator.txt b/validator/tests/pb/Ab21Spirit1/validator.txt new file mode 100644 index 0000000..33a0c16 --- /dev/null +++ b/validator/tests/pb/Ab21Spirit1/validator.txt @@ -0,0 +1,2 @@ +[*,@spirit,*] +#spirit=RumourSpirit:==1 \ No newline at end of file diff --git a/validator/tests/pb/Ab21Spirit1/validator.xml b/validator/tests/pb/Ab21Spirit1/validator.xml new file mode 100644 index 0000000..84cdbcc --- /dev/null +++ b/validator/tests/pb/Ab21Spirit1/validator.xml @@ -0,0 +1,87 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + @ + + spirit + + + + , + + + + + * + + + + + + + ] + + + + + + + + + # + + spirit + + = + + + + + + RumourSpirit + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/Ab21Spirit2/invalid.main.FinanceJudo.desc.pb b/validator/tests/pb/Ab21Spirit2/invalid.main.FinanceJudo.desc.pb new file mode 100644 index 0000000..55fd5e5 --- /dev/null +++ b/validator/tests/pb/Ab21Spirit2/invalid.main.FinanceJudo.desc.pb @@ -0,0 +1,3 @@ + + +ab" \ No newline at end of file diff --git a/validator/tests/pb/Ab21Spirit2/validator.json b/validator/tests/pb/Ab21Spirit2/validator.json new file mode 100644 index 0000000..7f87012 --- /dev/null +++ b/validator/tests/pb/Ab21Spirit2/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "spirit" + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "spirit", + "Eq": { + "Value": "=" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "RumourSpirit" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/Ab21Spirit2/validator.txt b/validator/tests/pb/Ab21Spirit2/validator.txt new file mode 100644 index 0000000..4ea85ac --- /dev/null +++ b/validator/tests/pb/Ab21Spirit2/validator.txt @@ -0,0 +1,2 @@ +[*,@spirit,*] +#spirit=RumourSpirit:==2 \ No newline at end of file diff --git a/validator/tests/pb/Ab21Spirit2/validator.xml b/validator/tests/pb/Ab21Spirit2/validator.xml new file mode 100644 index 0000000..c5dd97b --- /dev/null +++ b/validator/tests/pb/Ab21Spirit2/validator.xml @@ -0,0 +1,87 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + @ + + spirit + + + + , + + + + + * + + + + + + + ] + + + + + + + + + # + + spirit + + = + + + + + + RumourSpirit + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/AbcPocketRoses/valid.main.PocketRoses.desc.pb b/validator/tests/pb/AbcPocketRoses/valid.main.PocketRoses.desc.pb new file mode 100644 index 0000000..91a35ff --- /dev/null +++ b/validator/tests/pb/AbcPocketRoses/valid.main.PocketRoses.desc.pb @@ -0,0 +1 @@ +BaBbBc \ No newline at end of file diff --git a/validator/tests/pb/AbcPocketRoses/validator.json b/validator/tests/pb/AbcPocketRoses/validator.json new file mode 100644 index 0000000..26822cb --- /dev/null +++ b/validator/tests/pb/AbcPocketRoses/validator.json @@ -0,0 +1,118 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 1 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 2 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/AbcPocketRoses/validator.txt b/validator/tests/pb/AbcPocketRoses/validator.txt new file mode 100644 index 0000000..67a8552 --- /dev/null +++ b/validator/tests/pb/AbcPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[0:=="a",1:=="b",2:=="c"] \ No newline at end of file diff --git a/validator/tests/pb/AbcPocketRoses/validator.xml b/validator/tests/pb/AbcPocketRoses/validator.xml new file mode 100644 index 0000000..6c0b4d3 --- /dev/null +++ b/validator/tests/pb/AbcPocketRoses/validator.xml @@ -0,0 +1,125 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 0 + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + + + + 1 + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + , + + + + + + 2 + + + + + : + + + + + + + == + + + + "c" + c + + + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/AndAnyName/valid.main.Person.desc.pb b/validator/tests/pb/AndAnyName/valid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/AndAnyName/valid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/AndAnyName/validator.json b/validator/tests/pb/AndAnyName/validator.json new file mode 100644 index 0000000..740f182 --- /dev/null +++ b/validator/tests/pb/AndAnyName/validator.json @@ -0,0 +1,91 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/AndAnyName/validator.txt b/validator/tests/pb/AndAnyName/validator.txt new file mode 100644 index 0000000..4a47959 --- /dev/null +++ b/validator/tests/pb/AndAnyName/validator.txt @@ -0,0 +1 @@ +(._:=="0123456789"&._:=="David") \ No newline at end of file diff --git a/validator/tests/pb/AndAnyName/validator.xml b/validator/tests/pb/AndAnyName/validator.xml new file mode 100644 index 0000000..8154dd6 --- /dev/null +++ b/validator/tests/pb/AndAnyName/validator.xml @@ -0,0 +1,93 @@ + + + + + ( + + + + + . + + + + + + + _ + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + & + + + + + . + + + + + + + _ + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneDavid/valid.main.Person.desc.pb b/validator/tests/pb/AndNameTelephoneDavid/valid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneDavid/valid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneDavid/validator.json b/validator/tests/pb/AndNameTelephoneDavid/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneDavid/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneDavid/validator.txt b/validator/tests/pb/AndNameTelephoneDavid/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneDavid/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneDavid/validator.xml b/validator/tests/pb/AndNameTelephoneDavid/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneDavid/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneJohn/invalid.main.Person.desc.pb b/validator/tests/pb/AndNameTelephoneJohn/invalid.main.Person.desc.pb new file mode 100644 index 0000000..4463814 --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneJohn/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +John +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneJohn/validator.json b/validator/tests/pb/AndNameTelephoneJohn/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneJohn/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneJohn/validator.txt b/validator/tests/pb/AndNameTelephoneJohn/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneJohn/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneJohn/validator.xml b/validator/tests/pb/AndNameTelephoneJohn/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneJohn/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneMover/invalid.main.Person.desc.pb b/validator/tests/pb/AndNameTelephoneMover/invalid.main.Person.desc.pb new file mode 100644 index 0000000..6c27ec6 --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneMover/invalid.main.Person.desc.pb @@ -0,0 +1,8 @@ + +Mover { TheStreet +SomeStreet +SomeStreet +SomeStreet +SomeStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneMover/validator.json b/validator/tests/pb/AndNameTelephoneMover/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneMover/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneMover/validator.txt b/validator/tests/pb/AndNameTelephoneMover/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneMover/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneMover/validator.xml b/validator/tests/pb/AndNameTelephoneMover/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneMover/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneSmith/invalid.main.Person.desc.pb b/validator/tests/pb/AndNameTelephoneSmith/invalid.main.Person.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..2ecf2a7293ae76e0b20bd820ebe46b39d8479846 GIT binary patch literal 30 icmd;L5aQ!t6ygfb&rJ<3DN0Q(k>WBiG%~la1R(%hWCoc4 literal 0 HcmV?d00001 diff --git a/validator/tests/pb/AndNameTelephoneSmith/validator.json b/validator/tests/pb/AndNameTelephoneSmith/validator.json new file mode 100644 index 0000000..de6a45d --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneSmith/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneSmith/validator.txt b/validator/tests/pb/AndNameTelephoneSmith/validator.txt new file mode 100644 index 0000000..9989078 --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneSmith/validator.txt @@ -0,0 +1 @@ +([*,Name:=="David",*]&[*,Telephone:=="0123456789",*]) \ No newline at end of file diff --git a/validator/tests/pb/AndNameTelephoneSmith/validator.xml b/validator/tests/pb/AndNameTelephoneSmith/validator.xml new file mode 100644 index 0000000..0bc01bb --- /dev/null +++ b/validator/tests/pb/AndNameTelephoneSmith/validator.xml @@ -0,0 +1,145 @@ + + + + + ( + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/BananaLargeMatch/valid.main.BananaTuple.desc.pb b/validator/tests/pb/BananaLargeMatch/valid.main.BananaTuple.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..3f35d00cfc0dc7811c90eced91e4261f5f504257 GIT binary patch literal 152 zcmd<+>%YBm`t`NTyBLK`^1Q;zGO{wNQYsC~6MZ8>ozhB*i!72;9rGLu3X@a(jM5`a zf-{m!Q!<=P4O1hte1a{FB^Z=gqg>pbqcj+eRLY9|i;@e%lF9?Ki;I1IN}b)qjJ%5c zN)iK#eezsV9V_xIt1K9um`#j~JQ#zR42&We6V~r!%3vrso>IZkz{uFa$T)$KWdcontains($uint,[]uint{uint(12871)})&.Rotten:== uint(40111))|(.Peel:->contains($uint,[]uint{uint(12891)})&.Rotten:== uint(50105)))|(.Peel:->contains($uint,[]uint{uint(14841)})&.Rotten:== uint(50101)))|(.Peel:->contains($uint,[]uint{uint(14881)})&.Rotten:== uint(40110)))|(.Peel:->contains($uint,[]uint{uint(23610)})&.Rotten:== uint(7006)))|(.Peel:->contains($uint,[]uint{uint(26133)})&.Rotten:== uint(20102)))|(.Peel:->contains($uint,[]uint{uint(28602)})&.Rotten:== uint(7003)))|(.Peel:->contains($uint,[]uint{uint(29440)})&.Rotten:== uint(10007)))|(.Peel:->contains($uint,[]uint{uint(31702)})&.Rotten:== uint(1012)))|(.Peel:->contains($uint,[]uint{uint(31742)})&.Rotten:== uint(1011)))|(.Peel:->contains($uint,[]uint{uint(32261)})&.Rotten:== uint(20111)))|(.Peel:->contains($uint,[]uint{uint(33375)})&.Rotten:== uint(3152)))|(.Peel:->contains($uint,[]uint{uint(33723)})&.Rotten:== uint(3010)))|(.Peel:->contains($uint,[]uint{uint(37192)})&.Rotten:== uint(2107)))|(.Peel:->contains($uint,[]uint{uint(37340)})&.Rotten:== uint(1009)))|(.Peel:->contains($uint,[]uint{uint(38121)})&.Rotten:== uint(2000)))|(.Peel:->contains($uint,[]uint{uint(46270)})&.Rotten:== uint(2022)))|(.Peel:->contains($uint,[]uint{uint(46432)})&.Rotten:== uint(2111)))|(.Peel:->contains($uint,[]uint{uint(551496705)})&.Rotten:== uint(10115)))|(.Peel:->contains($uint,[]uint{uint(60065)})&.Rotten:== uint(10116)))|(.Peel:->contains($uint,[]uint{uint(15063),uint(19272)})&.Rotten:== uint(10114)))|(.Peel:->contains($uint,[]uint{uint(22093),uint(22032)})&.Rotten:== uint(10005)))|(.Peel:->contains($uint,[]uint{uint(26021),uint(26293)})&.Rotten:== uint(7010)))|(.Peel:->contains($uint,[]uint{uint(29472),uint(29284)})&.Rotten:== uint(10006)))|(.Peel:->contains($uint,[]uint{uint(30801),uint(32261)})&.Rotten:== uint(1050)))|(.Peel:->contains($uint,[]uint{uint(32643),uint(32053)})&.Rotten:== uint(3157)))|(.Peel:->contains($uint,[]uint{uint(33372),uint(33693)})&.Rotten:== uint(3003)))|(.Peel:->contains($uint,[]uint{uint(48004),uint(38092)})&.Rotten:== uint(2008)))|(.Peel:->contains($uint,[]uint{uint(12851),uint(13491),uint(15303)})&.Rotten:== uint(40071)))|(.Peel:->contains($uint,[]uint{uint(12852),uint(11692),uint(15553)})&.Rotten:== uint(50106)))|(.Peel:->contains($uint,[]uint{uint(15333),uint(11091),uint(14181)})&.Rotten:== uint(50103)))|(.Peel:->contains($uint,[]uint{uint(16621),uint(12612),uint(16623)})&.Rotten:== uint(40052)))|(.Peel:->contains($uint,[]uint{uint(21121),uint(21491),uint(21171)})&.Rotten:== uint(10004)))|(.Peel:->contains($uint,[]uint{uint(34362),uint(34252),uint(34093)})&.Rotten:== uint(40102)))|(.Peel:->contains($uint,[]uint{uint(11071),uint(12722),uint(14693),uint(11223)})&.Rotten:== uint(10118)))|(.Peel:->contains($uint,[]uint{uint(13901),uint(12241),uint(15321),uint(19011)})&.Rotten:== uint(40105)))|(.Peel:->contains($uint,[]uint{uint(16113),uint(10142),uint(15621),uint(14173)})&.Rotten:== uint(50104)))|(.Peel:->contains($uint,[]uint{uint(16531),uint(11123),uint(19441),uint(15263)})&.Rotten:== uint(4005)))|(.Peel:->contains($uint,[]uint{uint(16621),uint(15342),uint(16623),uint(11123)})&.Rotten:== uint(40101)))|(.Peel:->contains($uint,[]uint{uint(24543),uint(23181),uint(24881),uint(23032)})&.Rotten:== uint(20105)))|(.Peel:->contains($uint,[]uint{uint(34993),uint(31893),uint(34232),uint(34412)})&.Rotten:== uint(40114)))|(.Peel:->contains($uint,[]uint{uint(46301),uint(46431),uint(46322),uint(46392)})&.Rotten:== uint(20104)))|(.Peel:->contains($uint,[]uint{uint(46681),uint(46831),uint(34002),uint(34442)})&.Rotten:== uint(3158)))|(.Peel:->contains($uint,[]uint{uint(11973),uint(11782),uint(11993),uint(12692),uint(11953)})&.Rotten:== uint(8006)))|(.Peel:->contains($uint,[]uint{uint(26491),uint(24292),uint(26133),uint(20651),uint(26113)})&.Rotten:== uint(7012)))|(.Peel:->contains($uint,[]uint{uint(10691),uint(11931),uint(14121),uint(14841),uint(13481),uint(14773)})&.Rotten:== uint(50102)))|(.Peel:->contains($uint,[]uint{uint(11251),uint(12811),uint(14721),uint(14112),uint(11553),uint(11371)})&.Rotten:== uint(3002)))|(.Peel:->contains($uint,[]uint{uint(16671),uint(13601),uint(12333),uint(14883),uint(14163),uint(12592),uint(11693)})&.Rotten:== uint(4003)))|(.Peel:->contains($uint,[]uint{uint(32532),uint(32001),uint(32543),uint(30801),uint(46261),uint(32262),uint(32053)})&.Rotten:== uint(2002)))|(.Peel:->contains($uint,[]uint{uint(11557),uint(11303),uint(11552),uint(14117),uint(14112),uint(14115),uint(64187),uint(64185)})&.Rotten:== uint(10102)))|(.Peel:->contains($uint,[]uint{uint(12521),uint(16551),uint(11283),uint(11262),uint(16553),uint(15041),uint(11023),uint(15281)})&.Rotten:== uint(18008)))|(.Peel:->contains($uint,[]uint{uint(17013),uint(13901),uint(13542),uint(54441),uint(51501),uint(55542),uint(12241),uint(16023)})&.Rotten:== uint(4004)))|(.Peel:->contains($uint,[]uint{uint(34141),uint(34563),uint(34001),uint(34032),uint(46681),uint(34961),uint(46831),uint(34442)})&.Rotten:== uint(2012)))|(.Peel:->contains($uint,[]uint{uint(15803),uint(12163),uint(14681),uint(11932),uint(11223),uint(14693),uint(12811),uint(11852),uint(11071),uint(11001),uint(14771)})&.Rotten:== uint(3001)))|(.Peel:->contains($uint,[]uint{uint(11002),uint(14121),uint(15611),uint(17733),uint(13483),uint(14841),uint(12931),uint(12933),uint(11833),uint(12581),uint(14303),uint(14983),uint(13781)})&.Rotten:== uint(3005)))|(.Peel:->contains($uint,[]uint{uint(24683),uint(24802),uint(24532),uint(24612),uint(24543),uint(24652),uint(23043),uint(23032),uint(23193),uint(27832),uint(23012),uint(24562),uint(24741)})&.Rotten:== uint(7005)))|(.Peel:->contains($uint,[]uint{uint(46402),uint(34152),uint(46392),uint(46153),uint(46363),uint(46642),uint(46331),uint(46841),uint(46112),uint(31051),uint(46464),uint(46333),uint(46312),uint(46302)})&.Rotten:== uint(2013)))|(.Peel:->contains($uint,[]uint{uint(14172),uint(11091),uint(14562),uint(14203),uint(11473),uint(15051),uint(15191),uint(12913),uint(14521),uint(15621),uint(14862),uint(16112),uint(14181),uint(13553),uint(16063)})&.Rotten:== uint(4007)))|(.Peel:->contains($uint,[]uint{uint(31893),uint(34422),uint(34161),uint(34851),uint(34691),uint(34992),uint(34042),uint(34412),uint(34251),uint(34342),uint(34652),uint(34332),uint(34361),uint(34001),uint(34253),uint(34023),uint(34221),uint(34232)})&.Rotten:== uint(2011))))|(.Brown:== "03"&(((((((((((((((((.Peel:->contains($uint,[]uint{uint(1)})&.Rotten:== uint(11))|(.Peel:->contains($uint,[]uint{uint(12542)})&.Rotten:== uint(30261)))|(.Peel:->contains($uint,[]uint{uint(15753)})&.Rotten:== uint(50161)))|(.Peel:->contains($uint,[]uint{uint(21573)})&.Rotten:== uint(40119)))|(.Peel:->contains($uint,[]uint{uint(31102)})&.Rotten:== uint(30211)))|(.Peel:->contains($uint,[]uint{uint(3262)})&.Rotten:== uint(10164)))|(.Peel:->contains($uint,[]uint{uint(40522)})&.Rotten:== uint(40111)))|(.Peel:->contains($uint,[]uint{uint(8491)})&.Rotten:== uint(40161)))|(.Peel:->contains($uint,[]uint{uint(1241),uint(3203)})&.Rotten:== uint(10161)))|(.Peel:->contains($uint,[]uint{uint(20821),uint(20703)})&.Rotten:== uint(20164)))|(.Peel:->contains($uint,[]uint{uint(12251),uint(18083),uint(11051),uint(11112)})&.Rotten:== uint(10112)))|(.Peel:->contains($uint,[]uint{uint(22072),uint(21042),uint(21472),uint(20383)})&.Rotten:== uint(20114)))|(.Peel:->contains($uint,[]uint{uint(1091),uint(2212),uint(2742),uint(4283),uint(583)})&.Rotten:== uint(10162)))|(.Peel:->contains($uint,[]uint{uint(1503),uint(10753),uint(8153),uint(281),uint(7122),uint(813),uint(9921)})&.Rotten:== uint(10163)))|(.Peel:->contains($uint,[]uint{uint(20241),uint(22292),uint(23841),uint(21732),uint(22463),uint(20892),uint(21263),uint(22342)})&.Rotten:== uint(20116)))|(.Peel:->contains($uint,[]uint{uint(61291),uint(60063),uint(60042),uint(60031),uint(61251),uint(60092),uint(60421),uint(60243)})&.Rotten:== uint(60111)))|(.Peel:->contains($uint,[]uint{uint(50321),uint(50673),uint(50252),uint(50203),uint(50562),uint(50242),uint(50323),uint(51221),uint(50791)})&.Rotten:== uint(50111)))))) \ No newline at end of file diff --git a/validator/tests/pb/BananaLargeMatch/validator.xml b/validator/tests/pb/BananaLargeMatch/validator.xml new file mode 100644 index 0000000..3a74d3a --- /dev/null +++ b/validator/tests/pb/BananaLargeMatch/validator.xml @@ -0,0 +1,12641 @@ + + + + + ( + + + + + . + + + + + + Squishy + + + + + : + + + + + + + == + + + + + + + "422" + 422 + + + + + + + + + + + + + & + + + + + ( + + + + + ( + + + + + . + + + + + + Brown + + + + + : + + + + + + + == + + + + + + + "02" + 02 + + + + + + + + + + + + + & + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(12871) + 12871 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40111) + 40111 + + + + + + + + + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(12891) + 12891 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(50105) + 50105 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(14841) + 14841 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(50101) + 50101 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(14881) + 14881 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40110) + 40110 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(23610) + 23610 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(7006) + 7006 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(26133) + 26133 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(20102) + 20102 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(28602) + 28602 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(7003) + 7003 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(29440) + 29440 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10007) + 10007 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(31702) + 31702 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(1012) + 1012 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(31742) + 31742 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(1011) + 1011 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(32261) + 32261 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(20111) + 20111 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(33375) + 33375 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(3152) + 3152 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(33723) + 33723 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(3010) + 3010 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(37192) + 37192 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(2107) + 2107 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(37340) + 37340 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(1009) + 1009 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(38121) + 38121 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(2000) + 2000 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(46270) + 46270 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(2022) + 2022 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(46432) + 46432 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(2111) + 2111 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(551496705) + 551496705 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10115) + 10115 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(60065) + 60065 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10116) + 10116 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(15063) + 15063 + + + + + + , + + + uint(19272) + 19272 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10114) + 10114 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(22093) + 22093 + + + + + + , + + + uint(22032) + 22032 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10005) + 10005 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(26021) + 26021 + + + + + + , + + + uint(26293) + 26293 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(7010) + 7010 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(29472) + 29472 + + + + + + , + + + uint(29284) + 29284 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10006) + 10006 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(30801) + 30801 + + + + + + , + + + uint(32261) + 32261 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(1050) + 1050 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(32643) + 32643 + + + + + + , + + + uint(32053) + 32053 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(3157) + 3157 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(33372) + 33372 + + + + + + , + + + uint(33693) + 33693 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(3003) + 3003 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(48004) + 48004 + + + + + + , + + + uint(38092) + 38092 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(2008) + 2008 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(12851) + 12851 + + + + + + , + + + uint(13491) + 13491 + + + + + + , + + + uint(15303) + 15303 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40071) + 40071 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(12852) + 12852 + + + + + + , + + + uint(11692) + 11692 + + + + + + , + + + uint(15553) + 15553 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(50106) + 50106 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(15333) + 15333 + + + + + + , + + + uint(11091) + 11091 + + + + + + , + + + uint(14181) + 14181 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(50103) + 50103 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(16621) + 16621 + + + + + + , + + + uint(12612) + 12612 + + + + + + , + + + uint(16623) + 16623 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40052) + 40052 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(21121) + 21121 + + + + + + , + + + uint(21491) + 21491 + + + + + + , + + + uint(21171) + 21171 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10004) + 10004 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(34362) + 34362 + + + + + + , + + + uint(34252) + 34252 + + + + + + , + + + uint(34093) + 34093 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40102) + 40102 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(11071) + 11071 + + + + + + , + + + uint(12722) + 12722 + + + + + + , + + + uint(14693) + 14693 + + + + + + , + + + uint(11223) + 11223 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10118) + 10118 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(13901) + 13901 + + + + + + , + + + uint(12241) + 12241 + + + + + + , + + + uint(15321) + 15321 + + + + + + , + + + uint(19011) + 19011 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40105) + 40105 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(16113) + 16113 + + + + + + , + + + uint(10142) + 10142 + + + + + + , + + + uint(15621) + 15621 + + + + + + , + + + uint(14173) + 14173 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(50104) + 50104 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(16531) + 16531 + + + + + + , + + + uint(11123) + 11123 + + + + + + , + + + uint(19441) + 19441 + + + + + + , + + + uint(15263) + 15263 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(4005) + 4005 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(16621) + 16621 + + + + + + , + + + uint(15342) + 15342 + + + + + + , + + + uint(16623) + 16623 + + + + + + , + + + uint(11123) + 11123 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40101) + 40101 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(24543) + 24543 + + + + + + , + + + uint(23181) + 23181 + + + + + + , + + + uint(24881) + 24881 + + + + + + , + + + uint(23032) + 23032 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(20105) + 20105 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(34993) + 34993 + + + + + + , + + + uint(31893) + 31893 + + + + + + , + + + uint(34232) + 34232 + + + + + + , + + + uint(34412) + 34412 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40114) + 40114 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(46301) + 46301 + + + + + + , + + + uint(46431) + 46431 + + + + + + , + + + uint(46322) + 46322 + + + + + + , + + + uint(46392) + 46392 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(20104) + 20104 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(46681) + 46681 + + + + + + , + + + uint(46831) + 46831 + + + + + + , + + + uint(34002) + 34002 + + + + + + , + + + uint(34442) + 34442 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(3158) + 3158 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(11973) + 11973 + + + + + + , + + + uint(11782) + 11782 + + + + + + , + + + uint(11993) + 11993 + + + + + + , + + + uint(12692) + 12692 + + + + + + , + + + uint(11953) + 11953 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(8006) + 8006 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(26491) + 26491 + + + + + + , + + + uint(24292) + 24292 + + + + + + , + + + uint(26133) + 26133 + + + + + + , + + + uint(20651) + 20651 + + + + + + , + + + uint(26113) + 26113 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(7012) + 7012 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(10691) + 10691 + + + + + + , + + + uint(11931) + 11931 + + + + + + , + + + uint(14121) + 14121 + + + + + + , + + + uint(14841) + 14841 + + + + + + , + + + uint(13481) + 13481 + + + + + + , + + + uint(14773) + 14773 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(50102) + 50102 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(11251) + 11251 + + + + + + , + + + uint(12811) + 12811 + + + + + + , + + + uint(14721) + 14721 + + + + + + , + + + uint(14112) + 14112 + + + + + + , + + + uint(11553) + 11553 + + + + + + , + + + uint(11371) + 11371 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(3002) + 3002 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(16671) + 16671 + + + + + + , + + + uint(13601) + 13601 + + + + + + , + + + uint(12333) + 12333 + + + + + + , + + + uint(14883) + 14883 + + + + + + , + + + uint(14163) + 14163 + + + + + + , + + + uint(12592) + 12592 + + + + + + , + + + uint(11693) + 11693 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(4003) + 4003 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(32532) + 32532 + + + + + + , + + + uint(32001) + 32001 + + + + + + , + + + uint(32543) + 32543 + + + + + + , + + + uint(30801) + 30801 + + + + + + , + + + uint(46261) + 46261 + + + + + + , + + + uint(32262) + 32262 + + + + + + , + + + uint(32053) + 32053 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(2002) + 2002 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(11557) + 11557 + + + + + + , + + + uint(11303) + 11303 + + + + + + , + + + uint(11552) + 11552 + + + + + + , + + + uint(14117) + 14117 + + + + + + , + + + uint(14112) + 14112 + + + + + + , + + + uint(14115) + 14115 + + + + + + , + + + uint(64187) + 64187 + + + + + + , + + + uint(64185) + 64185 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10102) + 10102 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(12521) + 12521 + + + + + + , + + + uint(16551) + 16551 + + + + + + , + + + uint(11283) + 11283 + + + + + + , + + + uint(11262) + 11262 + + + + + + , + + + uint(16553) + 16553 + + + + + + , + + + uint(15041) + 15041 + + + + + + , + + + uint(11023) + 11023 + + + + + + , + + + uint(15281) + 15281 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(18008) + 18008 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(17013) + 17013 + + + + + + , + + + uint(13901) + 13901 + + + + + + , + + + uint(13542) + 13542 + + + + + + , + + + uint(54441) + 54441 + + + + + + , + + + uint(51501) + 51501 + + + + + + , + + + uint(55542) + 55542 + + + + + + , + + + uint(12241) + 12241 + + + + + + , + + + uint(16023) + 16023 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(4004) + 4004 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(34141) + 34141 + + + + + + , + + + uint(34563) + 34563 + + + + + + , + + + uint(34001) + 34001 + + + + + + , + + + uint(34032) + 34032 + + + + + + , + + + uint(46681) + 46681 + + + + + + , + + + uint(34961) + 34961 + + + + + + , + + + uint(46831) + 46831 + + + + + + , + + + uint(34442) + 34442 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(2012) + 2012 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(15803) + 15803 + + + + + + , + + + uint(12163) + 12163 + + + + + + , + + + uint(14681) + 14681 + + + + + + , + + + uint(11932) + 11932 + + + + + + , + + + uint(11223) + 11223 + + + + + + , + + + uint(14693) + 14693 + + + + + + , + + + uint(12811) + 12811 + + + + + + , + + + uint(11852) + 11852 + + + + + + , + + + uint(11071) + 11071 + + + + + + , + + + uint(11001) + 11001 + + + + + + , + + + uint(14771) + 14771 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(3001) + 3001 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(11002) + 11002 + + + + + + , + + + uint(14121) + 14121 + + + + + + , + + + uint(15611) + 15611 + + + + + + , + + + uint(17733) + 17733 + + + + + + , + + + uint(13483) + 13483 + + + + + + , + + + uint(14841) + 14841 + + + + + + , + + + uint(12931) + 12931 + + + + + + , + + + uint(12933) + 12933 + + + + + + , + + + uint(11833) + 11833 + + + + + + , + + + uint(12581) + 12581 + + + + + + , + + + uint(14303) + 14303 + + + + + + , + + + uint(14983) + 14983 + + + + + + , + + + uint(13781) + 13781 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(3005) + 3005 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(24683) + 24683 + + + + + + , + + + uint(24802) + 24802 + + + + + + , + + + uint(24532) + 24532 + + + + + + , + + + uint(24612) + 24612 + + + + + + , + + + uint(24543) + 24543 + + + + + + , + + + uint(24652) + 24652 + + + + + + , + + + uint(23043) + 23043 + + + + + + , + + + uint(23032) + 23032 + + + + + + , + + + uint(23193) + 23193 + + + + + + , + + + uint(27832) + 27832 + + + + + + , + + + uint(23012) + 23012 + + + + + + , + + + uint(24562) + 24562 + + + + + + , + + + uint(24741) + 24741 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(7005) + 7005 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(46402) + 46402 + + + + + + , + + + uint(34152) + 34152 + + + + + + , + + + uint(46392) + 46392 + + + + + + , + + + uint(46153) + 46153 + + + + + + , + + + uint(46363) + 46363 + + + + + + , + + + uint(46642) + 46642 + + + + + + , + + + uint(46331) + 46331 + + + + + + , + + + uint(46841) + 46841 + + + + + + , + + + uint(46112) + 46112 + + + + + + , + + + uint(31051) + 31051 + + + + + + , + + + uint(46464) + 46464 + + + + + + , + + + uint(46333) + 46333 + + + + + + , + + + uint(46312) + 46312 + + + + + + , + + + uint(46302) + 46302 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(2013) + 2013 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(14172) + 14172 + + + + + + , + + + uint(11091) + 11091 + + + + + + , + + + uint(14562) + 14562 + + + + + + , + + + uint(14203) + 14203 + + + + + + , + + + uint(11473) + 11473 + + + + + + , + + + uint(15051) + 15051 + + + + + + , + + + uint(15191) + 15191 + + + + + + , + + + uint(12913) + 12913 + + + + + + , + + + uint(14521) + 14521 + + + + + + , + + + uint(15621) + 15621 + + + + + + , + + + uint(14862) + 14862 + + + + + + , + + + uint(16112) + 16112 + + + + + + , + + + uint(14181) + 14181 + + + + + + , + + + uint(13553) + 13553 + + + + + + , + + + uint(16063) + 16063 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(4007) + 4007 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(31893) + 31893 + + + + + + , + + + uint(34422) + 34422 + + + + + + , + + + uint(34161) + 34161 + + + + + + , + + + uint(34851) + 34851 + + + + + + , + + + uint(34691) + 34691 + + + + + + , + + + uint(34992) + 34992 + + + + + + , + + + uint(34042) + 34042 + + + + + + , + + + uint(34412) + 34412 + + + + + + , + + + uint(34251) + 34251 + + + + + + , + + + uint(34342) + 34342 + + + + + + , + + + uint(34652) + 34652 + + + + + + , + + + uint(34332) + 34332 + + + + + + , + + + uint(34361) + 34361 + + + + + + , + + + uint(34001) + 34001 + + + + + + , + + + uint(34253) + 34253 + + + + + + , + + + uint(34023) + 34023 + + + + + + , + + + uint(34221) + 34221 + + + + + + , + + + uint(34232) + 34232 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(2011) + 2011 + + + + + + + + + + + + + ) + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Brown + + + + + : + + + + + + + == + + + + + + + "03" + 03 + + + + + + + + + + + + + & + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(1) + 1 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(11) + 11 + + + + + + + + + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(12542) + 12542 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(30261) + 30261 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(15753) + 15753 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(50161) + 50161 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(21573) + 21573 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40119) + 40119 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(31102) + 31102 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(30211) + 30211 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(3262) + 3262 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10164) + 10164 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(40522) + 40522 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40111) + 40111 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(8491) + 8491 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(40161) + 40161 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(1241) + 1241 + + + + + + , + + + uint(3203) + 3203 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10161) + 10161 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(20821) + 20821 + + + + + + , + + + uint(20703) + 20703 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(20164) + 20164 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(12251) + 12251 + + + + + + , + + + uint(18083) + 18083 + + + + + + , + + + uint(11051) + 11051 + + + + + + , + + + uint(11112) + 11112 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10112) + 10112 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(22072) + 22072 + + + + + + , + + + uint(21042) + 21042 + + + + + + , + + + uint(21472) + 21472 + + + + + + , + + + uint(20383) + 20383 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(20114) + 20114 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(1091) + 1091 + + + + + + , + + + uint(2212) + 2212 + + + + + + , + + + uint(2742) + 2742 + + + + + + , + + + uint(4283) + 4283 + + + + + + , + + + uint(583) + 583 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10162) + 10162 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(1503) + 1503 + + + + + + , + + + uint(10753) + 10753 + + + + + + , + + + uint(8153) + 8153 + + + + + + , + + + uint(281) + 281 + + + + + + , + + + uint(7122) + 7122 + + + + + + , + + + uint(813) + 813 + + + + + + , + + + uint(9921) + 9921 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(10163) + 10163 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(20241) + 20241 + + + + + + , + + + uint(22292) + 22292 + + + + + + , + + + uint(23841) + 23841 + + + + + + , + + + uint(21732) + 21732 + + + + + + , + + + uint(22463) + 22463 + + + + + + , + + + uint(20892) + 20892 + + + + + + , + + + uint(21263) + 21263 + + + + + + , + + + uint(22342) + 22342 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(20116) + 20116 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(61291) + 61291 + + + + + + , + + + uint(60063) + 60063 + + + + + + , + + + uint(60042) + 60042 + + + + + + , + + + uint(60031) + 60031 + + + + + + , + + + uint(61251) + 61251 + + + + + + , + + + uint(60092) + 60092 + + + + + + , + + + uint(60421) + 60421 + + + + + + , + + + uint(60243) + 60243 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(60111) + 60111 + + + + + + + + + + + + + ) + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + Peel + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 104 + + + + + + , + + + 204 + + { + + + + uint(50321) + 50321 + + + + + + , + + + uint(50673) + 50673 + + + + + + , + + + uint(50252) + 50252 + + + + + + , + + + uint(50203) + 50203 + + + + + + , + + + uint(50562) + 50562 + + + + + + , + + + uint(50242) + 50242 + + + + + + , + + + uint(50323) + 50323 + + + + + + , + + + uint(51221) + 51221 + + + + + + , + + + uint(50791) + 50791 + + + + + } + + + + + ) + + + + + + + + + + + & + + + + + . + + + + + + Rotten + + + + + : + + + + + + + == + + + + + + + uint(50111) + 50111 + + + + + + + + + + + + + ) + + + + + ) + + + + + ) + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/BananaLarger800Match/valid.main.BananaTuple.desc.pb b/validator/tests/pb/BananaLarger800Match/valid.main.BananaTuple.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..9c85fdae019cb8ca105c01f9deec0a7861e3db11 GIT binary patch literal 66 zcmd;J5Mq#EP~tZ+GBPkSG%+x=Ff=eQGuL1=Vz6LvVg?F(Fa|Lh7)3B9Y-?xEU@T}} U%2>hJz{uRe$T)#fdcontains($uint,[]uint{uint(29952),uint(59853),uint(28311),uint(29776),uint(28852),uint(6836),uint(30022),uint(20735),uint(27911),uint(23265),uint(29772),uint(9375),uint(28312),uint(9371),uint(30151),uint(27511),uint(22535),uint(20995),uint(54191),uint(23266),uint(28251),uint(9376),uint(9442),uint(29751),uint(27912),uint(20736),uint(3331),uint(9372),uint(20996),uint(30152),uint(30011),uint(27512),uint(22536),uint(30012),uint(54201),uint(27711),uint(28252),uint(3332),uint(29752),uint(54192),uint(28851),uint(29951),uint(29775),uint(59852),uint(9571),uint(53952),uint(30021),uint(54202),uint(27712),uint(6835),uint(29771),uint(53951),uint(9572),uint(54193),uint(59851)}))|(.Peel:->contains($uint,[]uint{uint(38852),uint(42121),uint(42122),uint(38853),uint(41251),uint(45071),uint(41252),uint(42123),uint(45072),uint(38851)})&.Rotten:== uint(3184)))|(.Peel:->contains($uint,[]uint{uint(4343541),uint(4303043),uint(4342542),uint(4346643),uint(4342142),uint(4343642),uint(4403242),uint(4346441),uint(4341843),uint(4342543),uint(4303042),uint(4343643),uint(4344941),uint(4342143),uint(4343542),uint(4403241),uint(4340441),uint(4346442),uint(4347841),uint(4343041),uint(4310943),uint(4523642),uint(4344942),uint(4343543),uint(4303041),uint(4341841),uint(4344943),uint(4523641),uint(4347842),uint(4340442),uint(4343042),uint(4346641),uint(4346443),uint(4342541),uint(4523643),uint(4347843),uint(4310942),uint(4342141),uint(4403243),uint(4343641),uint(4341842),uint(4346444),uint(4310941),uint(4343043),uint(4346642),uint(4340443)})&.Rotten:== uint(6021)))|(.Peel:->contains($uint,[]uint{uint(11642),uint(11611),uint(17771),uint(16262),uint(11651),uint(15813),uint(15791),uint(16601),uint(11163),uint(14973),uint(14511),uint(16812),uint(14221),uint(11612),uint(17772),uint(15792),uint(16421),uint(15761),uint(14512),uint(11661),uint(16263),uint(11652),uint(13931),uint(19061),uint(17821),uint(16602),uint(12981),uint(12801),uint(16422),uint(15762),uint(11151),uint(13932),uint(11631),uint(11653),uint(15793),uint(11662),uint(15811),uint(14513),uint(19062),uint(17773),uint(17822),uint(12991),uint(12771),uint(11152),uint(17831),uint(16801),uint(11161),uint(16423),uint(15763),uint(14971),uint(12802),uint(11632),uint(13933),uint(16802),uint(11641),uint(15812),uint(14972),uint(17832),uint(16811),uint(16261),uint(12992),uint(17823),uint(11162)})&.Rotten:== uint(8009)))|(.Rotten:== uint(6006)&.Peel:->contains($uint,[]uint{uint(11161),uint(16423),uint(15763),uint(12802),uint(14971),uint(17822),uint(17932),uint(11632),uint(13933),uint(17831),uint(16802),uint(15812),uint(17823),uint(17933),uint(11641),uint(14972),uint(16811),uint(16261),uint(12992),uint(11162),uint(11642),uint(17832),uint(11611),uint(11651),uint(16262),uint(15813),uint(15791),uint(16601),uint(11163),uint(14511),uint(17771),uint(14973),uint(16812),uint(14221),uint(11612),uint(19061),uint(15792),uint(16421),uint(15761),uint(14512),uint(11661),uint(16263),uint(13931),uint(11652),uint(17772),uint(16602),uint(12981),uint(12801),uint(16422),uint(15762),uint(19062),uint(17773),uint(11151),uint(11631),uint(11653),uint(17821),uint(17931),uint(13932),uint(15793),uint(11662),uint(15811),uint(14513),uint(12991),uint(12771),uint(11152),uint(16801)})))|(.Rotten:== uint(3158)&.Peel:->contains($uint,[]uint{uint(40331),uint(54142),uint(52822),uint(30106),uint(30326),uint(31945),uint(54912),uint(46306),uint(30172),uint(34862),uint(34906),uint(34642),uint(34972),uint(34532),uint(46746),uint(34796),uint(46407),uint(46385),uint(46341),uint(34026),uint(46451),uint(34136),uint(34466),uint(34422),uint(46077),uint(34312),uint(30185),uint(34356),uint(46253),uint(38932),uint(46781),uint(31087),uint(30647),uint(45052),uint(46645),uint(46315),uint(34985),uint(38853),uint(38743),uint(46381),uint(46403),uint(34677),uint(34655),uint(31892),uint(34787),uint(34523),uint(34435),uint(34545),uint(34963),uint(34457),uint(34017),uint(34105),uint(34083),uint(34061),uint(34303),uint(34325),uint(34413),uint(34391),uint(34215),uint(34237),uint(54551),uint(40327),uint(34932),uint(30176),uint(34976),uint(34492),uint(34536),uint(46073),uint(34382),uint(46227),uint(46205),uint(34822),uint(34866),uint(34426),uint(34646),uint(46323),uint(46345),uint(46257),uint(46301),uint(46873),uint(46785),uint(31092),uint(46741),uint(46455),uint(34867),uint(34933),uint(34911),uint(34977),uint(34493),uint(34515),uint(34537),uint(34427),uint(34295),uint(34317),uint(34405),uint(34361),uint(34383),uint(34823),uint(34691),uint(34647),uint(34141),uint(34185),uint(34251),uint(34075),uint(34031),uint(34273),uint(34163),uint(40335),uint(47172),uint(30102),uint(31897),uint(31941),uint(30322),uint(54982),uint(34792),uint(34902),uint(34352),uint(30181),uint(34418),uint(34396),uint(34308),uint(34462),uint(34022),uint(38936),uint(34132),uint(34066),uint(54414),uint(40322),uint(31083),uint(30643),uint(45056),uint(55602),uint(52826),uint(31096),uint(34937),uint(34915),uint(34981),uint(34695),uint(34673),uint(34651),uint(34783),uint(34827),uint(34233),uint(34255),uint(34277),uint(46222),uint(34145),uint(34101),uint(34321),uint(34167),uint(34211),uint(34497),uint(34541),uint(34453),uint(34365),uint(34387),uint(34431),uint(38747),uint(38857),uint(54071),uint(34035),uint(34013),uint(38933),uint(34982),uint(34916),uint(34696),uint(34652),uint(46835),uint(46681),uint(46747),uint(34828),uint(30107),uint(34146),uint(34212),uint(34102),uint(34256),uint(30041),uint(30305),uint(30327),uint(34542),uint(34366),uint(34322),uint(30195),uint(30173),uint(34432),uint(40011),uint(34036),uint(31097),uint(31946),uint(52361),uint(52823),uint(45053),uint(58851),uint(34797),uint(34665),uint(34643),uint(34863),uint(34555),uint(34907),uint(34511),uint(34995),uint(34533),uint(34973),uint(46065),uint(34071),uint(34027),uint(34181),uint(46395),uint(34137),uint(34115),uint(34401),uint(34357),uint(34467),uint(34423),uint(46307),uint(46241),uint(34291),uint(34335),uint(34313),uint(54552),uint(31893),uint(46061),uint(51081),uint(46743),uint(46787),uint(34986),uint(46391),uint(46303),uint(46325),uint(30186),uint(46347),uint(46457),uint(34546),uint(34436),uint(34414),uint(34392),uint(34656),uint(46646),uint(34106),uint(34062),uint(30177),uint(46206),uint(34304),uint(46316),uint(34326),uint(30045),uint(34216),uint(46382),uint(40337),uint(54143),uint(54913),uint(52365),uint(34041),uint(34063),uint(34217),uint(34327),uint(34107),uint(30046),uint(34085),uint(34305),uint(45057),uint(54411),uint(46201),uint(46223),uint(46245),uint(46311),uint(30178),uint(40336),uint(31093),uint(54983),uint(54961),uint(34824),uint(34912),uint(38937),uint(30323),uint(34406),uint(30191),uint(34252),uint(46302),uint(34296),uint(30103),uint(34362),uint(34692),uint(34648),uint(34516),uint(30301),uint(46786),uint(46742),uint(40015),uint(34076),uint(56831),uint(46456),uint(34186),uint(34032),uint(46346),uint(34142),uint(46342),uint(46386),uint(55603),uint(46452),uint(40323),uint(34991),uint(35145),uint(46782),uint(34793),uint(34815),uint(34903),uint(34331),uint(34397),uint(34353),uint(34661),uint(34551),uint(31942),uint(34463),uint(46641),uint(46685),uint(34133),uint(34111),uint(54072),uint(34045),uint(34023),uint(34067),uint(30182),uint(52827),uint(40332),uint(46075),uint(40012),uint(46405),uint(46647),uint(38745),uint(46251),uint(46207),uint(46383),uint(47175),uint(46317),uint(30183),uint(34917),uint(34697),uint(34675),uint(34983),uint(34961),uint(34543),uint(34785),uint(46396),uint(34103),uint(30042),uint(34081),uint(34037),uint(34015),uint(34213),uint(34235),uint(34257),uint(34147),uint(30306),uint(46066),uint(34433),uint(34521),uint(34411),uint(34455),uint(30196),uint(30174),uint(34323),uint(34301),uint(34367),uint(46242),uint(38855),uint(46836),uint(46682),uint(58852),uint(52362),uint(54272),uint(46326),uint(34996),uint(46392),uint(34644),uint(34666),uint(34512),uint(34556),uint(34468),uint(46832),uint(46876),uint(34116),uint(34072),uint(34336),uint(34402),uint(34182),uint(34292),uint(35141),uint(38741),uint(30187),uint(34987),uint(34965),uint(38851),uint(34547),uint(46062),uint(34525),uint(34393),uint(34811),uint(34437),uint(34415),uint(51082),uint(46246),uint(46202),uint(31895),uint(54412),uint(46312),uint(54962),uint(31081),uint(35142),uint(46686),uint(30641),uint(46642),uint(34966),uint(34526),uint(34306),uint(34416),uint(34812),uint(34086),uint(34042),uint(52366),uint(46831),uint(46875),uint(40016),uint(56832),uint(54553),uint(30047),uint(34781),uint(34825),uint(34913),uint(34935),uint(34363),uint(34385),uint(30302),uint(34451),uint(30192),uint(34231),uint(34253),uint(34275),uint(34297),uint(34693),uint(34671),uint(34495),uint(34517),uint(34011),uint(34033),uint(34187),uint(34165),uint(34143),uint(54073),uint(34077),uint(54271),uint(40333),uint(31085),uint(34992),uint(35146),uint(34662),uint(30645),uint(34816),uint(46255),uint(46321),uint(46343),uint(34332),uint(34112),uint(46453),uint(46387),uint(34552),uint(34464),uint(46783),uint(46871),uint(34046),uint(47176),uint(34861),uint(34905),uint(34971),uint(34993),uint(34663),uint(34641),uint(38856),uint(51083),uint(30646),uint(34795),uint(34817),uint(34135),uint(34311),uint(34047),uint(34531),uint(34553),uint(34465),uint(38746),uint(34355),uint(34333),uint(34421),uint(34025),uint(45051),uint(58853),uint(31086),uint(54141),uint(54273),uint(54911),uint(34786),uint(34676),uint(38931),uint(46076),uint(34522),uint(34962),uint(34016),uint(46406),uint(34082),uint(34412),uint(34456),uint(31891),uint(34236),uint(46252),uint(34302),uint(46072),uint(54981),uint(46226),uint(30307),uint(34975),uint(34931),uint(46402),uint(30197),uint(30175),uint(34997),uint(30043),uint(34645),uint(34535),uint(34557),uint(46063),uint(34425),uint(34491),uint(34513),uint(34821),uint(34865),uint(34667),uint(34073),uint(34271),uint(34315),uint(34293),uint(46305),uint(38852),uint(34381),uint(34161),uint(34337),uint(38742),uint(34183),uint(46327),uint(52821),uint(40326),uint(46877),uint(46745),uint(46833),uint(40017),uint(34162),uint(30101),uint(34316),uint(34272),uint(56833),uint(31091),uint(46256),uint(46322),uint(40325),uint(30321),uint(35143),uint(31082),uint(34791),uint(34813),uint(34901),uint(30642),uint(34967),uint(34417),uint(34461),uint(46071),uint(34395),uint(46247),uint(31896),uint(46313),uint(46203),uint(46225),uint(34351),uint(34307),uint(34527),uint(46643),uint(46687),uint(34087),uint(46401),uint(34043),uint(47171),uint(34065),uint(34021),uint(52367),uint(34131),uint(52825),uint(46067),uint(31095),uint(46243),uint(46221),uint(38935),uint(46837),uint(52363),uint(46683),uint(34782),uint(34826),uint(34936),uint(34276),uint(34386),uint(34166),uint(34232),uint(34672),uint(34496),uint(34452),uint(46872),uint(40013),uint(34012),uint(54413),uint(54963),uint(30193),uint(30171),uint(30303),uint(30105),uint(30325),uint(45055),uint(55601),uint(35147),uint(40321)})))|(.Rotten:== uint(71)&.Peel:->contains($uint,[]uint{uint(32485),uint(32481),uint(32486),uint(32482),uint(32483),uint(32487)})))|(.Rotten:== uint(1004)&.Peel:->contains($uint,[]uint{uint(46991),uint(46992),uint(46970),uint(46901),uint(46902)})))|(.Peel:->contains($uint,[]uint{uint(44463),uint(30762),uint(44467),uint(54463),uint(30763),uint(41002),uint(44051),uint(41001),uint(44241),uint(44461),uint(44052),uint(41003),uint(30764),uint(44465),uint(54461),uint(44462),uint(44242),uint(30761),uint(44466),uint(54462)})&.Rotten:== uint(0)))|(.Rotten:== uint(5004)&.Peel:->contains($uint,[]uint{uint(19311),uint(13371),uint(12861),uint(16161),uint(16623),uint(16333),uint(11172),uint(15321),uint(19312),uint(18221),uint(12611),uint(13381),uint(16241),uint(12612),uint(15322),uint(13391),uint(16621),uint(15323),uint(12613),uint(16331),uint(13401),uint(16622),uint(16332),uint(11171)})))|(.Peel:->contains($uint,[]uint{uint(32060)})&.Rotten:== uint(1008)))|(.Rotten:== uint(10114)&.Peel:->contains($uint,[]uint{uint(12366),uint(16427),uint(7931),uint(15811),uint(7821),uint(16185),uint(11816),uint(17835),uint(14975),uint(12762),uint(18715),uint(1657),uint(18957),uint(18935),uint(60777),uint(60755),uint(12995),uint(6422),uint(14513),uint(12731),uint(11046),uint(16462),uint(17822),uint(13937),uint(18719),uint(18763),uint(18873),uint(18851),uint(12991),uint(4517),uint(11042),uint(11165),uint(17826),uint(17936),uint(3932),uint(18772),uint(18706),uint(18882),uint(18948),uint(11825),uint(6607),uint(60847),uint(11605),uint(12067),uint(60935),uint(15816),uint(19965),uint(11667),uint(15046),uint(11645),uint(46037),uint(11601),uint(2731),uint(11161),uint(12767),uint(61005),uint(12525),uint(12063),uint(9366),uint(11821),uint(60785),uint(16687),uint(12736),uint(16423),uint(1662),uint(5811),uint(12362),uint(64626),uint(60706),uint(60926),uint(18852),uint(10105),uint(4975),uint(15015),uint(17932),uint(65167),uint(12732),uint(60996),uint(64617),uint(18856),uint(16265),uint(16485),uint(11896),uint(18944),uint(60886),uint(60776),uint(15011),uint(12996),uint(13933),uint(2991),uint(17831),uint(16696),uint(18887),uint(18953),uint(18931),uint(18755),uint(18777),uint(6423),uint(18716),uint(15095),uint(18936),uint(11606),uint(11826),uint(11166),uint(7822),uint(7932),uint(11641),uint(15812),uint(11817),uint(17933),uint(18065),uint(11245),uint(1161),uint(60866),uint(13005),uint(18857),uint(18945),uint(12763),uint(12521),uint(14976),uint(60756),uint(17937),uint(11285),uint(18751),uint(60936),uint(18707),uint(18773),uint(15016),uint(3933),uint(18883),uint(60945),uint(12992),uint(2732),uint(16305),uint(64645),uint(16261),uint(17836),uint(17665),uint(60707),uint(17775),uint(4976),uint(60795),uint(18061),uint(60927),uint(60905),uint(1663),uint(1641),uint(5812),uint(12526),uint(16697),uint(18941),uint(10995),uint(16345),uint(11281),uint(18765),uint(54191),uint(18875),uint(18853),uint(15795),uint(15817),uint(14805),uint(11162),uint(11822),uint(18708),uint(11646),uint(11602),uint(14977),uint(2992),uint(11246),uint(6261),uint(15285),uint(15065),uint(17832),uint(11642),uint(60865),uint(14515),uint(64627),uint(64605),uint(16266),uint(18932),uint(16486),uint(11875),uint(18756),uint(11655),uint(60786),uint(7933),uint(15012),uint(16306),uint(16262),uint(12135),uint(60845),uint(60757),uint(11607),uint(11871),uint(15096),uint(18066),uint(1162),uint(13015),uint(18858),uint(18946),uint(13006),uint(60766),uint(12522),uint(16341),uint(10991),uint(11035),uint(16495),uint(11167),uint(16605),uint(15813),uint(5795),uint(1655),uint(18752),uint(11163),uint(16425),uint(11603),uint(11647),uint(17771),uint(11286),uint(4515),uint(4977),uint(18761),uint(18717),uint(1642),uint(18871),uint(18937),uint(14511),uint(11282),uint(11656),uint(14925),uint(6605),uint(10996),uint(5813),uint(13935),uint(64646),uint(11876),uint(60796),uint(60906),uint(12527),uint(29365),uint(18951),uint(19061),uint(64615),uint(12065),uint(18709),uint(12175),uint(6262),uint(16346),uint(18753),uint(18775),uint(18885),uint(19501),uint(15796),uint(65165),uint(60985),uint(12765),uint(12523),uint(64606),uint(18757),uint(16342),uint(16496),uint(18933),uint(16606),uint(18955),uint(13931),uint(60875),uint(12061),uint(60787),uint(60765),uint(19505),uint(15286),uint(19065),uint(15066),uint(17666),uint(17776),uint(14516),uint(18062),uint(46035),uint(11665),uint(16685),uint(11643),uint(18854),uint(18876),uint(18942),uint(18700),uint(16465),uint(16421),uint(54192),uint(18766),uint(16267),uint(1163),uint(14512),uint(18771),uint(18705),uint(5796),uint(18881),uint(18947),uint(11815),uint(11045),uint(16263),uint(16307),uint(11287),uint(16461),uint(11872),uint(10992),uint(11036),uint(13016),uint(1656),uint(15097),uint(19066),uint(18956),uint(12136),uint(60767),uint(12066),uint(16347),uint(17772),uint(4516),uint(15797),uint(60705),uint(6421),uint(18718),uint(60925),uint(1643),uint(18762),uint(12176),uint(18872),uint(6606),uint(60846),uint(12761),uint(12365),uint(16426),uint(17825),uint(17935),uint(64647),uint(64625),uint(12735),uint(12361),uint(3931),uint(16686),uint(18886),uint(18952),uint(18710),uint(19062),uint(16466),uint(16422),uint(18776),uint(19502),uint(46036),uint(11041),uint(65166),uint(14926),uint(11877),uint(17773),uint(6263),uint(13936),uint(11283),uint(11657),uint(1661),uint(19506),uint(17667),uint(17821),uint(17777),uint(13932),uint(17931),uint(12137),uint(60876),uint(11873),uint(11895),uint(16607),uint(16695),uint(64616),uint(29366),uint(18877),uint(18855),uint(18943),uint(16497),uint(12062),uint(16343),uint(18767),uint(54193),uint(60995),uint(64805),uint(15815),uint(5797),uint(11666),uint(9365),uint(14517),uint(60775),uint(60885),uint(12766),uint(15287),uint(15067),uint(15045)})))|(.Peel:->contains($uint,[]uint{uint(4351442),uint(235),uint(4462443),uint(240),uint(236),uint(4462442),uint(4351443),uint(241),uint(4462441),uint(242),uint(234),uint(4351441)})&.Rotten:== uint(4021)))|(.Rotten:== uint(3183)&.Peel:->contains($uint,[]uint{uint(40405),uint(27153),uint(23312),uint(44563),uint(34852),uint(40401),uint(34853),uint(46903),uint(23321),uint(23313),uint(40402),uint(23322),uint(40406),uint(23323),uint(40403),uint(44561),uint(40407),uint(27151),uint(46901),uint(44562),uint(34851),uint(23311),uint(46902),uint(27152)})))|(.Rotten:== uint(3172)&.Peel:->contains($uint,[]uint{uint(35812),uint(35922),uint(36252),uint(35152),uint(36912),uint(45276),uint(45562),uint(37352),uint(37022),uint(62721),uint(38012),uint(34052),uint(62752),uint(38122),uint(46301),uint(35953),uint(46037),uint(46741),uint(56412),uint(46785),uint(46587),uint(36151),uint(30101),uint(46323),uint(46345),uint(56742),uint(36723),uint(35121),uint(36613),uint(64151),uint(34791),uint(36921),uint(56302),uint(36811),uint(37053),uint(59311),uint(62712),uint(37251),uint(46341),uint(44823),uint(38021),uint(46385),uint(37911),uint(46407),uint(46033),uint(46077),uint(34131),uint(55272),uint(46781),uint(46583),uint(43371),uint(35552),uint(35222),uint(64111),uint(35112),uint(36622),uint(36952),uint(34342),uint(34056),uint(45271),uint(36753),uint(36951),uint(56662),uint(34057),uint(46063),uint(34541),uint(30172),uint(30106),uint(46327),uint(46305),uint(46745),uint(46406),uint(55923),uint(35852),uint(56341),uint(46032),uint(46076),uint(35522),uint(46582),uint(35214),uint(34752),uint(34796),uint(34136),uint(37312),uint(56301),uint(56411),uint(56323),uint(46402),uint(62751),uint(35913),uint(35821),uint(36023),uint(35711),uint(36111),uint(35513),uint(30185),uint(56741),uint(37123),uint(34545),uint(37211),uint(37321),uint(30176),uint(37013),uint(44343),uint(45566),uint(55562),uint(63323),uint(46072),uint(38113),uint(46201),uint(38123),uint(46311),uint(46641),uint(38013),uint(44375),uint(56303),uint(35813),uint(36152),uint(30177),uint(56061),uint(35153),uint(36922),uint(36812),uint(56413),uint(30102),uint(64152),uint(37252),uint(56743),uint(43372),uint(38022),uint(37912),uint(34053),uint(45277),uint(45541),uint(62753),uint(45563),uint(43821),uint(56791),uint(36051),uint(36821),uint(36711),uint(35122),uint(36623),uint(59312),uint(45273),uint(36953),uint(34792),uint(34132),uint(62713),uint(37151),uint(37921),uint(62722),uint(63351),uint(44811),uint(46386),uint(46342),uint(30181),uint(35553),uint(44371),uint(46782),uint(35223),uint(59321),uint(35113),uint(64121),uint(46746),uint(64112),uint(30182),uint(35224),uint(34542),uint(45545),uint(56342),uint(45567),uint(37313),uint(30173),uint(30107),uint(45272),uint(44511),uint(55273),uint(35853),uint(55911),uint(35721),uint(36112),uint(35523),uint(46306),uint(34797),uint(37322),uint(37212),uint(63311),uint(34137),uint(46786),uint(46742),uint(46346),uint(55541),uint(46302),uint(55563),uint(46073),uint(56663),uint(35822),uint(46645),uint(35923),uint(36011),uint(35712),uint(56201),uint(46205),uint(36121),uint(56311),uint(46381),uint(46403),uint(36253),uint(46315),uint(30186),uint(37221),uint(34546),uint(36913),uint(37353),uint(37023),uint(37111),uint(35823),uint(35911),uint(44121),uint(36021),uint(56062),uint(36153),uint(43373),uint(36923),uint(36813),uint(37253),uint(37011),uint(37121),uint(34547),uint(37913),uint(46343),uint(46387),uint(46321),uint(46035),uint(45542),uint(38023),uint(38111),uint(46202),uint(55543),uint(36052),uint(30178),uint(46642),uint(46312),uint(36712),uint(56203),uint(56313),uint(44341),uint(36822),uint(30103),uint(62723),uint(59322),uint(37152),uint(44812),uint(37922),uint(46396),uint(46066),uint(44372),uint(43822),uint(55921),uint(64153),uint(35951),uint(46783),uint(35211),uint(46585),uint(46431),uint(64122),uint(36611),uint(37051),uint(35123),uint(36721),uint(34793),uint(34133),uint(45546),uint(44512),uint(30183),uint(46382),uint(46646),uint(46206),uint(46316),uint(63352),uint(46395),uint(46307),uint(55912),uint(46065),uint(36113),uint(63321),uint(35511),uint(46747),uint(34543),uint(37213),uint(36751),uint(64113),uint(56792),uint(59313),uint(34345),uint(37323),uint(46743),uint(56202),uint(46303),uint(46325),uint(56312),uint(46347),uint(55542),uint(46391),uint(46787),uint(36012),uint(35722),uint(36122),uint(44521),uint(30174),uint(37222),uint(30187),uint(37112),uint(44376),uint(31661),uint(56321),uint(56343),uint(63312),uint(46061),uint(38112),uint(46322),uint(34051),uint(46036),uint(46432),uint(46586),uint(44342),uint(35921),uint(36053),uint(44122),uint(36251),uint(44813),uint(36713),uint(36911),uint(36823),uint(44373),uint(37351),uint(37021),uint(43823),uint(37153),uint(38011),uint(38121),uint(37923),uint(35952),uint(35551),uint(35221),uint(36722),uint(36612),uint(37052),uint(35111),uint(59323),uint(34341),uint(55271),uint(34055),uint(45275),uint(45561),uint(56063),uint(62711),uint(44822),uint(46067),uint(35212),uint(36621),uint(46647),uint(55913),uint(35851),uint(55561),uint(64123),uint(56793),uint(30105),uint(56661),uint(35521),uint(35213),uint(30171),uint(34795),uint(44821),uint(36752),uint(34751),uint(34135),uint(44522),uint(45547),uint(46031),uint(46405),uint(46383),uint(46581),uint(55922),uint(46075),uint(36013),uint(36123),uint(63353),uint(35512),uint(46207),uint(46317),uint(44377),uint(37113),uint(37223),uint(37311),uint(45543),uint(45565),uint(63322),uint(46071),uint(46203),uint(34346),uint(46643),uint(46313),uint(46401),uint(46062),uint(63313),uint(35912),uint(35811),uint(36022),uint(56322),uint(46392),uint(46326),uint(35151),uint(30175),uint(37012),uint(37122)})))|(.Peel:->contains($uint,[]uint{uint(43593),uint(43571),uint(34151),uint(26152),uint(26153),uint(43562),uint(24353),uint(41802),uint(55353),uint(55551),uint(42921),uint(45011),uint(55553),uint(34152),uint(42111),uint(42925),uint(41803),uint(55552),uint(43563),uint(43572),uint(35701),uint(45012),uint(35702),uint(42922),uint(43591),uint(34153),uint(31051),uint(45021),uint(31052),uint(42112),uint(55351),uint(42926),uint(24351),uint(45022),uint(35703),uint(43592),uint(26151),uint(42113),uint(24352),uint(41801),uint(43561),uint(55352)})&.Rotten:== uint(102)))|(.Peel:->contains($uint,[]uint{uint(22093),uint(22071),uint(20210),uint(22203),uint(22401),uint(20100),uint(22190),uint(22322),uint(22432),uint(22102),uint(22282),uint(22392),uint(22040),uint(22062),uint(20201),uint(26541),uint(22142),uint(22032),uint(20413),uint(22063),uint(22111),uint(22023),uint(22221),uint(22353),uint(22331),uint(22103),uint(20220),uint(22323),uint(22411),uint(22433),uint(20440),uint(26542),uint(22151),uint(22283),uint(20202),uint(22072),uint(22402),uint(26543),uint(20203),uint(22152),uint(22112),uint(22222),uint(22310),uint(22332),uint(22143),uint(22341),uint(22011),uint(22033),uint(22170),uint(22412),uint(22223),uint(22201),uint(22421),uint(22333),uint(22113),uint(22091),uint(22381),uint(22073),uint(22051),uint(20300),uint(20410),uint(22153),uint(22351),uint(22021),uint(22052),uint(20230),uint(22012),uint(22342),uint(22202),uint(22224),uint(22092),uint(22422),uint(22382),uint(20411),uint(22061),uint(22281),uint(22413),uint(22391),uint(26730),uint(22053),uint(22031),uint(20412),uint(22141),uint(22383),uint(22431),uint(22101),uint(22013),uint(20240),uint(22321),uint(22343),uint(22352),uint(22022)})&.Rotten:== uint(10005)))|(.Peel:->contains($uint,[]uint{uint(25692),uint(25802),uint(29093),uint(29071),uint(29423),uint(29401),uint(29511),uint(29282),uint(26761),uint(29502),uint(26620),uint(26862),uint(29471),uint(26563),uint(25881),uint(25683),uint(29472),uint(29032),uint(26863),uint(26621),uint(25763),uint(25723),uint(29322),uint(29432),uint(25952),uint(25930),uint(25512),uint(29433),uint(29072),uint(29512),uint(29402),uint(25882),uint(25693),uint(25803),uint(25561),uint(29481),uint(29503),uint(29041),uint(29151),uint(29283),uint(26600),uint(29042),uint(29152),uint(29284),uint(29033),uint(25751),uint(25971),uint(25883),uint(25641),uint(26710),uint(29473),uint(25931),uint(25953),uint(29310),uint(26591),uint(25681),uint(29060),uint(26561),uint(29073),uint(26750),uint(29513),uint(26521),uint(26631),uint(29482),uint(25562),uint(25650),uint(25540),uint(29483),uint(25642),uint(29043),uint(26632),uint(29241),uint(26711),uint(26522),uint(25972),uint(25752),uint(26592),uint(25932),uint(25690),uint(29421),uint(25721),uint(29091),uint(26562),uint(29092),uint(29422),uint(29281),uint(29501),uint(25801),uint(25933),uint(25691),uint(26861),uint(25871),uint(25563),uint(25761),uint(25682),uint(29360),uint(25973),uint(25951),uint(29031),uint(25643),uint(25753),uint(25511),uint(25762),uint(29110),uint(29242),uint(25872),uint(25520),uint(25722),uint(25700),uint(29321),uint(26690),uint(26712),uint(29431)})&.Rotten:== uint(10006)))|(.Rotten:== uint(7011)&.Peel:->contains($uint,[]uint{uint(30031),uint(30032),uint(1154125),uint(30033)})))|(.Peel:->contains($uint,[]uint{uint(29080),uint(29190),uint(29533),uint(29291),uint(29392),uint(29370),uint(29172),uint(29230),uint(29340),uint(29010),uint(29221),uint(29222),uint(29530),uint(29490),uint(29350),uint(29130),uint(29011),uint(29201),uint(29311),uint(29170),uint(29390),uint(29051),uint(29052),uint(29250),uint(29351),uint(29571),uint(29012),uint(29180),uint(29290),uint(29312),uint(29202),uint(29532),uint(29391),uint(29171),uint(29053),uint(29220),uint(29330),uint(29352),uint(29572)})&.Rotten:== uint(10001)))|(.Peel:->contains($uint,[]uint{uint(42012),uint(29587),uint(29521),uint(25746),uint(9282),uint(21575),uint(29455),uint(29477),uint(29411),uint(41352),uint(29433),uint(29037),uint(29081),uint(28751),uint(29015),uint(50222),uint(52611),uint(40252),uint(57222),uint(57552),uint(40912),uint(27352),uint(44322),uint(40811),uint(40723),uint(53412),uint(57451),uint(41251),uint(58111),uint(44313),uint(48352),uint(41053),uint(27321),uint(57913),uint(40921),uint(44621),uint(39623),uint(50521),uint(49751),uint(28553),uint(42452),uint(50323),uint(50213),uint(28091),uint(40151),uint(28082),uint(39412),uint(28522),uint(57323),uint(57521),uint(44111),uint(57653),uint(48612),uint(48722),uint(28016),uint(50253),uint(29446),uint(29622),uint(42153),uint(50451),uint(42021),uint(25715),uint(29556),uint(22701),uint(25737),uint(49923),uint(50011),uint(42351),uint(49813),uint(29402),uint(41713),uint(41911),uint(41823),uint(29415),uint(29437),uint(29327),uint(48911),uint(48713),uint(42052),uint(29525),uint(29481),uint(29085),uint(49153),uint(29151),uint(29195),uint(29283),uint(28711),uint(41612),uint(30251),uint(41722),uint(41854),uint(49351),uint(39421),uint(9401),uint(9423),uint(9093),uint(58951),uint(27312),uint(29723),uint(58753),uint(59351),uint(28712),uint(59021),uint(38452),uint(58911),uint(28052),uint(28096),uint(28272),uint(40014),uint(42513),uint(48312),uint(9551),uint(41611),uint(49711),uint(41413),uint(57811),uint(49821),uint(41721),uint(52923),uint(29724),uint(58251),uint(9133),uint(41853),uint(49513),uint(42051),uint(49623),uint(64952),uint(53011),uint(29526),uint(29482),uint(29416),uint(50151),uint(29086),uint(29152),uint(49953),uint(29196),uint(41523),uint(9432),uint(41752),uint(9322),uint(30221),uint(57952),uint(9102),uint(29451),uint(29473),uint(48611),uint(29583),uint(48721),uint(49051),uint(29187),uint(29011),uint(29033),uint(29055),uint(39011),uint(40212),uint(5732),uint(22702),uint(57512),uint(30111),uint(8011),uint(57912),uint(40221),uint(9472),uint(5741),uint(44722),uint(9450),uint(44612),uint(22706),uint(58022),uint(49223),uint(49553),uint(58352),uint(30212),uint(39451),uint(28087),uint(48211),uint(28065),uint(8051),uint(40111),uint(40023),uint(48321),uint(42522),uint(25742),uint(28285),uint(48453),uint(49852),uint(28276),uint(49522),uint(50512),uint(39922),uint(53222),uint(42311),uint(28056),uint(28166),uint(25711),uint(25733),uint(59452),uint(29442),uint(59012),uint(42223),uint(29552),uint(41211),uint(48752),uint(29486),uint(57151),uint(29156),uint(9032),uint(49412),uint(41651),uint(21571),uint(2701),uint(27353),uint(40152),uint(44411),uint(44323),uint(28167),uint(48912),uint(39052),uint(57452),uint(29025),uint(29091),uint(42651),uint(29135),uint(42321),uint(29245),uint(50311),uint(50223),uint(25712),uint(28277),uint(42013),uint(42211),uint(29038),uint(28752),uint(29082),uint(49211),uint(8271),uint(29016),uint(42022),uint(9151),uint(39413),uint(9041),uint(41912),uint(52612),uint(9283),uint(22861),uint(25747),uint(42352),uint(39611),uint(49651),uint(59212),uint(22707),uint(41252),uint(48221),uint(9481),uint(40812),uint(48551),uint(40922),uint(29522),uint(58112),uint(53422),uint(29412),uint(29456),uint(53312),uint(30151),uint(58952),uint(41613),uint(49713),uint(41151),uint(41811),uint(41723),uint(41921),uint(29711),uint(29447),uint(50351),uint(9411),uint(9433),uint(29425),uint(29557),uint(50153),uint(50021),uint(9081),uint(29205),uint(49823),uint(29315),uint(9103),uint(49911),uint(40051),uint(27322),uint(57522),uint(48613),uint(48723),uint(28092),uint(48921),uint(40711),uint(48811),uint(40821),uint(49251),uint(49053),uint(57751),uint(9402),uint(40852),uint(50452),uint(28721),uint(44112),uint(48151),uint(30252),uint(29095),uint(22865),uint(49352),uint(28061),uint(39422),uint(28083),uint(50012),uint(42053),uint(52621),uint(25716),uint(8311),uint(28523),uint(57311),uint(40851),uint(22703),uint(48951),uint(49413),uint(41511),uint(30121),uint(49721),uint(57821),uint(57953),uint(49853),uint(29527),uint(5711),uint(49523),uint(5733),uint(64953),uint(58151),uint(49611),uint(28062),uint(59352),uint(40213),uint(48621),uint(8461),uint(48753),uint(50152),uint(28097),uint(40024),uint(28273),uint(39012),uint(8012),uint(40222),uint(52911),uint(40112),uint(53021),uint(7581),uint(29285),uint(49052),uint(29241),uint(29461),uint(29483),uint(29021),uint(29417),uint(42523),uint(29087),uint(29131),uint(29197),uint(41621),uint(49712),uint(1571),uint(9552),uint(59251),uint(49822),uint(41753),uint(41951),uint(58921),uint(28713),uint(39452),uint(29012),uint(42312),uint(29034),uint(29056),uint(8052),uint(25743),uint(8272),uint(59453),uint(30222),uint(50522),uint(57152),uint(9042),uint(53223),uint(9152),uint(53421),uint(30112),uint(53311),uint(58353),uint(41652),uint(59211),uint(44622),uint(39021),uint(5742),uint(29452),uint(9284),uint(9482),uint(41212),uint(49752),uint(9350),uint(41221),uint(9033),uint(48212),uint(41551),uint(40913),uint(48322),uint(29751),uint(9473),uint(29421),uint(29311),uint(59022),uint(29553),uint(44613),uint(29465),uint(29443),uint(29487),uint(58912),uint(50513),uint(44811),uint(40121),uint(28066),uint(28286),uint(40011),uint(50051),uint(57812),uint(58252),uint(2702),uint(30213),uint(53012),uint(50211),uint(42023),uint(41913),uint(29752),uint(25713),uint(25735),uint(50013),uint(58113),uint(42353),uint(29246),uint(29312),uint(29466),uint(42221),uint(29422),uint(26351),uint(29092),uint(29136),uint(50321),uint(29026),uint(58751),uint(52622),uint(57211),uint(57321),uint(48913),uint(57453),uint(41253),uint(57651),uint(49221),uint(49551),uint(44421),uint(40923),uint(44311),uint(40712),uint(40822),uint(41152),uint(58122),uint(48451),uint(29721),uint(58012),uint(44412),uint(22862),uint(39612),uint(49652),uint(59213),uint(50312),uint(40052),uint(28115),uint(28093),uint(39423),uint(52921),uint(28511),uint(39621),uint(57312),uint(44122),uint(39951),uint(48623),uint(57752),uint(48711),uint(38411),uint(29523),uint(29611),uint(29435),uint(49912),uint(29281),uint(50022),uint(58953),uint(29413),uint(29325),uint(29105),uint(29083),uint(48051),uint(41922),uint(22866),uint(50352),uint(41812),uint(29426),uint(48922),uint(42151),uint(48812),uint(5712),uint(29096),uint(25717),uint(8312),uint(29206),uint(29316),uint(48152),uint(41513),uint(28722),uint(41711),uint(41623),uint(49252),uint(41821),uint(41953),uint(26311),uint(40721),uint(9412),uint(30152),uint(9082),uint(41051),uint(29712),uint(9522),uint(28723),uint(59252),uint(8462),uint(39453),uint(7582),uint(58922),uint(28041),uint(28085),uint(39651),uint(49722),uint(41622),uint(49854),uint(57822),uint(52912),uint(29713),uint(29581),uint(49612),uint(1572),uint(58152),uint(53022),uint(41952),uint(29317),uint(29471),uint(29427),uint(29405),uint(29031),uint(44812),uint(29097),uint(29185),uint(50052),uint(29207),uint(41512),uint(9421),uint(41653),uint(44121),uint(41851),uint(41411),uint(9091),uint(48622),uint(29462),uint(41213),uint(22867),uint(29286),uint(29242),uint(29022),uint(48952),uint(41521),uint(9553),uint(29132),uint(40223),uint(39022),uint(40113),uint(5743),uint(30122),uint(40751),uint(57813),uint(48552),uint(9483),uint(40122),uint(44821),uint(9571),uint(9351),uint(9241),uint(58121),uint(44711),uint(58011),uint(44623),uint(49212),uint(58253),uint(30113),uint(2703),uint(30223),uint(42313),uint(48222),uint(40012),uint(42511),uint(25731),uint(39053),uint(49951),uint(49753),uint(49511),uint(28551),uint(49621),uint(50523),uint(42652),uint(39911),uint(53211),uint(42322),uint(40153),uint(28045),uint(28111),uint(40021),uint(53321),uint(8053),uint(59221),uint(8273),uint(29651),uint(29431),uint(58913),uint(29475),uint(48851),uint(42212),uint(29585),uint(41222),uint(29101),uint(9043),uint(9021),uint(9131),uint(41552),uint(29035),uint(29057),uint(39921),uint(48351),uint(40251),uint(28046),uint(44422),uint(28112),uint(44312),uint(40053),uint(57221),uint(40713),uint(8313),uint(48923),uint(57551),uint(29036),uint(29102),uint(50322),uint(58752),uint(50212),uint(22863),uint(25745),uint(9281),uint(42222),uint(9083),uint(28552),uint(39613),uint(49552),uint(29093),uint(49222),uint(42451),uint(29137),uint(42011),uint(41923),uint(25736),uint(39622),uint(59223),uint(28521),uint(41153),uint(26352),uint(41813),uint(48452),uint(29753),uint(40911),uint(29621),uint(29555),uint(29467),uint(58123),uint(29247),uint(53411),uint(29313),uint(53213),uint(29423),uint(29401),uint(29445),uint(41351),uint(49812),uint(41822),uint(41052),uint(41712),uint(29722),uint(26321),uint(29436),uint(9422),uint(50252),uint(29612),uint(29106),uint(9092),uint(29282),uint(29326),uint(59051),uint(49922),uint(57511),uint(39952),uint(57753),uint(38421),uint(27311),uint(28015),uint(48712),uint(28081),uint(40722),uint(57951),uint(48822),uint(49152),uint(57652),uint(9413),uint(50353),uint(9523),uint(40753),uint(30153),uint(48052),uint(49253),uint(44321),uint(42152),uint(50221),uint(64951),uint(39411),uint(28116),uint(50023),uint(57212),uint(49913),uint(28512),uint(57322),uint(5713),uint(53221),uint(40752),uint(41522),uint(49952),uint(41412),uint(29582),uint(29714),uint(49512),uint(49622),uint(28095),uint(28051),uint(39652),uint(38451),uint(28271),uint(28513),uint(59451),uint(48852),uint(7583),uint(28042),uint(50251),uint(28086),uint(50053),uint(40013),uint(49921),uint(40211),uint(40123),uint(52922),uint(8463),uint(57313),uint(48953),uint(48821),uint(29472),uint(29032),uint(29406),uint(49151),uint(42512),uint(25741),uint(29186),uint(49723),uint(49613),uint(49811),uint(9431),uint(41852),uint(9321),uint(29155),uint(29133),uint(29243),uint(29287),uint(42323),uint(50313),uint(42521),uint(25732),uint(41751),uint(30211),uint(42213),uint(50511),uint(9031),uint(49213),uint(49411),uint(53212),uint(49521),uint(30123),uint(41553),uint(53322),uint(59222),uint(44611),uint(49851),uint(5731),uint(29463),uint(49653),uint(29485),uint(9471),uint(29441),uint(41223),uint(44721),uint(29551),uint(9022),uint(9132),uint(58351),uint(48311),uint(48553),uint(9572),uint(59253),uint(29586),uint(29652),uint(9352),uint(9242),uint(44712),uint(59011),uint(48751),uint(29476),uint(29432),uint(58923),uint(44822),uint(28055),uint(28165),uint(28275),uint(39912),uint(40022),uint(57911),uint(57823),uint(22705),uint(58153),uint(52913),uint(58021)})&.Rotten:== uint(40113)))|(.Peel:->contains($uint,[]uint{uint(32476),uint(46265),uint(32797),uint(32005),uint(32027),uint(46107),uint(32225),uint(30276),uint(32665),uint(32577),uint(46195),uint(32445),uint(61057),uint(32876),uint(32525),uint(32437),uint(32107),uint(32305),uint(32965),uint(46137),uint(32877),uint(32635),uint(46106),uint(38037),uint(30457),uint(32516),uint(32406),uint(32076),uint(46146),uint(32626),uint(32177),uint(61045),uint(46266),uint(32477),uint(46196),uint(32125),uint(32015),uint(30277),uint(32666),uint(32226),uint(32446),uint(32006),uint(32007),uint(32095),uint(32447),uint(32645),uint(32535),uint(32205),uint(32227),uint(32966),uint(32636),uint(30511),uint(65145),uint(32526),uint(32306),uint(32935),uint(32627),uint(32517),uint(32275),uint(32407),uint(30515),uint(32077),uint(32055),uint(32165),uint(46147),uint(30516),uint(32025),uint(32795),uint(32575),uint(61055),uint(32016),uint(32126),uint(61046),uint(46197),uint(32755),uint(32536),uint(32206),uint(30455),uint(32646),uint(32756),uint(30512),uint(65146),uint(32096),uint(47085),uint(32307),uint(32527),uint(32175),uint(38035),uint(32967),uint(46267),uint(46135),uint(32637),uint(32276),uint(32056),uint(32166),uint(32936),uint(32475),uint(61056),uint(32937),uint(32057),uint(46145),uint(32796),uint(32576),uint(30517),uint(30275),uint(47087),uint(32026),uint(32435),uint(32875),uint(32017),uint(32105),uint(32127),uint(61047),uint(46105),uint(32106),uint(32436),uint(32757),uint(32647),uint(32625),uint(47086),uint(30456),uint(38036),uint(32515),uint(32405),uint(32537),uint(32097),uint(32075),uint(32207),uint(65147),uint(30513),uint(32176),uint(46136)})&.Rotten:== uint(20111)))|(.Peel:->contains($uint,[]uint{uint(40352),uint(43971),uint(40351),uint(43972)})&.Rotten:== uint(3181)))|(.Peel:->contains($uint,[]uint{uint(14681),uint(11192),uint(15473),uint(15231),uint(15143),uint(15033),uint(11852),uint(13691),uint(13801),uint(11302),uint(11931),uint(17783),uint(11843),uint(15442),uint(12811),uint(12833),uint(12723),uint(12213),uint(11443),uint(11773),uint(14712),uint(15152),uint(17541),uint(13612),uint(13942),uint(11003),uint(11223),uint(11311),uint(15803),uint(13762),uint(13652),uint(12882),uint(16723),uint(10713),uint(10691),uint(11351),uint(14743),uint(15271),uint(14061),uint(12002),uint(15531),uint(10744),uint(15443),uint(13991),uint(11932),uint(14761),uint(16512),uint(15632),uint(13023),uint(12161),uint(11853),uint(13613),uint(13811),uint(13921),uint(15232),uint(17621),uint(14682),uint(12812),uint(11303),uint(15971),uint(13802),uint(18211),uint(13692),uint(11193),uint(10111),uint(14062),uint(17551),uint(11444),uint(16011),uint(11312),uint(13943),uint(14691),uint(14713),uint(11352),uint(15633),uint(17811),uint(18251),uint(18141),uint(13301),uint(13521),uint(13653),uint(19241),uint(13763),uint(12003),uint(14071),uint(19021),uint(15272),uint(10692),uint(13693),uint(12813),uint(13803),uint(12571),uint(15972),uint(15532),uint(19861),uint(17481),uint(14762),uint(11801),uint(16513),uint(16711),uint(13992),uint(10631),uint(10741),uint(14692),uint(11071),uint(11841),uint(13812),uint(11313),uint(13922),uint(12162),uint(18212),uint(14683),uint(14771),uint(15233),uint(17622),uint(15101),uint(15801),uint(13522),uint(15031),uint(15471),uint(15273),uint(15141),uint(10112),uint(12831),uint(12721),uint(14063),uint(13993),uint(16712),uint(19022),uint(11001),uint(10693),uint(11221),uint(11441),uint(11353),uint(15634),uint(13654),uint(18151),uint(17451),uint(12211),uint(14072),uint(11771),uint(15102),uint(10711),uint(17781),uint(17623),uint(14772),uint(12163),uint(16721),uint(12572),uint(11802),uint(15973),uint(15533),uint(14763),uint(14741),uint(12722),uint(12832),uint(11842),uint(10113),uint(15441),uint(13923),uint(10632),uint(14693),uint(13021),uint(13241),uint(10742),uint(17782),uint(11072),uint(13813),uint(14073),uint(10694),uint(17452),uint(14711),uint(11442),uint(11772),uint(13611),uint(11002),uint(13523),uint(11222),uint(13941),uint(15472),uint(11851),uint(15142),uint(15802),uint(15032),uint(11191),uint(11301),uint(12001),uint(11803),uint(12881),uint(12573),uint(14742),uint(16713),uint(12212),uint(15151),uint(13022),uint(13924),uint(16511),uint(10633),uint(11073),uint(15631),uint(10743),uint(15081),uint(15103),uint(14773),uint(10712),uint(13211),uint(13321),uint(13651),uint(13761),uint(16722),uint(19001)})&.Rotten:== uint(6000)))|(.Rotten:== uint(50104)&.Peel:->contains($uint,[]uint{uint(10790),uint(10900),uint(14587),uint(14565),uint(14543),uint(10526),uint(16985),uint(13883),uint(15502),uint(62395),uint(62945),uint(62857),uint(62615),uint(19581),uint(62835),uint(19515),uint(14556),uint(14666),uint(16576),uint(17693),uint(62936),uint(11745),uint(19541),uint(14596),uint(14662),uint(14552),uint(14178),uint(19981),uint(19585),uint(61572),uint(10865),uint(10909),uint(15951),uint(10799),uint(62386),uint(15687),uint(15621),uint(14174),uint(13888),uint(14592),uint(62267),uint(62707),uint(19511),uint(62465),uint(62905),uint(62795),uint(10795),uint(10905),uint(16035),uint(16572),uint(15683),uint(59583),uint(15507),uint(62456),uint(62786),uint(62346),uint(60142),uint(17694),uint(10808),uint(10522),uint(10918),uint(62896),uint(14583),uint(14561),uint(15503),uint(15195),uint(17698),uint(65175),uint(14667),uint(14557),uint(13875),uint(15956),uint(62447),uint(15626),uint(16981),uint(12225),uint(62777),uint(62755),uint(19986),uint(62865),uint(62887),uint(13871),uint(62845),uint(62867),uint(62757),uint(15952),uint(15622),uint(12221),uint(14566),uint(13884),uint(10527),uint(16577),uint(14170),uint(19582),uint(19516),uint(11715),uint(16031),uint(14562),uint(10545),uint(10523),uint(19586),uint(10809),uint(19982),uint(11711),uint(62396),uint(62836),uint(62858),uint(62946),uint(10919),uint(62616),uint(16115),uint(11746),uint(62387),uint(15191),uint(62937),uint(10800),uint(10910),uint(10866),uint(14553),uint(14575),uint(14663),uint(52831),uint(14597),uint(14179),uint(16986),uint(16111),uint(12226),uint(16573),uint(15957),uint(62906),uint(19512),uint(15627),uint(17695),uint(52835),uint(14175),uint(61573),uint(14593),uint(13185),uint(18641),uint(13625),uint(18861),uint(16036),uint(10796),uint(10906),uint(62466),uint(19587),uint(19983),uint(60143),uint(18865),uint(13621),uint(14171),uint(62457),uint(65176),uint(62325),uint(62347),uint(62765),uint(13885),uint(18645),uint(62897),uint(62787),uint(16032),uint(19987),uint(13181),uint(16982),uint(10915),uint(15196),uint(62756),uint(10805),uint(62866),uint(10145),uint(10541),uint(13876),uint(15192),uint(19583),uint(10867),uint(19517),uint(11747),uint(62327),uint(13872),uint(15953),uint(11716),uint(15623),uint(62846),uint(10141),uint(14545),uint(18866),uint(14567),uint(12222),uint(62837),uint(62859),uint(62947),uint(62617),uint(62705),uint(16037),uint(11712),uint(15685),uint(13186),uint(14585),uint(14563),uint(14541),uint(52832),uint(13881),uint(16987),uint(17691),uint(16116),uint(10546),uint(62397),uint(62265),uint(10146),uint(13877),uint(18862),uint(14581),uint(10806),uint(16112),uint(10916),uint(10542),uint(62938),uint(62467),uint(62445),uint(62775),uint(10797),uint(12227),uint(10907),uint(62907),uint(62885),uint(59581),uint(14176),uint(13626),uint(16983),uint(12223),uint(13886),uint(14546),uint(14172),uint(11717),uint(19513),uint(65177),uint(13622),uint(16033),uint(13182),uint(15505),uint(62326),uint(15681),uint(17696),uint(15197),uint(62788),uint(62766),uint(52836),uint(13882),uint(16117),uint(62856),uint(15501),uint(10547),uint(10525),uint(15193),uint(14555),uint(14665),uint(13873),uint(10142),uint(10868),uint(14595),uint(14551),uint(10798),uint(14661),uint(52833),uint(61571),uint(14177),uint(60141),uint(62385),uint(13187),uint(62847),uint(62935),uint(13627),uint(10908),uint(17692),uint(11713),uint(62266),uint(15686),uint(62706),uint(14542),uint(14586),uint(19985),uint(59582),uint(62895),uint(19545),uint(15506),uint(15682),uint(14582),uint(16113),uint(10807),uint(10543),uint(10521),uint(16571),uint(10917),uint(10147),uint(62455),uint(62345),uint(62785),uint(62446),uint(15955),uint(62886),uint(62776),uint(16575),uint(10869),uint(15625),uint(10143),uint(10860),uint(17697),uint(62767),uint(52837),uint(62855),uint(14591),uint(14547),uint(13623),uint(13183),uint(14173),uint(13887)})))|(.Rotten:== uint(1161)&.Peel:->contains($uint,[]uint{uint(1139112),uint(1275116),uint(1153112),uint(1153116),uint(1638113),uint(1275111),uint(1002113),uint(1139116),uint(1044112),uint(1774113),uint(1650111),uint(1153111),uint(1650113),uint(1139111),uint(1139115),uint(1638115),uint(1275115),uint(1153115),uint(1637111),uint(1113113),uint(1002112),uint(1491111),uint(465),uint(1650112),uint(1044113),uint(1001113),uint(1774111),uint(1637113),uint(1638116),uint(1113111),uint(1002111),uint(1113112),uint(1637112),uint(466),uint(1001112),uint(1491112),uint(1638111),uint(1275117),uint(1774112),uint(1153113),uint(1275113),uint(1139113),uint(1638117),uint(1638112),uint(1153117),uint(1139117),uint(1491113),uint(1275112),uint(467),uint(1001111),uint(1044111)})))|(.Peel:->contains($uint,[]uint{uint(14081),uint(14323),uint(14433),uint(61251),uint(15986),uint(16413),uint(16633),uint(17755),uint(61977),uint(62065),uint(62087),uint(61955),uint(18503),uint(62197),uint(62175),uint(11485),uint(16417),uint(16637),uint(11107),uint(62056),uint(18507),uint(11481),uint(11692),uint(15643),uint(15555),uint(16448),uint(10073),uint(14631),uint(17751),uint(15925),uint(15551),uint(10047),uint(62047),uint(62135),uint(61915),uint(62025),uint(62245),uint(10126),uint(19995),uint(16638),uint(62236),uint(62126),uint(61255),uint(15982),uint(13087),uint(14645),uint(14095),uint(16906),uint(13083),uint(11486),uint(17676),uint(19955),uint(11103),uint(14636),uint(62139),uint(62205),uint(14086),uint(62007),uint(61985),uint(11675),uint(62095),uint(11697),uint(19991),uint(11693),uint(15556),uint(16634),uint(12595),uint(61921),uint(62097),uint(61965),uint(61987),uint(14632),uint(62207),uint(14082),uint(17756),uint(62066),uint(15987),uint(15921),uint(16445),uint(19956),uint(16907),uint(15305),uint(15983),uint(64895),uint(10127),uint(61956),uint(15301),uint(14641),uint(14795),uint(14091),uint(61252),uint(61925),uint(62145),uint(18495),uint(62035),uint(62057),uint(11482),uint(62026),uint(61916),uint(14791),uint(62136),uint(62246),uint(61256),uint(10048),uint(14637),uint(19996),uint(14087),uint(11676),uint(13735),uint(15926),uint(18245),uint(12591),uint(15552),uint(12855),uint(15922),uint(12851),uint(11487),uint(61995),uint(15306),uint(62237),uint(62215),uint(18491),uint(62105),uint(62127),uint(14646),uint(62096),uint(14096),uint(61986),uint(62206),uint(17752),uint(14092),uint(10075),uint(17757),uint(18505),uint(16195),uint(12596),uint(15557),uint(16446),uint(15645),uint(16908),uint(14435),uint(14633),uint(19957),uint(13731),uint(14083),uint(61922),uint(14325),uint(61966),uint(62208),uint(18492),uint(61253),uint(15553),uint(61957),uint(61935),uint(64896),uint(62067),uint(62045),uint(14321),uint(14431),uint(18496),uint(11483),uint(16415),uint(16635),uint(15302),uint(19992),uint(14642),uint(14796),uint(13085),uint(19997),uint(11677),uint(14792),uint(62146),uint(61926),uint(62036),uint(10049),uint(10071),uint(13736),uint(61917),uint(62005),uint(62027),uint(62225),uint(62247),uint(62137),uint(12592),uint(11105),uint(12856),uint(15927),uint(15641),uint(14436),uint(14326),uint(16411),uint(10045),uint(16631),uint(11695),uint(12852),uint(13732),uint(17753),uint(11101),uint(15923),uint(61257),uint(15307),uint(18501),uint(14647),uint(62128),uint(62216),uint(61996),uint(14097),uint(62106),uint(15985),uint(16447),uint(15303),uint(62130),uint(62086),uint(16909),uint(61976),uint(14643),uint(62196),uint(14797),uint(14093),uint(13081),uint(62209),uint(62055),uint(18493),uint(16412),uint(15646),uint(16632),uint(10076),uint(12597),uint(18497),uint(13737),uint(19993),uint(15642),uint(16416),uint(61254),uint(10072),uint(12593),uint(16636),uint(16900),uint(61967),uint(12857),uint(61923),uint(64897),uint(14322),uint(61936),uint(14432),uint(18506),uint(62046),uint(11691),uint(61927),uint(62037),uint(62125),uint(62235),uint(62147),uint(10125),uint(15981),uint(13086),uint(11106),uint(14793),uint(11696),uint(13082),uint(15647),uint(62006),uint(61918),uint(18502),uint(62248),uint(62138),uint(10077),uint(14327),uint(14437),uint(14635),uint(62107),uint(62085),uint(62195),uint(14085),uint(10046),uint(61975),uint(61997),uint(16905),uint(62217),uint(13733),uint(17675),uint(11102),uint(61258),uint(12853)})&.Rotten:== uint(50106)))|(.Peel:->contains($uint,[]uint{uint(21112),uint(21090),uint(21552),uint(21442),uint(21402),uint(21182),uint(21270),uint(21081),uint(21103),uint(21191),uint(21482),uint(21491),uint(21403),uint(21051),uint(21183),uint(21121),uint(21143),uint(21231),uint(21011),uint(21451),uint(21561),uint(21152),uint(21042),uint(21553),uint(21443),uint(21311),uint(21091),uint(21113),uint(21562),uint(21320),uint(21012),uint(21122),uint(21232),uint(21500),uint(21082),uint(21192),uint(21492),uint(21404),uint(21052),uint(21184),uint(21483),uint(21461),uint(21571),uint(21131),uint(21153),uint(21241),uint(21043),uint(21013),uint(21101),uint(21123),uint(21563),uint(21233),uint(21061),uint(21171),uint(21281),uint(21092),uint(21070),uint(21312),uint(21260),uint(21282),uint(21062),uint(21172),uint(21132),uint(21242),uint(21220),uint(21022),uint(21572),uint(21462),uint(21031),uint(21053),uint(21141),uint(21102),uint(21124),uint(21551),uint(21441),uint(21463),uint(21023),uint(21133),uint(21111),uint(21401),uint(21093),uint(21181),uint(21313),uint(21481),uint(21283),uint(21041),uint(21063),uint(21151),uint(21991),uint(21142),uint(21032),uint(21054)})&.Rotten:== uint(10004)))|(.Rotten:== uint(5023)&.Peel:->contains($uint,[]uint{uint(16561121),uint(1610112),uint(1450116),uint(1359113),uint(12341122),uint(1167113),uint(11181123),uint(1148117),uint(1118115),uint(19881122),uint(1356117),uint(1449113),uint(13561123),uint(1234113),uint(1884113),uint(13591121),uint(1460117),uint(16101121),uint(14091123),uint(1450112),uint(1443112),uint(23351122),uint(1360116),uint(1995111),uint(1357111),uint(11481123),uint(21621122),uint(14481122),uint(13861123),uint(1148112),uint(61141122),uint(21651123),uint(1408113),uint(1460113),uint(1357115),uint(1592113),uint(12891121),uint(1945111),uint(13601121),uint(16131123),uint(1359117),uint(12331122),uint(18841121),uint(1356112),uint(1656111),uint(1360111),uint(1356116),uint(1386111),uint(1333115),uint(14081123),uint(1416112),uint(22631121),uint(15921123),uint(14161122),uint(1995115),uint(14481113),uint(14431111),uint(1409112),uint(21981123),uint(1450117),uint(1148116),uint(21711123),uint(6114112),uint(11181122),uint(20811121),uint(1358111),uint(12341121),uint(13591122),uint(1811113),uint(13331121),uint(1234112),uint(1448111),uint(12681123),uint(1360113),uint(19881121),uint(1849127),uint(1357112),uint(1450113),uint(14091122),uint(16131122),uint(1360117),uint(1775112),uint(61021121),uint(1443113),uint(1849123),uint(13581121),uint(1333111),uint(23351121),uint(1610113),uint(14501123),uint(21621121),uint(19451123),uint(1333112),uint(18111123),uint(1356113),uint(1148111),uint(11481122),uint(61141123),uint(1408112),uint(1775111),uint(19951121),uint(1358115),uint(14481123),uint(1268113),uint(13601122),uint(1945112),uint(1849122),uint(1289113),uint(1007113),uint(6114113),uint(14491123),uint(1148115),uint(14601121),uint(21711122),uint(12331121),uint(1656112),uint(1234117),uint(1360112),uint(6102111),uint(1333116),uint(1416111),uint(1409111),uint(14431112),uint(1357116),uint(12891122),uint(11481113),uint(14081122),uint(14161123),uint(13571121),uint(1995113),uint(1233112),uint(13591123),uint(1007117),uint(1849126),uint(19451122),uint(1289117),uint(13561121),uint(1449115),uint(1359111),uint(13331122),uint(11181121),uint(20811122),uint(16561123),uint(1448112),uint(14091121),uint(14431121),uint(12681122),uint(61021122),uint(1359115),uint(1268117),uint(61251123),uint(1234111),uint(16131121),uint(1118113),uint(1358112),uint(1167111),uint(1884111),uint(1811112),uint(1775113),uint(13581122),uint(14501122),uint(1449111),uint(1849121),uint(11481112),uint(14481111),uint(1358116),uint(1289112),uint(14431113),uint(19951122),uint(14081121),uint(1333113),uint(15921121),uint(18111122),uint(1007112),uint(1357113),uint(13601123),uint(1592111),uint(13861121),uint(11481121),uint(61251122),uint(1234116),uint(6102112),uint(21711121),uint(14601122),uint(18841123),uint(1408111),uint(12891123),uint(1945113),uint(21981121),uint(1268112),uint(14491122),uint(14431122),uint(1233113),uint(13571122),uint(1995117),uint(1460115),uint(1449116),uint(1386113),uint(1656113),uint(1289116),uint(22631123),uint(1357117),uint(1333117),uint(1007116),uint(1118117),uint(19881123),uint(19451121),uint(13561122),uint(1448113),uint(1167112),uint(1118116),uint(1884112),uint(16561122),uint(12681121),uint(1360115),uint(61021123),uint(12341123),uint(1233111),uint(1450115),uint(1359112),uint(20811123),uint(1610111),uint(1811111),uint(1460111),uint(13331123),uint(16101122),uint(1356111),uint(1449112),uint(14501121),uint(1359116),uint(21651121),uint(13581123),uint(1289111),uint(1268116),uint(1849125),uint(1118112),uint(1995112),uint(1443111),uint(1358113),uint(12331123),uint(1118111),uint(1007111),uint(61251121),uint(14481121),uint(61141121),uint(1450111),uint(6114111),uint(11481111),uint(23351123),uint(1358117),uint(1268115),uint(14601123),uint(1148113),uint(18841122),uint(16101123),uint(21621123),uint(14481112),uint(13861122),uint(1409113),uint(1460112),uint(18111121),uint(1592112),uint(21651122),uint(1449117),uint(21981122),uint(1289115),uint(1995116),uint(13571123),uint(14161121),uint(1460116),uint(1386112),uint(1007115),uint(14431123),uint(22631122),uint(1234115),uint(6102113),uint(1416113),uint(15921122),uint(19951123),uint(1356115),uint(1268111),uint(14491121)})))|(.Peel:->contains($uint,[]uint{uint(12151),uint(16212),uint(14782),uint(10202),uint(12503),uint(12934),uint(13792),uint(14122),uint(12582),uint(16731),uint(11051),uint(10281),uint(15521),uint(14052),uint(17431),uint(12952),uint(11421),uint(10752),uint(14813),uint(11082),uint(11412),uint(13713),uint(13823),uint(14241),uint(15161),uint(15491),uint(15513),uint(14853),uint(15601),uint(14831),uint(17682),uint(14303),uint(12323),uint(16362),uint(13643),uint(14932),uint(14822),uint(15482),uint(16732),uint(12583),uint(13661),uint(13793),uint(13771),uint(15522),uint(19851),uint(10282),uint(13982),uint(17361),uint(14752),uint(17731),uint(14242),uint(10753),uint(17291),uint(11413),uint(11831),uint(16213),uint(11083),uint(14981),uint(11052),uint(14123),uint(12504),uint(14783),uint(12152),uint(15483),uint(15461),uint(11422),uint(14823),uint(12953),uint(12931),uint(13481),uint(14053),uint(13983),uint(12311),uint(15492),uint(15602),uint(15162),uint(17683),uint(14832),uint(13644),uint(18031),uint(11431),uint(10283),uint(11053),uint(14982),uint(12153),uint(13662),uint(13772),uint(16733),uint(15523),uint(15611),uint(14753),uint(14291),uint(19641),uint(10151),uint(14841),uint(11832),uint(18071),uint(12932),uint(17732),uint(13781),uint(19611),uint(14243),uint(10754),uint(13821),uint(13711),uint(12501),uint(11432),uint(15462),uint(13482),uint(11423),uint(14842),uint(15612),uint(12321),uint(14292),uint(18230),uint(12312),uint(15163),uint(15493),uint(15603),uint(14811),uint(14833),uint(13782),uint(15511),uint(14983),uint(14851),uint(13773),uint(14301),uint(10152),uint(16734),uint(13663),uint(13641),uint(14121),uint(14781),uint(12933),uint(13483),uint(13791),uint(18081),uint(17733),uint(12581),uint(19291),uint(11833),uint(11081),uint(11411),uint(11433),uint(12951),uint(12313),uint(14812),uint(19251),uint(12502),uint(16211),uint(13712),uint(13822),uint(10201),uint(15463),uint(10751),uint(13664),uint(13642),uint(16361),uint(12322),uint(15481),uint(10153),uint(15613),uint(14293),uint(19771),uint(14821),uint(14931),uint(14843),uint(14051),uint(14751),uint(13783),uint(13981),uint(15512),uint(14302),uint(17681),uint(14852)})&.Rotten:== uint(6004)))|(.Rotten:== uint(5021)&.Peel:->contains($uint,[]uint{uint(1100111),uint(1456113),uint(1562117),uint(1603112),uint(1109113),uint(1154125),uint(1141117),uint(1079124),uint(1552112),uint(79),uint(15741122),uint(1090128),uint(1318116),uint(1597115),uint(1417111),uint(1477113),uint(1574111),uint(1691112),uint(1381112),uint(1366113),uint(2874122),uint(1671115),uint(1544113),uint(1597111),uint(11711121),uint(1291112),uint(1144113),uint(17691122),uint(1231117),uint(1553111),uint(16911122),uint(11091123),uint(1671111),uint(1075111),uint(1481113),uint(1789115),uint(1902121),uint(1388112),uint(1899125),uint(6111112),uint(14171123),uint(1171117),uint(1154121),uint(6124113),uint(1109117),uint(1382111),uint(14171122),uint(1481112),uint(6115111),uint(1902122),uint(1171113),uint(13491121),uint(1621112),uint(1141112),uint(1371112),uint(1417115),uint(15331121),uint(1366117),uint(1399112),uint(1348113),uint(1791121),uint(1457121),uint(1193111),uint(1562112),uint(1231113),uint(1378112),uint(1090124),uint(1571123),uint(1135111),uint(1565113),uint(1183111),uint(1369113),uint(1054111),uint(22801121),uint(1671116),uint(1482111),uint(335),uint(1899121),uint(1597116),uint(1135115),uint(1349112),uint(1902126),uint(1553115),uint(1388117),uint(1079123),uint(61111121),uint(16031121),uint(1603117),uint(1318112),uint(80),uint(1544112),uint(1562116),uint(1902127),uint(1381111),uint(1691111),uint(1603113),uint(2874121),uint(1789112),uint(10901212),uint(22801122),uint(1079125),uint(1108113),uint(1575113),uint(1291111),uint(16911123),uint(1177115),uint(243),uint(1141116),uint(1565112),uint(1552111),uint(1543113),uint(1571122),uint(1231116),uint(1109116),uint(1789116),uint(6111113),uint(17691121),uint(1380117),uint(1144112),uint(1544116),uint(1483116),uint(1026121),uint(11711122),uint(15741123),uint(1090127),uint(1561113),uint(1318117),uint(14661123),uint(1193113),uint(13881121),uint(1597112),uint(11091122),uint(1388111),uint(1193112),uint(1105113),uint(1791122),uint(1349113),uint(1466111),uint(1399111),uint(1388116),uint(1222111),uint(6115112),uint(1090123),uint(1177111),uint(1483115),uint(1544117),uint(1562111),uint(1075112),uint(1378111),uint(13181121),uint(1231112),uint(11091113),uint(1457122),uint(1141111),uint(1621113),uint(15331122),uint(1371111),uint(1902123),uint(1550113),uint(1482112),uint(15621121),uint(1575112),uint(1141115),uint(1318113),uint(1466115),uint(1789111),uint(1109112),uint(16031122),uint(2256123),uint(1054112),uint(1717113),uint(1597117),uint(1183112),uint(1380113),uint(1483111),uint(1366111),uint(1108112),uint(1026122),uint(1382113),uint(1789113),uint(10901211),uint(1183113),uint(1597113),uint(1565111),uint(16031123),uint(244),uint(1177116),uint(1574113),uint(22801123),uint(1109115),uint(1553113),uint(1380111),uint(1543112),uint(1456115),uint(1863113),uint(1144111),uint(1595111),uint(1466116),uint(1079126),uint(13881122),uint(6124111),uint(1544115),uint(14661122),uint(1090126),uint(1483117),uint(1789117),uint(1105111),uint(1964112),uint(1100113),uint(1456111),uint(11091112),uint(1477115),uint(1561112),uint(1231115),uint(1366115),uint(1108116),uint(11091121),uint(1671113),uint(1571121),uint(1769112),uint(11711123),uint(1562115),uint(1482113),uint(1108117),uint(1466112),uint(1135113),uint(1222112),uint(1369111),uint(1769111),uint(1054113),uint(1791123),uint(1388115),uint(1561111),uint(13491123),uint(1570122),uint(15331123),uint(1417117),uint(1380116),uint(1075113),uint(1964113),uint(1105112),uint(13181122),uint(1171115),uint(1553117),uint(61111123),uint(1079121),uint(1483112),uint(1231111),uint(1417113),uint(1550112),uint(1603115),uint(1380112),uint(1456116),uint(1863112),uint(1171111),uint(2329121),uint(1090122),uint(1717112),uint(15621122),uint(1544111),uint(1348111),uint(2256122),uint(1575111),uint(6115113),uint(1477111),uint(1109111),uint(1177112),uint(245),uint(15741121),uint(6111111),uint(1466117),uint(1090129),uint(333),uint(1552113),uint(2874123),uint(1477112),uint(1108111),uint(14661121),uint(1318115),uint(1595112),uint(13881123),uint(1366112),uint(1381113),uint(78),uint(1543111),uint(1574112),uint(1135117),uint(1691113),uint(1553112),uint(1388113),uint(1171116),uint(1177117),uint(1964111),uint(1769113),uint(6124112),uint(1100112),uint(1382112),uint(1477116),uint(10901210),uint(1603111),uint(1671112),uint(1366116),uint(1108115),uint(17691123),uint(11091111),uint(1456112),uint(16911121),uint(1291113),uint(1621111),uint(1318111),uint(1717111),uint(1371113),uint(2256121),uint(1477117),uint(13491122),uint(1380115),uint(1378113),uint(13181123),uint(1481111),uint(1348112),uint(1090125),uint(1135112),uint(1483113),uint(1562113),uint(1369112),uint(1417116),uint(1570121),uint(14171121),uint(1222113),uint(1090121),uint(1177113),uint(1902125),uint(1671117),uint(1135116),uint(2329122),uint(1863111),uint(1595113),uint(1417112),uint(1349111),uint(61111122),uint(1399113),uint(1079122),uint(1141113),uint(1456117),uint(1603116),uint(1466113),uint(1550111),uint(1553116),uint(334),uint(1791124),uint(1171112),uint(15621123)})))|(.Rotten:== uint(4003)&.Peel:->contains($uint,[]uint{uint(15643),uint(12682),uint(13861),uint(14081),uint(14631),uint(14323),uint(11692),uint(14653),uint(14433),uint(18041),uint(12233),uint(12343),uint(13333),uint(12893),uint(16642),uint(12713),uint(18111),uint(13593),uint(13571),uint(16312),uint(15212),uint(14882),uint(16633),uint(16743),uint(11481),uint(16413),uint(13562),uint(14262),uint(14482),uint(17751),uint(12942),uint(13602),uint(16563),uint(19951),uint(16321),uint(18112),uint(11182),uint(15551),uint(14143),uint(17302),uint(14473),uint(15921),uint(11112),uint(14491),uint(14161),uint(12894),uint(14601),uint(12683),uint(13563),uint(18042),uint(12331),uint(16634),uint(14091),uint(14632),uint(10681),uint(11671),uint(11693),uint(18051),uint(13862),uint(14082),uint(11183),uint(12261),uint(13572),uint(16643),uint(11491),uint(16313),uint(11482),uint(19991),uint(19881),uint(14531),uint(15213),uint(14883),uint(19952),uint(16001),uint(18113),uint(17752),uint(13581),uint(13603),uint(13141),uint(12943),uint(14483),uint(12591),uint(12481),uint(14263),uint(16322),uint(15552),uint(13863),uint(14083),uint(14501),uint(14633),uint(19371),uint(10682),uint(15922),uint(11113),uint(14602),uint(17761),uint(14492),uint(14162),uint(11483),uint(12231),uint(12341),uint(14092),uint(14532),uint(18052),uint(12332),uint(11672),uint(16631),uint(12592),uint(16741),uint(16191),uint(13582),uint(12262),uint(16081),uint(16411),uint(15641),uint(15553),uint(14321),uint(19992),uint(14651),uint(13221),uint(12891),uint(14431),uint(11492),uint(13331),uint(13441),uint(13573),uint(14141),uint(14163),uint(14471),uint(14493),uint(17762),uint(13261),uint(14603),uint(13591),uint(12711),uint(17753),uint(11673),uint(14502),uint(12333),uint(17441),uint(16671),uint(19953),uint(16561),uint(15923),uint(13332),uint(12892),uint(12232),uint(12342),uint(16271),uint(14533),uint(14093),uint(14881),uint(15211),uint(19993),uint(13341),uint(13561),uint(13583),uint(16742),uint(16632),uint(16412),uint(15554),uint(15642),uint(11493),uint(11691),uint(14652),uint(14322),uint(14432),uint(12681),uint(12263),uint(16562),uint(12941),uint(17763),uint(13592),uint(17301),uint(14142),uint(12712),uint(16641),uint(14472),uint(11181),uint(16311),uint(16791),uint(11111),uint(19910),uint(13601),uint(14261),uint(14503),uint(14481),uint(16672)})))|(.Rotten:== uint(10118)&.Peel:->contains($uint,[]uint{uint(13765),uint(14073),uint(63817),uint(14733),uint(63575),uint(63905),uint(14711),uint(12797),uint(11222),uint(16726),uint(64125),uint(10716),uint(64235),uint(64147),uint(64763),uint(13523),uint(64565),uint(13611),uint(61133),uint(64226),uint(11191),uint(14746),uint(11301),uint(52175),uint(64116),uint(64446),uint(15186),uint(12577),uint(12115),uint(14196),uint(12005),uint(12027),uint(11807),uint(11851),uint(15182),uint(52171),uint(61102),uint(11077),uint(12727),uint(12793),uint(12573),uint(63566),uint(12001),uint(12023),uint(12111),uint(63896),uint(14742),uint(16845),uint(12212),uint(63755),uint(63645),uint(63535),uint(63557),uint(64195),uint(15151),uint(64107),uint(64217),uint(15591),uint(15635),uint(10637),uint(13026),uint(17716),uint(63746),uint(64516),uint(17787),uint(11856),uint(13616),uint(15235),uint(18535),uint(10633),uint(13022),uint(19701),uint(10712),uint(14685),uint(12837),uint(16722),uint(11306),uint(61137),uint(13761),uint(11196),uint(14197),uint(14065),uint(14681),uint(19705),uint(14747),uint(63935),uint(63957),uint(63715),uint(64067),uint(63737),uint(64045),uint(63605),uint(12006),uint(11852),uint(63825),uint(63847),uint(11192),uint(64507),uint(64265),uint(11302),uint(64155),uint(63816),uint(15596),uint(61106),uint(15156),uint(11073),uint(64146),uint(11227),uint(11315),uint(65136),uint(12723),uint(12833),uint(64762),uint(12217),uint(12415),uint(14716),uint(64566),uint(11223),uint(15592),uint(15636),uint(13027),uint(15152),uint(12411),uint(12125),uint(12213),uint(14712),uint(13612),uint(16485),uint(13766),uint(16727),uint(12116),uint(63576),uint(63906),uint(15275),uint(19706),uint(15187),uint(64236),uint(10717),uint(64126),uint(63545),uint(63567),uint(63765),uint(13762),uint(16723),uint(64205),uint(64227),uint(64117),uint(63875),uint(63897),uint(63985),uint(11197),uint(64447),uint(10735),uint(10713),uint(14765),uint(14743),uint(17717),uint(11078),uint(15271),uint(15183),uint(12002),uint(18531),uint(12112),uint(16846),uint(14215),uint(14061),uint(14761),uint(11074),uint(14695),uint(14717),uint(11316),uint(19702),uint(13617),uint(63646),uint(63536),uint(13925),uint(64196),uint(63756),uint(17621),uint(14211),uint(12165),uint(11857),uint(61103),uint(11307),uint(63945),uint(64055),uint(63747),uint(64165),uint(63835),uint(14686),uint(64517),uint(64275),uint(13023),uint(15236),uint(16486),uint(17625),uint(12007),uint(64156),uint(12117),uint(12161),uint(64266),uint(11853),uint(13525),uint(14682),uint(15276),uint(17555),uint(65137),uint(14066),uint(10225),uint(12416),uint(11193),uint(11303),uint(63826),uint(61107),uint(63936),uint(63958),uint(15597),uint(63716),uint(64046),uint(63606),uint(18536),uint(16015),uint(14062),uint(63806),uint(63586),uint(63916),uint(14216),uint(16847),uint(10221),uint(64268),uint(64136),uint(64158),uint(19707),uint(64576),uint(64237),uint(64215),uint(63907),uint(10718),uint(14735),uint(14713),uint(64105),uint(15637),uint(64127),uint(15593),uint(61131),uint(17626),uint(64567),uint(13767),uint(12412),uint(13613),uint(14075),uint(12126),uint(13921),uint(15237),uint(10736),uint(10714),uint(61135),uint(14071),uint(63577),uint(18532),uint(14687),uint(63555),uint(12166),uint(14731),uint(12575),uint(12003),uint(11805),uint(12025),uint(12113),uint(63766),uint(13521),uint(13763),uint(63546),uint(63568),uint(15272),uint(64206),uint(63876),uint(14766),uint(63986),uint(12795),uint(12835),uint(12791),uint(64065),uint(64197),uint(12725),uint(63757),uint(63735),uint(12571),uint(12417),uint(63845),uint(63955),uint(17622),uint(16016),uint(64505),uint(12021),uint(10226),uint(13926),uint(14212),uint(14762),uint(10635),uint(14696),uint(11317),uint(17785),uint(11075),uint(63647),uint(63537),uint(14076),uint(10631),uint(14736),uint(63946),uint(64056),uint(13526),uint(63836),uint(11071),uint(16487),uint(64166),uint(11225),uint(13922),uint(63805),uint(63717),uint(63827),uint(63607),uint(63915),uint(63585),uint(63937),uint(15277),uint(18537),uint(64575),uint(64135),uint(64047),uint(64157),uint(64267),uint(14067),uint(19395),uint(12162),uint(19703),uint(14683),uint(11806),uint(12026),uint(19708),uint(61132),uint(15273),uint(64577),uint(14217),uint(14195),uint(17627),uint(12796),uint(17715),uint(15185),uint(12576),uint(14767),uint(14745),uint(12831),uint(12721),uint(12413),uint(12127),uint(14063),uint(12215),uint(63565),uint(63807),uint(63895),uint(63917),uint(10222),uint(64445),uint(64225),uint(64115),uint(64137),uint(63556),uint(13025),uint(18533),uint(64216),uint(13927),uint(12211),uint(14213),uint(64106),uint(10636),uint(11076),uint(19391),uint(14732),uint(64515),uint(10737),uint(10715),uint(12167),uint(13522),uint(61101),uint(11221),uint(16725),uint(14072),uint(10711),uint(11195),uint(11305),uint(61105),uint(12163),uint(63745),uint(63547),uint(64207),uint(63767),uint(11855),uint(63877),uint(63987),uint(16721),uint(17786),uint(16017),uint(61136),uint(12022),uint(63956),uint(11318),uint(64066),uint(63736),uint(63846),uint(14741),uint(14697),uint(64506),uint(14763),uint(12726),uint(12836),uint(12792),uint(10227),uint(15181),uint(12572),uint(64167),uint(64145),uint(65135),uint(12216),uint(64761),uint(14737),uint(15595),uint(14715),uint(10223),uint(12832),uint(12722),uint(15155),uint(13527),uint(13615),uint(13923),uint(19704),uint(13021),uint(14077),uint(17623),uint(11072),uint(10632),uint(11226),uint(63837),uint(63947),uint(64057),uint(63815)})))|(.Peel:->contains($uint,[]uint{uint(33802),uint(33912),uint(33881),uint(33851),uint(33301),uint(33842),uint(33811),uint(33921),uint(33812),uint(33922),uint(33803),uint(33891),uint(33913),uint(33882),uint(33861),uint(33852),uint(33302),uint(33821),uint(33813),uint(33901),uint(33892),uint(33862),uint(33831),uint(33941),uint(33303),uint(33822),uint(33911),uint(33801),uint(33902),uint(33871),uint(33872),uint(33841),uint(33832),uint(33942)})&.Rotten:== uint(3010)))|(.Rotten:== uint(5008)&.Peel:->contains($uint,[]uint{uint(15932),uint(13732),uint(13733),uint(17671),uint(18511),uint(15933),uint(18512),uint(17672),uint(18513),uint(13731),uint(15931)})))|(.Peel:->contains($uint,[]uint{uint(1801122),uint(48),uint(246),uint(1690122),uint(1463113),uint(343),uint(321),uint(1995111),uint(1530113),uint(0),uint(1259112),uint(1443112),uint(1259113),uint(1154121),uint(1148112),uint(97),uint(493),uint(361),uint(1408113),uint(1849123),uint(1110112),uint(326),uint(1409112),uint(1801121),uint(49),uint(247),uint(489),uint(1409111),uint(1801123),uint(1432113),uint(344),uint(322),uint(1530112),uint(45),uint(1),uint(1259111),uint(1443113),uint(1148111),uint(1110111),uint(1849122),uint(98),uint(362),uint(494),uint(1570123),uint(129),uint(393),uint(1408112),uint(50),uint(248),uint(490),uint(1690121),uint(1432112),uint(323),uint(1995113),uint(1801124),uint(2),uint(46),uint(1570122),uint(1849113),uint(495),uint(1487111),uint(130),uint(1849121),uint(394),uint(1849112),uint(1530111),uint(491),uint(1408111),uint(1463111),uint(324),uint(47),uint(1690123),uint(1432111),uint(1463112),uint(1487113),uint(1570121),uint(342),uint(1995112),uint(131),uint(1849111),uint(395),uint(1148113),uint(1443111),uint(1487112),uint(96),uint(492),uint(360),uint(1110113),uint(1409113),uint(325)})&.Rotten:== uint(4071)))|(.Rotten:== uint(4061)&.Peel:->contains($uint,[]uint{uint(1235112),uint(1360112),uint(1146111),uint(22),uint(0),uint(110),uint(220),uint(352),uint(1266113),uint(330),uint(1450112),uint(440),uint(484),uint(1109113),uint(1603112),uint(1456113),uint(1457121),uint(1998112),uint(1359113),uint(9),uint(1118111),uint(405),uint(1285111),uint(1267112),uint(1562113),uint(18),uint(128),uint(40),uint(502),uint(348),uint(1791121),uint(1262113),uint(1267111),uint(1333111),uint(1357111),uint(1461112),uint(27),uint(5),uint(1998111),uint(247),uint(269),uint(357),uint(401),uint(1171113),uint(1385112),uint(1458111),uint(1417111),uint(1318112),uint(1603113),uint(14),uint(36),uint(146),uint(432),uint(366),uint(1362113),uint(1356112),uint(1454112),uint(1265113),uint(1568113),uint(23),uint(1),uint(221),uint(331),uint(353),uint(1234112),uint(1455111),uint(10),uint(1450113),uint(252),uint(406),uint(1318113),uint(1109112),uint(1358111),uint(1458112),uint(1457122),uint(1266112),uint(1562112),uint(1235111),uint(1519113),uint(41),uint(19),uint(1360113),uint(327),uint(503),uint(349),uint(1357112),uint(1461113),uint(1550113),uint(6),uint(1454113),uint(1459111),uint(28),uint(204),uint(1385111),uint(248),uint(358),uint(402),uint(1562111),uint(1262112),uint(1333112),uint(37),uint(15),uint(1289113),uint(367),uint(433),uint(1455112),uint(1466111),uint(1791122),uint(2),uint(90),uint(1356113),uint(24),uint(1234113),uint(332),uint(1387113),uint(1234111),uint(1456111),uint(1109111),uint(1568112),uint(1359111),uint(1118113),uint(33),uint(11),uint(187),uint(363),uint(297),uint(253),uint(407),uint(429),uint(1265112),uint(1146113),uint(1449111),uint(20),uint(108),uint(350),uint(328),uint(438),uint(1358112),uint(482),uint(1285113),uint(1268113),uint(1458113),uint(1266111),uint(29),uint(7),uint(205),uint(359),uint(403),uint(1171111),uint(1268112),uint(1417113),uint(1357113),uint(1519112),uint(1550112),uint(38),uint(16),uint(126),uint(1459112),uint(368),uint(434),uint(1791123),uint(1262111),uint(1333113),uint(1362111),uint(1455113),uint(25),uint(3),uint(91),uint(1289112),uint(399),uint(267),uint(1355111),uint(1387112),uint(1466112),uint(1146112),uint(34),uint(12),uint(144),uint(298),uint(254),uint(1449112),uint(364),uint(430),uint(1456112),uint(1603111),uint(1568111),uint(1235113),uint(1118112),uint(21),uint(109),uint(1265111),uint(1355113),uint(1360111),uint(351),uint(219),uint(329),uint(439),uint(483),uint(1459113),uint(1385113),uint(1450111),uint(1267113),uint(1998113),uint(8),uint(206),uint(404),uint(1359112),uint(1285112),uint(1262114),uint(1519111),uint(17),uint(39),uint(127),uint(501),uint(1356111),uint(1171112),uint(1289111),uint(1268111),uint(1358113),uint(1461111),uint(1550111),uint(26),uint(1454111),uint(4),uint(92),uint(268),uint(400),uint(246),uint(1387111),uint(1355112),uint(1791124),uint(1466113),uint(1449113),uint(1318111),uint(13),uint(35),uint(145),uint(431),uint(299),uint(365),uint(1417112),uint(1362112)})))|(.Peel:->contains($uint,[]uint{uint(21250)})&.Rotten:== uint(10011)))|(.Peel:->contains($uint,[]uint{uint(39051),uint(39513),uint(47151),uint(39623),uint(38721),uint(54921),uint(27572),uint(39953),uint(46711),uint(39931),uint(46513),uint(55053),uint(39821),uint(55251),uint(46953),uint(46821),uint(21553),uint(48053),uint(45312),uint(47921),uint(2876),uint(47811),uint(47613),uint(21496),uint(1081),uint(21562),uint(52523),uint(1301),uint(21056),uint(21012),uint(48022),uint(47912),uint(54512),uint(45611),uint(38752),uint(50851),uint(21302),uint(21082),uint(21016),uint(20862),uint(21566),uint(47952),uint(45321),uint(12877),uint(47754),uint(46223),uint(1112),uint(39522),uint(46553),uint(1552),uint(39632),uint(54912),uint(45651),uint(55022),uint(46113),uint(39113),uint(45752),uint(46522),uint(40323),uint(40411),uint(21157),uint(40213),uint(21311),uint(54151),uint(47512),uint(47622),uint(21135),uint(21113),uint(21091),uint(21047),uint(21025),uint(27576),uint(54723),uint(40212),uint(40322),uint(1363),uint(1561),uint(21096),uint(21052),uint(47652),uint(47322),uint(39112),uint(1011),uint(46011),uint(46121),uint(46253),uint(54551),uint(21316),uint(54221),uint(27577),uint(50811),uint(21492),uint(45813),uint(55321),uint(55453),uint(45452),uint(39451),uint(46112),uint(21171),uint(21281),uint(21303),uint(55013),uint(21567),uint(55123),uint(39913),uint(47212),uint(21083),uint(46222),uint(21017),uint(1042),uint(1152),uint(20863),uint(39121),uint(39011),uint(46552),uint(45822),uint(45624),uint(46152),uint(54511),uint(21153),uint(21175),uint(21285),uint(21307),uint(40353),uint(40221),uint(40111),uint(38712),uint(21131),uint(21087),uint(21021),uint(21043),uint(20867),uint(46812),uint(47221),uint(1403),uint(40252),uint(47353),uint(1491),uint(1051),uint(12873),uint(54212),uint(2877),uint(55312),uint(48123),uint(48013),uint(54652),uint(39812),uint(22165),uint(40054),uint(39922),uint(21365),uint(45951),uint(45753),uint(21563),uint(52511),uint(45621),uint(45511),uint(39822),uint(46721),uint(55151),uint(54711),uint(39954),uint(39932),uint(54513),uint(1082),uint(21057),uint(1302),uint(21013),uint(46523),uint(46822),uint(46712),uint(40051),uint(6551),uint(38753),uint(47922),uint(27573),uint(47812),uint(47614),uint(54412),uint(39611),uint(39523),uint(47152),uint(39633),uint(1091),uint(46114),uint(1113),uint(1311),uint(39752),uint(1553),uint(50813),uint(22161),uint(47522),uint(54152),uint(47654),uint(47953),uint(47821),uint(47623),uint(1012),uint(55252),uint(21136),uint(21092),uint(47513),uint(21026),uint(54922),uint(45322),uint(8861),uint(40214),uint(21312),uint(40412),uint(1562),uint(45652),uint(48151),uint(54552),uint(54222),uint(50821),uint(46012),uint(46122),uint(39452),uint(39122),uint(1043),uint(39012),uint(1153),uint(1131),uint(47222),uint(55322),uint(47653),uint(47521),uint(47323),uint(47213),uint(21172),uint(21282),uint(39914),uint(55023),uint(55111),uint(50812),uint(40222),uint(40112),uint(22162),uint(54913),uint(47913),uint(22166),uint(39813),uint(1052),uint(39923),uint(39021),uint(40253),uint(40451),uint(40121),uint(21132),uint(38713),uint(21022),uint(54411),uint(54521),uint(21176),uint(21286),uint(50852),uint(1492),uint(1404),uint(54851),uint(45612),uint(48111),uint(48023),uint(54653),uint(45251),uint(21361),uint(21317),uint(21405),uint(55313),uint(46351),uint(46813),uint(1281),uint(1171),uint(1303),uint(45823),uint(39052),uint(46021),uint(46153),uint(21097),uint(38722),uint(21053),uint(6552),uint(39612),uint(46722),uint(1501),uint(55152),uint(40052),uint(21366),uint(48152),uint(47822),uint(47624),uint(21551),uint(1092),uint(52512),uint(21133),uint(21111),uint(1312),uint(21045),uint(48121),uint(21023),uint(48011),uint(22167),uint(54853),uint(47923),uint(54721),uint(47813),uint(54523),uint(45622),uint(45512),uint(55051),uint(21155),uint(21287),uint(45952),uint(21137),uint(21115),uint(21313),uint(21093),uint(21401),uint(21027),uint(40413),uint(21555),uint(52552),uint(48051),uint(54351),uint(46212),uint(39511),uint(55451),uint(39621),uint(46652),uint(39753),uint(1563),uint(54923),uint(39951),uint(55011),uint(55121),uint(55253),uint(1013),uint(46124),uint(8862),uint(46511),uint(45653),uint(39652),uint(45521),uint(40312),uint(40422),uint(40224),uint(47523),uint(47611),uint(52521),uint(21058),uint(54712),uint(46951),uint(40223),uint(40113),uint(40311),uint(40421),uint(21085),uint(21041),uint(47751),uint(20865),uint(22163),uint(39123),uint(47311),uint(1022),uint(39013),uint(1132),uint(46022),uint(46154),uint(45252),uint(12875),uint(21151),uint(39453),uint(21283),uint(39651),uint(21305),uint(50822),uint(46013),uint(46123),uint(21402),uint(39924),uint(21556),uint(52551),uint(55112),uint(1361),uint(47223),uint(21116),uint(46211),uint(1053),uint(46651),uint(39022),uint(45811),uint(45613),uint(54852),uint(46251),uint(54522),uint(21362),uint(21406),uint(39053),uint(40452),uint(40122),uint(47351),uint(38723),uint(21054),uint(47153),uint(46823),uint(46713),uint(1502),uint(40351),uint(54553),uint(46352),uint(54421),uint(50853),uint(1172),uint(1282),uint(55323),uint(48112),uint(47914),uint(39823),uint(47452),uint(39933),uint(39911),uint(21156),uint(21288),uint(52522),uint(21552),uint(8863),uint(45654),uint(45522),uint(48153),uint(39811),uint(39921),uint(55052),uint(54722),uint(46952),uint(40053),uint(6553),uint(1093),uint(40251),uint(21112),uint(21046),uint(1313),uint(46512),uint(1401),uint(39952),uint(2875),uint(46811),uint(46723),uint(45953),uint(46151),uint(48021),uint(47823),uint(47911),uint(12871),uint(52513),uint(39622),uint(39512),uint(38751),uint(46213),uint(55452),uint(39521),uint(46521),uint(39631),uint(39653),uint(27575),uint(47951),uint(47753),uint(47511),uint(47621),uint(52553),uint(47313),uint(48052),uint(54713),uint(55021),uint(55153),uint(47612),uint(1023),uint(1133),uint(1111),uint(21081),uint(21015),uint(54911),uint(20861),uint(45311),uint(40313),uint(21301),uint(21367),uint(40423),uint(1551),uint(21565),uint(45751),uint(46353),uint(54211),uint(46551),uint(55113),uint(46023),uint(46111),uint(46221),uint(54651),uint(21117),uint(21095),uint(21051),uint(47651),uint(47321),uint(39111),uint(1054),uint(39023),uint(47453),uint(47211),uint(55311),uint(47752),uint(12876),uint(47312),uint(1362),uint(21315),uint(21491),uint(55012),uint(21403),uint(55122),uint(50823),uint(21557),uint(54352),uint(40211),uint(40321),uint(40453),uint(45451),uint(40123),uint(47924),uint(12872),uint(1041),uint(1151),uint(1283),uint(39934),uint(39912),uint(47352),uint(21055),uint(21011),uint(40352),uint(54422),uint(21407),uint(21363),uint(21561),uint(1503),uint(45821),uint(21495),uint(45623),uint(48122),uint(48012),uint(21152),uint(27571),uint(20866),uint(21284),uint(21306),uint(45614),uint(48113),uint(39613),uint(1402),uint(45812),uint(21086),uint(46252),uint(21042),uint(38711)})&.Rotten:== uint(40111)))|(.Rotten:== uint(6001)&.Peel:->contains($uint,[]uint{uint(15592),uint(12411),uint(12112),uint(15183),uint(14193),uint(16842),uint(14211),uint(12121),uint(10731),uint(15593),uint(12412),uint(14731),uint(12122),uint(12113),uint(12021),uint(12791),uint(14212),uint(16843),uint(10732),uint(12413),uint(14191),uint(12123),uint(14732),uint(10733),uint(12022),uint(14213),uint(12792),uint(15181),uint(19181),uint(15182),uint(12111),uint(14192),uint(15591),uint(14733),uint(16841),uint(12793)})))|(.Rotten:== uint(6003)&.Peel:->contains($uint,[]uint{uint(19842),uint(17811),uint(19841)})))|(.Rotten:== uint(3155)&.Peel:->contains($uint,[]uint{uint(55352),uint(26221),uint(26353),uint(29952),uint(58313),uint(31712),uint(41673),uint(56892),uint(42157),uint(41915),uint(54151),uint(5405682),uint(35456),uint(31131),uint(35302),uint(32451),uint(40472),uint(29512),uint(40582),uint(55251),uint(31351),uint(56043),uint(36046),uint(58322),uint(31813),uint(53913),uint(54023),uint(28711),uint(54353),uint(29151),uint(55211),uint(35623),uint(30251),uint(35557),uint(35491),uint(29811),uint(26621),uint(43275),uint(46051),uint(43187),uint(53711),uint(35945),uint(31452),uint(26652),uint(53922),uint(26322),uint(28051),uint(41911),uint(54252),uint(26212),uint(31232),uint(31012),uint(42153),uint(56051),uint(43186),uint(29253),uint(29451),uint(31013),uint(42152),uint(30375),uint(54322),uint(35571),uint(35593),uint(35505),uint(35307),uint(24255),uint(24211),uint(30322),uint(58251),uint(36041),uint(28021),uint(26622),uint(29011),uint(41941),uint(41721),uint(46895),uint(53451),uint(28012),uint(58321),uint(35496),uint(35452),uint(44493),uint(46055),uint(31017),uint(32821),uint(46891),uint(56042),uint(43811),uint(31633),uint(31721),uint(29222),uint(31853),uint(26811),uint(29411),uint(26613),uint(40441),uint(29521),uint(29851),uint(54313),uint(29213),uint(29323),uint(30753),uint(43182),uint(35575),uint(35553),uint(55501),uint(32812),uint(50371),uint(32813),uint(46052),uint(54152),uint(41551),uint(56893),uint(35576),uint(29852),uint(31713),uint(58323),uint(29412),uint(40451),uint(29522),uint(40473),uint(26222),uint(40561),uint(40583),uint(55252),uint(29953),uint(29821),uint(36047),uint(30151),uint(29513),uint(26451),uint(31251),uint(32452),uint(42101),uint(5405683),uint(30371),uint(35501),uint(35457),uint(35545),uint(31132),uint(31352),uint(35215),uint(35303),uint(26653),uint(26323),uint(53721),uint(30252),uint(46897),uint(26213),uint(35946),uint(53923),uint(54011),uint(38885),uint(41912),uint(28721),uint(54253),uint(32751),uint(28052),uint(41943),uint(55353),uint(41723),uint(31233),uint(35492),uint(28712),uint(29812),uint(31453),uint(29152),uint(43276),uint(53712),uint(26851),uint(41942),uint(58252),uint(35691),uint(54323),uint(41722),uint(53751),uint(50372),uint(35053),uint(26821),uint(35251),uint(28053),uint(26623),uint(28251),uint(29021),uint(29153),uint(28713),uint(36042),uint(29452),uint(46896),uint(43812),uint(29012),uint(31621),uint(30376),uint(35506),uint(35572),uint(55212),uint(30411),uint(35941),uint(29421),uint(40442),uint(43183),uint(43271),uint(32822),uint(36821),uint(30851),uint(53452),uint(28022),uint(35695),uint(35541),uint(35651),uint(55502),uint(31722),uint(35453),uint(41916),uint(35211),uint(35255),uint(35057),uint(56052),uint(28013),uint(29223),uint(29311),uint(46056),uint(26812),uint(46892),uint(55253),uint(26452),uint(29853),uint(31811),uint(31723),uint(53713),uint(41552),uint(42102),uint(44491),uint(41913),uint(35577),uint(35555),uint(35621),uint(31252),uint(42155),uint(40461),uint(38886),uint(29523),uint(29413),uint(35947),uint(46053),uint(58311),uint(54012),uint(28722),uint(43431),uint(35546),uint(30372),uint(35502),uint(35216),uint(32453),uint(32651),uint(29822),uint(30152),uint(53722),uint(26852),uint(30253),uint(29813),uint(31353),uint(53911),uint(54021),uint(54153),uint(32752),uint(26311),uint(54351),uint(26223),uint(31133),uint(36043),uint(43813),uint(29022),uint(26853),uint(54311),uint(35692),uint(32753),uint(53752),uint(46057),uint(31015),uint(35252),uint(55213),uint(30751),uint(38881),uint(31631),uint(30311),uint(31851),uint(30421),uint(50373),uint(35942),uint(28252),uint(26611),uint(36822),uint(28023),uint(55503),uint(35573),uint(35551),uint(35507),uint(41917),uint(56053),uint(40443),uint(29013),uint(26351),uint(31622),uint(43272),uint(29211),uint(29321),uint(29453),uint(46893),uint(26822),uint(29422),uint(40452),uint(40562),uint(29312),uint(30852),uint(53453),uint(35696),uint(35652),uint(32823),uint(58253),uint(35542),uint(30412),uint(35256),uint(35212),uint(53921),uint(35697),uint(54251),uint(35653),uint(5405681),uint(35455),uint(35543),uint(35301),uint(29951),uint(58312),uint(35257),uint(26651),uint(31812),uint(35213),uint(55351),uint(29423),uint(29313),uint(40462),uint(29511),uint(26453),uint(26211),uint(26321),uint(43181),uint(40471),uint(40581),uint(38887),uint(26352),uint(42156),uint(35622),uint(56891),uint(35556),uint(31231),uint(31253),uint(31451),uint(31011),uint(26312),uint(36045),uint(53912),uint(54022),uint(54352),uint(32652),uint(35547),uint(35591),uint(35503),uint(28723),uint(29823),uint(35217),uint(35305),uint(38883),uint(30153),uint(29251),uint(53723),uint(54312),uint(35592),uint(35306),uint(32653),uint(26612),uint(42151),uint(29252),uint(35943),uint(38882),uint(26313),uint(29221),uint(36823),uint(54013),uint(29023),uint(35693),uint(30321),uint(54321),uint(31632),uint(35495),uint(53753),uint(35451),uint(35253),uint(31852),uint(43185),uint(30312),uint(30422),uint(40453),uint(40563),uint(32811),uint(31016),uint(28253),uint(30752),uint(28011),uint(35552),uint(31623),uint(31711),uint(42103),uint(41861),uint(56041),uint(29212),uint(29322),uint(44492),uint(41553)})))|(.Peel:->contains($uint,[]uint{uint(46270)})&.Rotten:== uint(2022)))|(.Rotten:== uint(7051)&.Peel:->contains($uint,[]uint{uint(6322142),uint(6380943),uint(6326541),uint(6322141),uint(6522143),uint(6388441),uint(6388442),uint(6522141),uint(6326543),uint(6380942),uint(6322143),uint(6380941),uint(6522142),uint(6388443),uint(6326542)})))|(.Rotten:== uint(10103)&.Peel:->contains($uint,[]uint{uint(60676),uint(15675),uint(15257),uint(60896),uint(15367),uint(14047),uint(14333),uint(14377),uint(12692),uint(14421),uint(12516),uint(12142),uint(12076),uint(18623),uint(19437),uint(18627),uint(14043),uint(11997),uint(12085),uint(64926),uint(10026),uint(61076),uint(60966),uint(14276),uint(64917),uint(10017),uint(17866),uint(60315),uint(60975),uint(13726),uint(11205),uint(11293),uint(60447),uint(14426),uint(19433),uint(60825),uint(65106),uint(11993),uint(11795),uint(12081),uint(19807),uint(60495),uint(12147),uint(60517),uint(60605),uint(60715),uint(60737),uint(11201),uint(13722),uint(60297),uint(60746),uint(15253),uint(60856),uint(15363),uint(15385),uint(14373),uint(14285),uint(12512),uint(60156),uint(15381),uint(17862),uint(64657),uint(64635),uint(15315),uint(65383),uint(12697),uint(12565),uint(14281),uint(16186),uint(60816),uint(13727),uint(14365),uint(12693),uint(12517),uint(61095),uint(11206),uint(60655),uint(15676),uint(64637),uint(60677),uint(60897),uint(14422),uint(12143),uint(12077),uint(60976),uint(15386),uint(11215),uint(64927),uint(12513),uint(12095),uint(18285),uint(60316),uint(14286),uint(16125),uint(12086),uint(60215),uint(10027),uint(12566),uint(11796),uint(60285),uint(12082),uint(13635),uint(65107),uint(13723),uint(19971),uint(14427),uint(14361),uint(60967),uint(61077),uint(11202),uint(61165),uint(60725),uint(60857),uint(60747),uint(14335),uint(14423),uint(60817),uint(60157),uint(19975),uint(15316),uint(15382),uint(60826),uint(60496),uint(60606),uint(60716),uint(64636),uint(64658),uint(12091),uint(14282),uint(60445),uint(11295),uint(11207),uint(14366),uint(12087),uint(19976),uint(15677),uint(18286),uint(13636),uint(12096),uint(10015),uint(15255),uint(60977),uint(15365),uint(64915),uint(15387),uint(14287),uint(14331),uint(14375),uint(14045),uint(61096),uint(60656),uint(60216),uint(18625),uint(16126),uint(11216),uint(14283),uint(14371),uint(15251),uint(65381),uint(61166),uint(12092),uint(60726),uint(14041),uint(60286),uint(19972),uint(60317),uint(60295),uint(60515),uint(11995),uint(60735),uint(11797),uint(11203),uint(11291),uint(18287),uint(60405),uint(14362),uint(12567),uint(19431),uint(12083),uint(64655),uint(11991),uint(12145),uint(60497),uint(60695),uint(60717),uint(60607),uint(60255),uint(14336),uint(18621),uint(12695),uint(19435),uint(15317),uint(15295),uint(60805),uint(15361),uint(15383),uint(60915),uint(17865),uint(14332),uint(14046),uint(14376),uint(16127),uint(11217),uint(60697),uint(60675),uint(19977),uint(60807),uint(60895),uint(11296),uint(64925),uint(14345),uint(14367),uint(60257),uint(18622),uint(60965),uint(61097),uint(64916),uint(61075),uint(19805),uint(11292),uint(60657),uint(60745),uint(60855),uint(13637),uint(13725),uint(14363),uint(60217),uint(11996),uint(14275),uint(18626),uint(12075),uint(12097),uint(60446),uint(12141),uint(15366),uint(12515),uint(15256),uint(12691),uint(10016),uint(12511),uint(19973),uint(60296),uint(12093),uint(65105),uint(15362),uint(18288),uint(15296),uint(15252),uint(19432),uint(64656),uint(14042),uint(65382),uint(19806),uint(10025),uint(14372),uint(60406),uint(60516),uint(60736),uint(14346),uint(19436),uint(11297),uint(60696),uint(60916),uint(60806),uint(60256),uint(17861),uint(60815),uint(60287),uint(61167),uint(60727),uint(12696),uint(13721),uint(11992),uint(60155),uint(12146),uint(14337),uint(14425)})))|(.Peel:->contains($uint,[]uint{uint(35443),uint(43631),uint(35465),uint(35421),uint(59721),uint(35113),uint(35091),uint(38756),uint(39152),uint(56122),uint(36851),uint(34211),uint(34013),uint(34123),uint(34453),uint(34321),uint(37621),uint(37511),uint(59523),uint(40032),uint(54481),uint(37423),uint(37313),uint(54723),uint(54613),uint(52822),uint(37951),uint(54921),uint(38545),uint(37753),uint(54811),uint(52712),uint(32913),uint(35016),uint(35192),uint(35126),uint(34752),uint(38853),uint(34422),uint(33586),uint(34312),uint(30053),uint(41933),uint(37322),uint(55651),uint(43992),uint(38752),uint(40437),uint(35711),uint(35733),uint(56113),uint(35425),uint(35447),uint(39786),uint(35183),uint(57323),uint(35117),uint(35161),uint(30792),uint(35095),uint(35073),uint(34523),uint(56553),uint(34413),uint(53623),uint(34721),uint(43385),uint(43407),uint(34611),uint(54912),uint(59712),uint(52721),uint(34722),uint(34612),uint(39785),uint(56513),uint(31585),uint(41391),uint(31321),uint(43406),uint(57723),uint(30793),uint(38012),uint(30771),uint(43393),uint(43481),uint(43635),uint(35461),uint(43503),uint(38716),uint(35197),uint(34713),uint(40432),uint(34757),uint(34823),uint(34911),uint(34251),uint(40036),uint(56522),uint(38021),uint(37823),uint(37911),uint(32953),uint(53011),uint(31611),uint(35166),uint(39253),uint(52813),uint(44163),uint(35122),uint(35012),uint(39011),uint(38923),uint(51581),uint(41233),uint(54621),uint(40353),uint(36952),uint(34352),uint(33582),uint(37612),uint(54753),uint(39781),uint(34022),uint(32922),uint(43402),uint(33252),uint(40551),uint(37512),uint(33451),uint(37622),uint(33253),uint(57751),uint(57311),uint(37952),uint(54922),uint(40341),uint(54812),uint(52722),uint(43632),uint(35422),uint(35466),uint(32923),uint(38546),uint(35092),uint(46901),uint(31581),uint(43993),uint(34322),uint(34212),uint(59511),uint(37521),uint(58112),uint(37323),uint(37411),uint(54711),uint(53021),uint(54623),uint(52823),uint(54821),uint(38951),uint(51112),uint(43386),uint(35193),uint(34951),uint(38753),uint(35017),uint(35105),uint(35127),uint(34511),uint(34753),uint(34423),uint(53611),uint(34621),uint(39787),uint(34313),uint(59713),uint(54913),uint(59722),uint(56651),uint(56123),uint(35426),uint(35162),uint(35096),uint(38542),uint(41261),uint(38541),uint(55181),uint(38013),uint(38717),uint(35735),uint(35427),uint(31322),uint(35097),uint(40037),uint(35075),uint(56523),uint(35185),uint(35163),uint(30055),uint(34811),uint(34921),uint(41392),uint(31586),uint(44485),uint(34723),uint(34613),uint(57711),uint(33711),uint(37912),uint(40345),uint(58921),uint(41841),uint(40411),uint(39012),uint(40433),uint(30772),uint(38022),uint(35462),uint(55652),uint(51111),uint(58151),uint(43636),uint(43482),uint(34912),uint(52713),uint(40552),uint(34758),uint(39782),uint(34252),uint(43381),uint(43403),uint(36953),uint(54622),uint(58111),uint(37921),uint(31225),uint(37811),uint(37613),uint(38713),uint(38757),uint(39021),uint(38955),uint(53012),uint(35167),uint(35101),uint(35123),uint(40033),uint(34551),uint(35013),uint(51582),uint(34111),uint(36852),uint(34221),uint(34023),uint(31612),uint(44481),uint(39351),uint(34353),uint(39251),uint(35102),uint(38921),uint(34552),uint(56111),uint(34222),uint(34112),uint(33452),uint(40351),uint(57321),uint(37522),uint(56551),uint(59512),uint(37412),uint(54712),uint(52811),uint(54822),uint(58113),uint(59521),uint(35731),uint(52723),uint(35445),uint(35423),uint(35467),uint(31582),uint(35181),uint(41231),uint(35093),uint(35071),uint(30051),uint(35115),uint(38952),uint(34521),uint(34411),uint(34323),uint(34213),uint(41262),uint(44487),uint(57721),uint(37751),uint(37311),uint(37421),uint(38543),uint(38851),uint(43387),uint(57312),uint(34952),uint(35106),uint(40435),uint(34512),uint(51113),uint(34754),uint(56652),uint(43506),uint(53612),uint(43396),uint(34622),uint(54483),uint(54923),uint(54813),uint(59723),uint(40347),uint(57752),uint(31221),uint(34513),uint(53013),uint(40346),uint(34755),uint(34711),uint(34623),uint(41292),uint(30056),uint(37913),uint(32951),uint(43395),uint(58152),uint(51121),uint(43637),uint(43483),uint(43505),uint(31222),uint(57712),uint(54751),uint(40412),uint(51583),uint(38023),uint(35736),uint(31587),uint(43382),uint(31323),uint(55653),uint(35076),uint(30773),uint(35186),uint(38925),uint(39013),uint(40421),uint(34812),uint(34922),uint(58922),uint(41842),uint(56511),uint(39783),uint(37812),uint(37922),uint(46902),uint(53022),uint(35441),uint(35463),uint(52714),uint(39352),uint(34913),uint(35111),uint(39022),uint(38956),uint(34253),uint(34121),uint(58121),uint(40342),uint(34451),uint(36853),uint(44161),uint(37513),uint(57351),uint(34011),uint(43501),uint(37953),uint(32911),uint(31226),uint(43391),uint(38547),uint(55182),uint(37821),uint(37623),uint(43633),uint(37523),uint(37611),uint(37413),uint(53613),uint(57322),uint(54911),uint(40352),uint(54713),uint(54823),uint(38953),uint(38755),uint(52821),uint(39151),uint(52711),uint(32912),uint(43401),uint(35103),uint(35015),uint(41232),uint(35191),uint(35125),uint(34751),uint(34553),uint(40031),uint(56121),uint(34113),uint(34421),uint(34223),uint(34311),uint(30052),uint(59522),uint(37752),uint(58123),uint(37312),uint(37422),uint(54722),uint(54612),uint(33585),uint(52812),uint(33453),uint(57353),uint(56521),uint(56653),uint(38852),uint(35732),uint(43507),uint(51123),uint(35446),uint(43397),uint(35182),uint(35116),uint(30791),uint(40436),uint(35072),uint(57753),uint(34522),uint(34412),uint(53622),uint(57313),uint(37321),uint(31583),uint(59513),uint(41932),uint(59711),uint(56552),uint(56112),uint(35107),uint(43991),uint(35195),uint(34821),uint(38927),uint(34953),uint(38751),uint(58923),uint(54752),uint(42327),uint(38926),uint(58153),uint(31223),uint(41293),uint(56512),uint(35196),uint(34756),uint(34822),uint(41931),uint(41843),uint(34712),uint(57722),uint(37923),uint(37813),uint(44483),uint(38715),uint(39023),uint(38957),uint(40422),uint(38011),uint(35737),uint(35715),uint(32952),uint(43405),uint(43383),uint(30057),uint(51122),uint(35187),uint(53621),uint(44162),uint(34923),uint(40035),uint(35011),uint(35121),uint(35165),uint(35077),uint(40431),uint(52724),uint(34813),uint(57352),uint(43502),uint(34351),uint(43392),uint(54721),uint(54611),uint(33251),uint(34021),uint(58122),uint(55183),uint(40343),uint(37822),uint(33581),uint(42323),uint(38922),uint(53023),uint(31227),uint(32921),uint(35442),uint(35112),uint(46903),uint(57713),uint(34122),uint(34012),uint(39252),uint(34452),uint(36951)})&.Rotten:== uint(3154)))|(.Rotten:== uint(8006)&.Peel:->contains($uint,[]uint{uint(12082),uint(13512),uint(11972),uint(16121),uint(11862),uint(13723),uint(19971),uint(14361),uint(14383),uint(11202),uint(15672),uint(14401),uint(14423),uint(13631),uint(13741),uint(11211),uint(11321),uint(10793),uint(11013),uint(15382),uint(12553),uint(12531),uint(13952),uint(12201),uint(12091),uint(11783),uint(14282),uint(19632),uint(14392),uint(11981),uint(11361),uint(15312),uint(15092),uint(12562),uint(18282),uint(16491),uint(11792),uint(15831),uint(13002),uint(18572),uint(15673),uint(16091),uint(14331),uint(14353),uint(11942),uint(13671),uint(14283),uint(14393),uint(14371),uint(15251),uint(10794),uint(12092),uint(13513),uint(11982),uint(11322),uint(11212),uint(13953),uint(14041),uint(19972),uint(16122),uint(11951),uint(11973),uint(11203),uint(11291),uint(18573),uint(14362),uint(12083),uint(11793),uint(11991),uint(15832),uint(13091),uint(14402),uint(12563),uint(12541),uint(13742),uint(13632),uint(12532),uint(12202),uint(15383),uint(15361),uint(13672),uint(17271),uint(18283),uint(14332),uint(11041),uint(15731),uint(19471),uint(14411),uint(15401),uint(15313),uint(15291),uint(15093),uint(10790),uint(13751),uint(11362),uint(16492),uint(11292),uint(14341),uint(14363),uint(11952),uint(11943),uint(12141),uint(12691),uint(12471),uint(12533),uint(12203),uint(19973),uint(12071),uint(12093),uint(11983),uint(11961),uint(13633),uint(15362),uint(15252),uint(14042),uint(14372),uint(10795),uint(11213),uint(11323),uint(16123),uint(17021),uint(14412),uint(16493),uint(11363),uint(10791),uint(11011),uint(13752),uint(15833),uint(12542),uint(13721),uint(13743),uint(14271),uint(14403),uint(14381),uint(11992),uint(11042),uint(14333),uint(12692),uint(14421),uint(12142),uint(17272),uint(12551),uint(19041),uint(11781),uint(19151),uint(13673),uint(15402),uint(15292),uint(15732),uint(11953),uint(14043),uint(14342),uint(17281),uint(18284),uint(11271),uint(11293),uint(14272),uint(14382),uint(19301),uint(11861),uint(12081),uint(19631),uint(11993),uint(11971),uint(13722),uint(11201),uint(11962),uint(15363),uint(15253),uint(15671),uint(14373),uint(14351),uint(12072),uint(12204),uint(11782),uint(15403),uint(15381),uint(15733),uint(11562),uint(14391),uint(14413),uint(12552),uint(13511),uint(13753),uint(12543),uint(13951),uint(14281),uint(11012),uint(10792),uint(13111),uint(13001),uint(12693),uint(12561),uint(19152),uint(11272),uint(14422),uint(12143),uint(18281),uint(11791),uint(12491),uint(12073),uint(14352),uint(11941),uint(11963),uint(18571),uint(15311),uint(15091)})))|(.Peel:->contains($uint,[]uint{uint(19821),uint(19831),uint(19801),uint(11701),uint(11702),uint(19802),uint(19811),uint(11703),uint(19803)})&.Rotten:== uint(5005)))|(.Rotten:== uint(1151)&.Peel:->contains($uint,[]uint{uint(1195115),uint(1253113),uint(1296112),uint(1274113),uint(1711111),uint(1195111),uint(1857111),uint(1296116),uint(1397111),uint(1351111),uint(1441113),uint(1138113),uint(1375113),uint(1255111),uint(1367113),uint(1274117),uint(1397112),uint(1439111),uint(1197112),uint(1132112),uint(1397116),uint(1255115),uint(1136111),uint(1296111),uint(1198111),uint(1274112),uint(1196115),uint(1132111),uint(1220111),uint(1195112),uint(1296115),uint(1441112),uint(1197113),uint(1138112),uint(1351112),uint(1375112),uint(1440113),uint(1395113),uint(1198112),uint(1397115),uint(1253112),uint(1195116),uint(1274116),uint(1711113),uint(1274111),uint(1255117),uint(1196116),uint(1857113),uint(1195113),uint(1441111),uint(1367111),uint(1220112),uint(1196111),uint(1440112),uint(1198113),uint(1102113),uint(1351113),uint(1138111),uint(1439113),uint(1255113),uint(1375111),uint(1395112),uint(1195117),uint(1274115),uint(1253111),uint(1196117),uint(1255116),uint(1296113),uint(1136113),uint(1857112),uint(1102111),uint(1711112),uint(1196113),uint(1367112),uint(1296117),uint(1440111),uint(1397113),uint(1220113),uint(1395111),uint(1196112),uint(1197111),uint(1255112),uint(1102112),uint(1439112),uint(1136112),uint(1132113),uint(1397117)})))|(.Rotten:== uint(40108)&.Peel:->contains($uint,[]uint{uint(45312),uint(37322),uint(40921),uint(36552),uint(41713),uint(21232),uint(21342),uint(45422),uint(41251),uint(34713),uint(34911),uint(38312),uint(21122),uint(35153),uint(43112),uint(1103),uint(37652),uint(26811),uint(46412),uint(35351),uint(35923),uint(30313),uint(36033),uint(36011),uint(30423),uint(30621),uint(2335),uint(2357),uint(6572),uint(43121),uint(46051),uint(30753),uint(2423),uint(36121),uint(42923),uint(2027),uint(2115),uint(43011),uint(2225),uint(2181),uint(22112),uint(22332),uint(36913),uint(42351),uint(37551),uint(20383),uint(44322),uint(22222),uint(22156),uint(46953),uint(41911),uint(10712),uint(37111),uint(42153),uint(44652),uint(42712),uint(42514),uint(34722),uint(2036),uint(38211),uint(38321),uint(35052),uint(39311),uint(46113),uint(42052),uint(34651),uint(38123),uint(46421),uint(1442),uint(43812),uint(35514),uint(43922),uint(38013),uint(21852),uint(44252),uint(35712),uint(22182),uint(22094),uint(22072),uint(22116),uint(20387),uint(41722),uint(4381),uint(30612),uint(44912),uint(22226),uint(30722),uint(45022),uint(2102),uint(36152),uint(2146),uint(22336),uint(22402),uint(2322),uint(41423),uint(22015),uint(43913),uint(37252),uint(41313),uint(44111),uint(22125),uint(22147),uint(22103),uint(22037),uint(36922),uint(22323),uint(22345),uint(22433),uint(22411),uint(7461),uint(22455),uint(10721),uint(45321),uint(45453),uint(2067),uint(45013),uint(38352),uint(45211),uint(45123),uint(38022),uint(26661),uint(1121),uint(35413),uint(37912),uint(26573),uint(1341),uint(26815),uint(21443),uint(21487),uint(34422),uint(1231),uint(43152),uint(35611),uint(35523),uint(38021),uint(38153),uint(37911),uint(37823),uint(42522),uint(42412),uint(37713),uint(2287),uint(39253),uint(46121),uint(35412),uint(22416),uint(22152),uint(34423),uint(41422),uint(35522),uint(38923),uint(41312),uint(20511),uint(38351),uint(35852),uint(44612),uint(47023),uint(22425),uint(41013),uint(2076),uint(36622),uint(22227),uint(43723),uint(22205),uint(22183),uint(43811),uint(36512),uint(22337),uint(43921),uint(22381),uint(44251),uint(44053),uint(41321),uint(41211),uint(1482),uint(21127),uint(21105),uint(44911),uint(21237),uint(44713),uint(45021),uint(21347),uint(9683),uint(38052),uint(44823),uint(42852),uint(37612),uint(21853),uint(22117),uint(22095),uint(45153),uint(22051),uint(22073),uint(35311),uint(45351),uint(35223),uint(37722),uint(35531),uint(35553),uint(22187),uint(22121),uint(22143),uint(22341),uint(22033),uint(22385),uint(22055),uint(30551),uint(43851),uint(22077),uint(35421),uint(22011),uint(22451),uint(26666),uint(35751),uint(1183),uint(44511),uint(44313),uint(44753),uint(42751),uint(44621),uint(42311),uint(2151),uint(36851),uint(42553),uint(42223),uint(36653),uint(37313),uint(44951),uint(37423),uint(42421),uint(36521),uint(41651),uint(21483),uint(21923),uint(45413),uint(42452),uint(45052),uint(44722),uint(37621),uint(37511),uint(24123),uint(37951),uint(37753),uint(41022),uint(30322),uint(35452),uint(30652),uint(38853),uint(41352),uint(38611),uint(36112),uint(2226),uint(6573),uint(2336),uint(43122),uint(35352),uint(22355),uint(10722),uint(22465),uint(22421),uint(38621),uint(2116),uint(43012),uint(2182),uint(26812),uint(44112),uint(42352),uint(38313),uint(21343),uint(41912),uint(36012),uint(36122),uint(41252),uint(22025),uint(45322),uint(30323),uint(45212),uint(22333),uint(30411),uint(22223),uint(22201),uint(22157),uint(22113),uint(22091),uint(30653),uint(30631),uint(44521),uint(41921),uint(42053),uint(44323),uint(1443),uint(44653),uint(37112),uint(22122),uint(22056),uint(22342),uint(22012),uint(45313),uint(34723),uint(22386),uint(44851),uint(37552),uint(34921),uint(41723),uint(2411),uint(35053),uint(2323),uint(2345),uint(34551),uint(2037),uint(2103),uint(2147),uint(46413),uint(45423),uint(4382),uint(41151),uint(35911),uint(35713),uint(36021),uint(2015),uint(38212),uint(38322),uint(18875),uint(44913),uint(45023),uint(36923),uint(36153),uint(7462),uint(37121),uint(45353),uint(45111),uint(22126),uint(30622),uint(22016),uint(45221),uint(37913),uint(46123),uint(38111),uint(1122),uint(39312),uint(43153),uint(38221),uint(1232),uint(42911),uint(1342),uint(38023),uint(43021),uint(37253),uint(42713),uint(37451),uint(39321),uint(30613),uint(30723),uint(34652),uint(26816),uint(35612),uint(43052),uint(35524),uint(26662),uint(46422),uint(42722),uint(36052),uint(38551),uint(42524),uint(35722),uint(38353),uint(42612),uint(21233),uint(36712),uint(21123),uint(21101),uint(22346),uint(43813),uint(22412),uint(43923),uint(22456),uint(20551),uint(44121),uint(44451),uint(44253),uint(36051),uint(35721),uint(22052),uint(22096),uint(44613),uint(35853),uint(21106),uint(1483),uint(44921),uint(22426),uint(22382),uint(36711),uint(22206),uint(45053),uint(44723),uint(36623),uint(26817),uint(36513),uint(20512),uint(43051),uint(44811),uint(26663),uint(26575),uint(42853),uint(18871),uint(42523),uint(37811),uint(45251),uint(37723),uint(42611),uint(2451),uint(37613),uint(42721),uint(10111),uint(2077),uint(2121),uint(42413),uint(24111),uint(38911),uint(45352),uint(20521),uint(45154),uint(42752),uint(46122),uint(35422),uint(21181),uint(35532),uint(42312),uint(38251),uint(38031),uint(35312),uint(37921),uint(35752),uint(21445),uint(42422),uint(38053),uint(41322),uint(41652),uint(41212),uint(36852),uint(43711),uint(43821),uint(36522),uint(1184),uint(37622),uint(37512),uint(46052),uint(41353),uint(37952),uint(41221),uint(2152),uint(21185),uint(41551),uint(35211),uint(22452),uint(35321),uint(43751),uint(38612),uint(41023),uint(35453),uint(35651),uint(47011),uint(36113),uint(46351),uint(43852),uint(30552),uint(36553),uint(43113),uint(37653),uint(37521),uint(26667),uint(21911),uint(44622),uint(44512),uint(37851),uint(2183),uint(22285),uint(2205),uint(22351),uint(2227),uint(42321),uint(22395),uint(22153),uint(22461),uint(42211),uint(22417),uint(2381),uint(22021),uint(44754),uint(22065),uint(2337),uint(42651),uint(37323),uint(2051),uint(2095),uint(42453),uint(34912),uint(37411),uint(2117),uint(44952),uint(4383),uint(45213),uint(45411),uint(37113),uint(41152),uint(45323),uint(37421),uint(20385),uint(37311),uint(36651),uint(37553),uint(21441),uint(21485),uint(38213),uint(46951),uint(38323),uint(34922),uint(37751),uint(43013),uint(43123),uint(46423),uint(35912),uint(30412),uint(36022),uint(18876),uint(30632),uint(2346),uint(26813),uint(26571),uint(2412),uint(42912),uint(2016),uint(38851),uint(43022),uint(22123),uint(22101),uint(22013),uint(22035),uint(22057),uint(22321),uint(22343),uint(22387),uint(44113),uint(37452),uint(44311),uint(22145),uint(39313),uint(41922),uint(22453),uint(22431),uint(44751),uint(37122),uint(42723),uint(38552),uint(34711),uint(42921),uint(2025),uint(38222),uint(42613),uint(39322),uint(35151),uint(1123),uint(1101),uint(38112),uint(1233),uint(34552),uint(43713),uint(1343),uint(35613),uint(43823),uint(43911),uint(42151),uint(20552),uint(35921),uint(35723),uint(36053),uint(36031),uint(41711),uint(22127),uint(22105),uint(22017),uint(22061),uint(44813),uint(2421),uint(30711),uint(2355),uint(44923),uint(30623),uint(45011),uint(7463),uint(22281),uint(22325),uint(22347),uint(22391),uint(22413),uint(22457),uint(22435),uint(41412),uint(22026),uint(44122),uint(36911),uint(22202),uint(36713),uint(22092),uint(41852),uint(21102),uint(44452),uint(22356),uint(22422),uint(22466),uint(2122),uint(34852),uint(45222),uint(45112),uint(38011),uint(34653),uint(38121),uint(37923),uint(37813),uint(38253),uint(43053),uint(34411),uint(35622),uint(35512),uint(35534),uint(24151),uint(38033),uint(38032),uint(37922),uint(38252),uint(37812),uint(46352),uint(42511),uint(24121),uint(42423),uint(42313),uint(38054),uint(2452),uint(41653),uint(34851),uint(41851),uint(35423),uint(22383),uint(22427),uint(22405),uint(43721),uint(22207),uint(22185),uint(22141),uint(22075),uint(35313),uint(43853),uint(34412),uint(22097),uint(35753),uint(35621),uint(35511),uint(38912),uint(35533),uint(44051),uint(41411),uint(41323),uint(20522),uint(41213),uint(44623),uint(44513),uint(47012),uint(22458),uint(22436),uint(36721),uint(2065),uint(36611),uint(43712),uint(2153),uint(37051),uint(43822),uint(22282),uint(36523),uint(22326),uint(41552),uint(22392),uint(41222),uint(36853),uint(21182),uint(44922),uint(10112),uint(37953),uint(21446),uint(44812),uint(26576),uint(38151),uint(37513),uint(37623),uint(22106),uint(45252),uint(2285),uint(42621),uint(37821),uint(22062),uint(42753),uint(35212),uint(37711),uint(22286),uint(43752),uint(22352),uint(22396),uint(35322),uint(22066),uint(22462),uint(22022),uint(35652),uint(38921),uint(47021),uint(42652),uint(38613),uint(44522),uint(2096),uint(42322),uint(2206),uint(2228),uint(42212),uint(21186),uint(44852),uint(37412),uint(2052),uint(39251),uint(21912),uint(44953),uint(10121),uint(42353),uint(42551),uint(42221),uint(44711),uint(45151),uint(20513),uint(44821),uint(21481),uint(9681),uint(34913),uint(41913),uint(24112),uint(37522),uint(20381),uint(22031),uint(22053),uint(35221),uint(2382),uint(35353),uint(37852),uint(21921),uint(30311),uint(41011),uint(30421),uint(35551),uint(30751),uint(30553),uint(1181),uint(18872),uint(36013),uint(46053),uint(21107),uint(41253),uint(38622),uint(36123),uint(43111),uint(2413),uint(30752),uint(2347),uint(42913),uint(10711),uint(35451),uint(38852),uint(2017),uint(22432),uint(43023),uint(42451),uint(35913),uint(46952),uint(44321),uint(18877),uint(44123),uint(44651),uint(21486),uint(44453),uint(41923),uint(21442),uint(36023),uint(36111),uint(41351),uint(22036),uint(45311),uint(45223),uint(30312),uint(45421),uint(30422),uint(22322),uint(36551),uint(22102),uint(22146),uint(45113),uint(44312),uint(37651),uint(1124),uint(1102),uint(38113),uint(21121),uint(44752),uint(42152),uint(37123),uint(22155),uint(22067),uint(22111),uint(22287),uint(22331),uint(21913),uint(22023),uint(37321),uint(22353),uint(34712),uint(37453),uint(22221),uint(41712),uint(2356),uint(35152),uint(30721),uint(2422),uint(2026),uint(45412),uint(35922),uint(36032),uint(38553),uint(21187),uint(21231),uint(38223),uint(38311),uint(21341),uint(21235),uint(21125),uint(21103),uint(21345),uint(45012),uint(45452),uint(21851),uint(20553),uint(36912),uint(22225),uint(45122),uint(30413),uint(22203),uint(22181),uint(30611),uint(22071),uint(30633),uint(22115),uint(22093),uint(45254),uint(22027),uint(46112),uint(39323),uint(6571),uint(38122),uint(26572),uint(42922),uint(24152),uint(38012),uint(1441),uint(34721),uint(34853),uint(35051),uint(2453),uint(34553),uint(30712),uint(35623),uint(2123),uint(34421),uint(43151),uint(2145),uint(2321),uint(35513),uint(46411),uint(42711),uint(36151),uint(42513),uint(2035),uint(35711),uint(2101),uint(42623),uint(42051),uint(36723),uint(36613),uint(36921),uint(37053),uint(22335),uint(22357),uint(22423),uint(22401),uint(37251),uint(41413),uint(22467),uint(43912),uint(41721),uint(41853),uint(20386),uint(22063),uint(36722),uint(22437),uint(22415),uint(44712),uint(45152),uint(30713),uint(22151),uint(22107),uint(36612),uint(9682),uint(20523),uint(38913),uint(22283),uint(44822),uint(22327),uint(42512),uint(2286),uint(37822),uint(42622),uint(37712),uint(10122),uint(2066),uint(21183),uint(37052),uint(24122),uint(21447),uint(38922),uint(45451),uint(39252),uint(42653),uint(45121),uint(42851),uint(35213),uint(45253),uint(46111),uint(38152),uint(42213),uint(35411),uint(35521),uint(21236),uint(34413),uint(35323),uint(37954),uint(21346),uint(24153),uint(42521),uint(35653),uint(42411),uint(42323),uint(41553),uint(41421),uint(1481),uint(41311),uint(35851),uint(41223),uint(47013),uint(21126),uint(43722),uint(46353),uint(36621),uint(36511),uint(44052),uint(37611),uint(24113),uint(20382),uint(37523),uint(2383),uint(37853),uint(37721),uint(2053),uint(2097),uint(2075),uint(2207),uint(37413),uint(35222),uint(22463),uint(38623),uint(41012),uint(35552),uint(26665),uint(38051),uint(26577),uint(18873),uint(47022),uint(41153),uint(30321),uint(43753),uint(41021),uint(36652),uint(1182),uint(30651),uint(21482),uint(37752),uint(37554),uint(21922),uint(44721),uint(44611),uint(44523),uint(45051),uint(22186),uint(22406),uint(42552),uint(22098),uint(22142),uint(22032),uint(22076),uint(42222),uint(37312),uint(44853),uint(34923),uint(37422)})))|(.Peel:->contains($uint,[]uint{uint(25670),uint(29181),uint(29172),uint(25850),uint(29260),uint(29392),uint(29053),uint(29120),uint(29560),uint(29450),uint(29551),uint(29661),uint(25741),uint(29133),uint(25591),uint(25732),uint(29102),uint(25600),uint(29300),uint(29410),uint(29103),uint(29081),uint(29160),uint(29270),uint(29182),uint(29380),uint(29490),uint(25790),uint(25592),uint(25570),uint(25530),uint(25742),uint(25830),uint(29552),uint(25733),uint(25711),uint(29082),uint(29522),uint(29390),uint(29051),uint(29183),uint(29460),uint(29020),uint(29350),uint(29131),uint(29351),uint(29430),uint(25840),uint(25620),uint(25580),uint(25712),uint(29210),uint(25743),uint(25611),uint(29201),uint(29553),uint(29202),uint(25660),uint(25770),uint(25550),uint(29083),uint(29171),uint(29391),uint(29523),uint(25713),uint(29052),uint(29140),uint(25731),uint(25630),uint(29440),uint(29352),uint(29660),uint(29132),uint(25920),uint(25590),uint(25612),uint(25810)})&.Rotten:== uint(10007)))|(.Rotten:== uint(3110)&.Peel:->contains($uint,[]uint{uint(33561),uint(33931),uint(33932),uint(33562)})))|(.Rotten:== uint(1025)&.Peel:->contains($uint,[]uint{uint(35450)})))|(.Rotten:== uint(2013)&.Peel:->contains($uint,[]uint{uint(30662),uint(46123),uint(46642),uint(46202),uint(46312),uint(31392),uint(46321),uint(46343),uint(31040),uint(46783),uint(31393),uint(46382),uint(46391),uint(46061),uint(46303),uint(46743),uint(46322),uint(30663),uint(46643),uint(31394),uint(46071),uint(46401),uint(46203),uint(46392),uint(46062),uint(46301),uint(46323),uint(46741),uint(46121),uint(46781),uint(46341),uint(46750),uint(46063),uint(46402),uint(46072),uint(46204),uint(46641),uint(46201),uint(46311),uint(30661),uint(46742),uint(31391),uint(46122),uint(46760),uint(46782),uint(46342),uint(46790),uint(46350),uint(46302),uint(46381),uint(46073)})))|(.Rotten:== uint(1101)&.Peel:->contains($uint,[]uint{uint(46901),uint(46902)})))|(.Peel:->contains($uint,[]uint{uint(449),uint(6320043),uint(458),uint(54201),uint(6322243),uint(445),uint(6324742),uint(6320742),uint(6323043),uint(6326343),uint(454),uint(476),uint(54192),uint(463),uint(485),uint(441),uint(450),uint(6325243),uint(6394341),uint(6321243),uint(459),uint(54202),uint(446),uint(468),uint(6322242),uint(6324741),uint(6320042),uint(455),uint(6323042),uint(54193),uint(6326342),uint(442),uint(464),uint(6322241),uint(451),uint(6325242),uint(6320741),uint(6326443),uint(460),uint(6394342),uint(6327943),uint(447),uint(469),uint(6326341),uint(456),uint(6320041),uint(6321242),uint(6326442),uint(443),uint(452),uint(474),uint(6327942),uint(6325241),uint(6323041),uint(483),uint(461),uint(6324743),uint(448),uint(470),uint(54191),uint(457),uint(6321241),uint(444),uint(6326441),uint(453),uint(475),uint(6320743),uint(6394343),uint(462),uint(484),uint(54173),uint(6327941)})&.Rotten:== uint(1051)))|(.Peel:->contains($uint,[]uint{uint(18501),uint(12671),uint(17172),uint(14792),uint(11101),uint(14612),uint(12852),uint(15303),uint(12672),uint(14643),uint(18502),uint(14793),uint(12351),uint(17173),uint(12853),uint(15981),uint(14613),uint(13491),uint(11102),uint(12673),uint(16901),uint(15982),uint(12352),uint(13492),uint(11103),uint(18503),uint(12353),uint(15983),uint(15301),uint(14641),uint(14791),uint(13493),uint(17171),uint(12851),uint(18241),uint(15302),uint(14642),uint(14611)})&.Rotten:== uint(40071)))|(.Rotten:== uint(3003)&.Peel:->contains($uint,[]uint{uint(33230),uint(33222),uint(33451),uint(33452),uint(33221)})))|(.Peel:->contains($uint,[]uint{uint(33916),uint(33917),uint(33915),uint(52825)})&.Rotten:== uint(10107)))|(.Peel:->contains($uint,[]uint{uint(28080),uint(28160),uint(28270),uint(28050),uint(29440),uint(28041),uint(28151),uint(28011),uint(28090),uint(28271),uint(28042),uint(28152),uint(28100),uint(28012),uint(28025),uint(28280),uint(28060),uint(28272),uint(28030),uint(28153),uint(28021),uint(28022),uint(28110),uint(28330),uint(28070),uint(28260),uint(28273)})&.Rotten:== uint(1032)))|(.Rotten:== uint(3002)&.Peel:->contains($uint,[]uint{uint(13471),uint(17862),uint(12041),uint(18192),uint(14153),uint(14131),uint(10092),uint(19842),uint(10061),uint(10083),uint(17391),uint(10611),uint(17871),uint(14012),uint(11403),uint(17321),uint(13502),uint(11333),uint(16661),uint(18161),uint(11553),uint(18183),uint(15583),uint(12842),uint(19481),uint(15121),uint(12512),uint(15143),uint(12182),uint(10013),uint(14901),uint(16503),uint(11254),uint(11342),uint(11452),uint(14721),uint(18021),uint(10031),uint(18131),uint(15073),uint(13533),uint(16582),uint(10022),uint(13841),uint(12631),uint(19231),uint(12301),uint(11232),uint(14013),uint(14101),uint(12451),uint(10062),uint(10612),uint(15962),uint(11131),uint(17801),uint(17471),uint(11373),uint(15122),uint(19381),uint(14902),uint(11061),uint(12381),uint(12183),uint(17511),uint(12513),uint(17401),uint(14132),uint(12051),uint(17872),uint(13472),uint(15421),uint(10093),uint(10071),uint(16583),uint(12632),uint(10023),uint(19482),uint(12821),uint(12843),uint(18171),uint(16662),uint(13503),uint(17802),uint(14621),uint(19232),uint(11132),uint(11233),uint(11453),uint(13842),uint(14722),uint(15422),uint(11581),uint(11251),uint(17881),uint(14102),uint(17371),uint(15963),uint(10041),uint(12844),uint(12822),uint(17851),uint(18181),uint(16663),uint(10081),uint(19281),uint(14133),uint(14111),uint(10072),uint(14903),uint(15123),uint(13121),uint(11062),uint(13451),uint(13473),uint(17882),uint(14001),uint(14723),uint(19351),uint(15141),uint(13843),uint(14151),uint(18172),uint(11731),uint(11401),uint(12633),uint(17411),uint(11331),uint(11551),uint(14622),uint(17803),uint(10011),uint(19352),uint(10583),uint(15581),uint(11133),uint(17381),uint(14002),uint(14112),uint(10051),uint(16501),uint(10601),uint(11371),uint(11063),uint(11252),uint(15071),uint(13421),uint(13531),uint(14103),uint(11582),uint(19211),uint(19321),uint(11402),uint(14011),uint(17861),uint(12031),uint(18191),uint(11921),uint(19841),uint(12823),uint(10082),uint(12511),uint(12181),uint(18173),uint(16660),uint(12401),uint(13501),uint(10012),uint(15142),uint(13171),uint(15582),uint(12841),uint(14152),uint(17421),uint(17311),uint(10091),uint(17852),uint(18182),uint(10021),uint(17351),uint(11341),uint(16581),uint(11451),uint(11583),uint(19353),uint(13422),uint(13532),uint(11231),uint(11253),uint(11332),uint(11552),uint(14623),uint(15961),uint(11372),uint(14113),uint(14003),uint(19212),uint(16502),uint(15072),uint(10602)})))|(.Rotten:== uint(40106)&.Peel:->contains($uint,[]uint{uint(62186),uint(17706)})))|(.Peel:->contains($uint,[]uint{uint(21200),uint(51541),uint(31760),uint(25860),uint(20470),uint(20440),uint(21390),uint(21470),uint(21150),uint(51531),uint(13460),uint(51570),uint(21380)})&.Rotten:== uint(1000)))|(.Rotten:== uint(8008)&.Peel:->contains($uint,[]uint{uint(15021),uint(14911),uint(11532),uint(10652),uint(15813),uint(15791),uint(17102),uint(11642),uint(17771),uint(11611),uint(19201),uint(16812),uint(12751),uint(18061),uint(16592),uint(12421),uint(16372),uint(16262),uint(14942),uint(10582),uint(12971),uint(10111),uint(10441),uint(11651),uint(10661),uint(16341),uint(11603),uint(16601),uint(11163),uint(11141),uint(16381),uint(14973),uint(15941),uint(12782),uint(14511),uint(15761),uint(11612),uint(11392),uint(14221),uint(14991),uint(12461),uint(17772),uint(16452),uint(13931),uint(16342),uint(15792),uint(10442),uint(10112),uint(19202),uint(10662),uint(15022),uint(14912),uint(17103),uint(11621),uint(12061),uint(16421),uint(11533),uint(14512),uint(17741),uint(16461),uint(11661),uint(16373),uint(16263),uint(11652),uint(19061),uint(14701),uint(12752),uint(12422),uint(14921),uint(17821),uint(17931),uint(12462),uint(12981),uint(12761),uint(16602),uint(16382),uint(11142),uint(15942),uint(17742),uint(12801),uint(16422),uint(15762),uint(11151),uint(11393),uint(12361),uint(14922),uint(13932),uint(14702),uint(11631),uint(11653),uint(15793),uint(11622),uint(12062),uint(15991),uint(15001),uint(14913),uint(10443),uint(10113),uint(16801),uint(12762),uint(16471),uint(15943),uint(16383),uint(15811),uint(19062),uint(12731),uint(12753),uint(17773),uint(14513),uint(16462),uint(11662),uint(14971),uint(12991),uint(16612),uint(11152),uint(17743),uint(17831),uint(11143),uint(12771),uint(12463),uint(11623),uint(11601),uint(15992),uint(11161),uint(12063),uint(12802),uint(12362),uint(16423),uint(15763),uint(17822),uint(17932),uint(17101),uint(12732),uint(10651),uint(15011),uint(14923),uint(14703),uint(11632),uint(13933),uint(11144),uint(14941),uint(16802),uint(11641),uint(15812),uint(11531),uint(12763),uint(12363),uint(14972),uint(17832),uint(12992),uint(16811),uint(16591),uint(10581),uint(16481),uint(16371),uint(16261),uint(11391),uint(15993),uint(11162),uint(17823),uint(17933),uint(11602)})))|(.Peel:->contains($uint,[]uint{uint(15213),uint(15543),uint(63923),uint(63813),uint(64011),uint(64033),uint(14883),uint(64121),uint(5661),uint(61952),uint(22653),uint(14267),uint(62722),uint(62612),uint(18051),uint(61745),uint(61877),uint(61921),uint(62031),uint(62053),uint(17963),uint(62251),uint(12947),uint(15666),uint(11495),uint(63021),uint(61666),uint(63131),uint(63153),uint(62823),uint(62911),uint(62933),uint(63351),uint(12265),uint(16652),uint(63012),uint(18055),uint(63122),uint(17967),uint(12943),uint(5217),uint(63452),uint(63232),uint(4887),uint(61626),uint(13295),uint(15662),uint(1266),uint(12261),uint(64112),uint(16656),uint(61547),uint(13836),uint(61261),uint(63751),uint(6647),uint(2652),uint(60733),uint(60711),uint(11491),uint(61736),uint(16313),uint(6317),uint(61912),uint(11117),uint(62022),uint(62132),uint(5547),uint(62352),uint(61265),uint(61111),uint(61837),uint(13832),uint(62013),uint(62211),uint(62123),uint(1605),uint(62431),uint(62233),uint(62453),uint(62321),uint(19675),uint(62651),uint(2947),uint(63311),uint(63333),uint(63531),uint(11113),uint(16648),uint(63421),uint(63113),uint(63223),uint(62422),uint(62752),uint(63412),uint(7967),uint(52712),uint(63852),uint(63654),uint(18056),uint(63522),uint(4267),uint(61595),uint(61617),uint(6656),uint(63953),uint(63821),uint(64151),uint(63711),uint(3836),uint(63513),uint(63623),uint(11496),uint(12266),uint(15667),uint(63931),uint(1117),uint(14655),uint(61696),uint(61828),uint(61687),uint(61665),uint(62312),uint(61423),uint(2261),uint(5662),uint(61951),uint(61586),uint(62523),uint(62413),uint(62831),uint(62721),uint(62633),uint(62611),uint(62853),uint(63051),uint(62613),uint(61667),uint(61645),uint(63053),uint(18052),uint(63251),uint(62811),uint(13837),uint(62833),uint(62921),uint(63713),uint(64021),uint(61051),uint(60721),uint(64153),uint(63933),uint(12715),uint(63911),uint(63823),uint(64012),uint(60752),uint(64122),uint(16653),uint(63352),uint(16741),uint(17445),uint(1267),uint(61755),uint(61865),uint(61931),uint(61953),uint(62151),uint(6648),uint(60712),uint(16657),uint(61746),uint(64311),uint(16745),uint(61922),uint(62032),uint(62252),uint(11765),uint(13296),uint(63022),uint(63132),uint(2653),uint(62912),uint(62111),uint(62133),uint(62023),uint(62221),uint(12262),uint(15663),uint(11492),uint(1606),uint(62331),uint(62353),uint(63013),uint(62551),uint(14651),uint(63431),uint(63453),uint(63211),uint(63123),uint(63321),uint(14145),uint(63233),uint(64113),uint(4655),uint(9675),uint(61262),uint(19671),uint(63651),uint(14475),uint(63422),uint(63312),uint(19676),uint(63752),uint(63532),uint(6657),uint(6745),uint(52713),uint(61596),uint(61266),uint(61715),uint(61737),uint(14471),uint(18057),uint(61825),uint(61913),uint(2715),uint(61627),uint(61605),uint(61451),uint(14141),uint(13833),uint(3837),uint(62322),uint(16746),uint(62432),uint(62212),uint(62652),uint(12711),uint(61675),uint(61587),uint(5663),uint(62313),uint(61411),uint(62511),uint(62423),uint(60751),uint(62621),uint(63413),uint(62951),uint(63853),uint(2262),uint(63721),uint(63611),uint(4475),uint(63523),uint(62832),uint(63052),uint(63822),uint(63712),uint(63624),uint(14656),uint(12267),uint(1765),uint(11761),uint(63932),uint(11497),uint(1215),uint(64152),uint(61697),uint(63912),uint(14652),uint(64022),uint(12263),uint(16742),uint(61875),uint(62051),uint(14476),uint(62513),uint(11493),uint(14146),uint(62711),uint(62623),uint(61646),uint(61756),uint(16315),uint(61866),uint(61932),uint(62152),uint(12716),uint(15545),uint(22651),uint(61677),uint(15215),uint(61545),uint(62812),uint(61413),uint(61215),uint(62922),uint(60753),uint(63252),uint(60731),uint(14885),uint(12712),uint(62913),uint(4656),uint(63111),uint(63023),uint(16311),uint(22655),uint(11766),uint(63221),uint(63133),uint(63353),uint(61615),uint(63331),uint(64321),uint(15541),uint(15211),uint(61263),uint(1607),uint(19672),uint(14881),uint(64013),uint(64123),uint(60713),uint(16645),uint(64312),uint(9676),uint(63652),uint(61052),uint(6746),uint(14265),uint(60722),uint(17965),uint(61725),uint(18053),uint(61747),uint(61835),uint(61923),uint(12945),uint(62011),uint(62033),uint(62121),uint(62253),uint(62231),uint(62451),uint(61716),uint(6315),uint(14657),uint(61826),uint(62222),uint(5545),uint(62112),uint(62332),uint(62552),uint(7965),uint(12941),uint(63322),uint(2716),uint(5215),uint(63432),uint(16747),uint(4885),uint(63212),uint(62631),uint(62653),uint(62411),uint(62851),uint(62433),uint(11511),uint(62521),uint(11115),uint(4476),uint(63313),uint(63423),uint(14142),uint(63753),uint(2263),uint(14472),uint(63621),uint(63533),uint(63511),uint(61606),uint(63951),uint(6645),uint(61452),uint(63722),uint(63612),uint(15546),uint(2945),uint(4265),uint(11111),uint(15216),uint(12717),uint(1216),uint(17961),uint(14886),uint(61676),uint(61412),uint(62213),uint(62323),uint(19677),uint(61685),uint(1766),uint(61421),uint(11762),uint(61267),uint(62512),uint(62622),uint(62952),uint(1115),uint(62712),uint(61546),uint(62822),uint(9677),uint(63152),uint(62932),uint(61216),uint(63812),uint(63614),uint(64032),uint(15665),uint(60732),uint(12946),uint(63922),uint(14477),uint(14653),uint(63451),uint(14147),uint(63253),uint(64023),uint(64111),uint(63231),uint(4657),uint(63913),uint(22652),uint(61876),uint(16316),uint(62052),uint(17962),uint(52711),uint(19673),uint(6747),uint(14143),uint(60723),uint(16646),uint(61735),uint(64322),uint(61867),uint(14473),uint(61933),uint(61911),uint(62021),uint(62153),uint(62351),uint(62131),uint(22656),uint(62923),uint(17966),uint(62813),uint(63011),uint(63121),uint(16312),uint(13835),uint(11116),uint(62122),uint(62012),uint(5216),uint(11767),uint(62232),uint(5546),uint(1265),uint(62452),uint(4886),uint(12713),uint(15542),uint(15212),uint(2651),uint(14266),uint(14882),uint(63112),uint(63332),uint(61647),uint(63222),uint(61625),uint(16655),uint(16743),uint(61053),uint(63411),uint(63433),uint(63323),uint(63521),uint(63213),uint(11763),uint(63851),uint(11521),uint(2717),uint(4477),uint(63653),uint(6646),uint(61695),uint(61585),uint(61607),uint(61453),uint(6316),uint(61836),uint(61616),uint(6655),uint(61717),uint(61827),uint(16647),uint(62113),uint(62333),uint(62421),uint(62223),uint(62311),uint(15661),uint(22657),uint(62553),uint(12942),uint(7966),uint(2946),uint(62751),uint(61686),uint(61422),uint(1767),uint(62522),uint(62412),uint(62852),uint(62632),uint(4266),uint(16317),uint(16651),uint(63952),uint(63622),uint(15547),uint(63512),uint(63151),uint(14887),uint(11112),uint(62821),uint(62953),uint(62931),uint(15217),uint(63811),uint(63613),uint(63723),uint(63921),uint(64031),uint(1116),uint(13831),uint(3835)})&.Rotten:== uint(40110)))|(.Rotten:== uint(5001)&.Peel:->contains($uint,[]uint{uint(11673),uint(19993),uint(12333),uint(17441),uint(14502),uint(16671),uint(16561),uint(15923),uint(13732),uint(12892),uint(13332),uint(16271),uint(12232),uint(12342),uint(14093),uint(14533),uint(15932),uint(14881),uint(16742),uint(13341),uint(13561),uint(13583),uint(16632),uint(19910),uint(16412),uint(11493),uint(15642),uint(11691),uint(15554),uint(18511),uint(14432),uint(12681),uint(14322),uint(12263),uint(14652),uint(11181),uint(14472),uint(12941),uint(17763),uint(17301),uint(12712),uint(13592),uint(16311),uint(14142),uint(15211),uint(18111),uint(16791),uint(15933),uint(11111),uint(14261),uint(14481),uint(14503),uint(13601),uint(16562),uint(16672),uint(13733),uint(14653),uint(14631),uint(13861),uint(14081),uint(14433),uint(14323),uint(11692),uint(12233),uint(13333),uint(12893),uint(12343),uint(17671),uint(16312),uint(11481),uint(13571),uint(14882),uint(18512),uint(12713),uint(15212),uint(13562),uint(12682),uint(16633),uint(16743),uint(16413),uint(15643),uint(17751),uint(14482),uint(14262),uint(12942),uint(16321),uint(16563),uint(13602),uint(11182),uint(15551),uint(18041),uint(13593),uint(17302),uint(14473),uint(14143),uint(11112),uint(17672),uint(14161),uint(14601),uint(14491),uint(19991),uint(19881),uint(12683),uint(16634),uint(13563),uint(12331),uint(19951),uint(14082),uint(14632),uint(12894),uint(18112),uint(11693),uint(11671),uint(15921),uint(13862),uint(18513),uint(11491),uint(19371),uint(16313),uint(13572),uint(11183),uint(11482),uint(15213),uint(14091),uint(14883),uint(14531),uint(16001),uint(18042),uint(14483),uint(14263),uint(17752),uint(12943),uint(12591),uint(13581),uint(13603),uint(16322),uint(12481),uint(12261),uint(18051),uint(15552),uint(13141),uint(13731),uint(14083),uint(13863),uint(15922),uint(14602),uint(19992),uint(14492),uint(11113),uint(17761),uint(14162),uint(19952),uint(14532),uint(12231),uint(12341),uint(14092),uint(11483),uint(18113),uint(11672),uint(15931),uint(14633),uint(14501),uint(12332),uint(12262),uint(16411),uint(16191),uint(16631),uint(15641),uint(11492),uint(16081),uint(14651),uint(15553),uint(12592),uint(13573),uint(12891),uint(14431),uint(14321),uint(19953),uint(13331),uint(13441),uint(17762),uint(14163),uint(14141),uint(14493),uint(14603),uint(12711),uint(14471),uint(13591),uint(18052),uint(17753),uint(13582),uint(16741)})))|(.Rotten:== uint(30021)&.Peel:->contains($uint,[]uint{uint(19842),uint(12191),uint(12192),uint(17811),uint(13121),uint(12193),uint(17781),uint(19841)})))|(.Rotten:== uint(5003)&.Peel:->contains($uint,[]uint{uint(18453),uint(19443),uint(11123),uint(15263),uint(15131),uint(15351),uint(18462),uint(11752),uint(15171),uint(15853),uint(17982),uint(14951),uint(11902),uint(15822),uint(14023),uint(17983),uint(16403),uint(15132),uint(11753),uint(16531),uint(13702),uint(11511),uint(15783),uint(15343),uint(12602),uint(15823),uint(18463),uint(13271),uint(12611),uint(19871),uint(15352),uint(12871),uint(14952),uint(15172),uint(17561),uint(11903),uint(16391),uint(15841),uint(14961),uint(12612),uint(13272),uint(15133),uint(15221),uint(15771),uint(15353),uint(13703),uint(13681),uint(12603),uint(11512),uint(16532),uint(19872),uint(11521),uint(18451),uint(15842),uint(11121),uint(17571),uint(14962),uint(16141),uint(15261),uint(15173),uint(14953),uint(12872),uint(12604),uint(13682),uint(16401),uint(15851),uint(19261),uint(14311),uint(16392),uint(19441),uint(13273),uint(14021),uint(11522),uint(15772),uint(15222),uint(11513),uint(12921),uint(15134),uint(12613),uint(16142),uint(11751),uint(12873),uint(15262),uint(18452),uint(19442),uint(15341),uint(15781),uint(14312),uint(15843),uint(15821),uint(11122),uint(17981),uint(14963),uint(19191),uint(15223),uint(13683),uint(16402),uint(15852),uint(11901),uint(12601),uint(18461),uint(13701),uint(15782),uint(15342),uint(14022),uint(11523),uint(15773)})))|(.Peel:->contains($uint,[]uint{uint(54491),uint(54541),uint(54501),uint(54492),uint(54542),uint(54502),uint(54480),uint(54511),uint(30801),uint(30802),uint(54543),uint(54512)})&.Rotten:== uint(1050)))|(.Peel:->contains($uint,[]uint{uint(31894),uint(34591),uint(34041),uint(46092),uint(34481),uint(34393),uint(37262),uint(31093),uint(34692),uint(34472),uint(30521),uint(40012),uint(34340),uint(34362),uint(34252),uint(34991),uint(46242),uint(34463),uint(34661),uint(46052),uint(31151),uint(46712),uint(34992),uint(34332),uint(34662),uint(34222),uint(34112),uint(34851),uint(34411),uint(34323),uint(34301),uint(34213),uint(35502),uint(34842),uint(34182),uint(46083),uint(34402),uint(34711),uint(34821),uint(34183),uint(34161),uint(34381),uint(34051),uint(37263),uint(34592),uint(34042),uint(34482),uint(40013),uint(30641),uint(46032),uint(30522),uint(34781),uint(34473),uint(34451),uint(34693),uint(46243),uint(34341),uint(34231),uint(34253),uint(34342),uint(34232),uint(31152),uint(34993),uint(34971),uint(34421),uint(34333),uint(34311),uint(34663),uint(46031),uint(34641),uint(34091),uint(34223),uint(34852),uint(34412),uint(34302),uint(31891),uint(30351),uint(30352),uint(34712),uint(34822),uint(34162),uint(34052),uint(46081),uint(34382),uint(31091),uint(35561),uint(30642),uint(34681),uint(34593),uint(34483),uint(34021),uint(34351),uint(34461),uint(46033),uint(34782),uint(34452),uint(46041),uint(46591),uint(34431),uint(34651),uint(34211),uint(34233),uint(34321),uint(34972),uint(34422),uint(34312),uint(34642),uint(34092),uint(31153),uint(35491),uint(31892),uint(34831),uint(34281),uint(34391),uint(34413),uint(46600),uint(34832),uint(34260),uint(34282),uint(30353),uint(31893),uint(34392),uint(34414),uint(31092),uint(34823),uint(34713),uint(34691),uint(46091),uint(34251),uint(34471),uint(34361),uint(34383),uint(37261),uint(46241),uint(35562),uint(46593),uint(34682),uint(34462),uint(30643),uint(34110),uint(34022),uint(34352),uint(40011),uint(34023),uint(34331),uint(34353),uint(34111),uint(34221),uint(46051),uint(34432),uint(34322),uint(34652),uint(46042),uint(34212),uint(46592),uint(46082),uint(35501),uint(34841),uint(34973),uint(34313),uint(34181),uint(34401),uint(46711),uint(34093),uint(35492)})&.Rotten:== uint(2011)))|(.Rotten:== uint(4005)&.Peel:->contains($uint,[]uint{uint(12871),uint(15172),uint(14952),uint(17561),uint(11903),uint(15322),uint(11701),uint(18221),uint(12603),uint(18463),uint(18441),uint(19871),uint(16391),uint(14961),uint(15841),uint(12612),uint(15771),uint(15353),uint(15221),uint(15133),uint(13272),uint(11512),uint(13681),uint(16532),uint(13703),uint(19141),uint(10122),uint(15173),uint(14953),uint(13391),uint(11521),uint(16392),uint(15842),uint(17571),uint(14962),uint(12872),uint(10571),uint(15261),uint(11121),uint(16141),uint(18442),uint(13682),uint(12604),uint(16621),uint(19872),uint(16401),uint(15851),uint(15323),uint(18451),uint(19441),uint(11702),uint(14311),uint(15341),uint(11522),uint(14021),uint(17981),uint(18443),uint(11513),uint(15772),uint(19191),uint(13273),uint(12921),uint(15134),uint(15222),uint(12613),uint(11751),uint(13401),uint(16142),uint(12873),uint(19261),uint(15262),uint(10123),uint(16331),uint(15781),uint(18461),uint(14312),uint(16393),uint(11703),uint(15821),uint(15843),uint(11122),uint(10572),uint(14963),uint(15223),uint(15773),uint(18452),uint(16622),uint(19442),uint(11901),uint(13683),uint(16402),uint(15852),uint(13371),uint(12601),uint(16332),uint(17982),uint(13701),uint(18444),uint(15342),uint(15782),uint(14022),uint(11523),uint(11171),uint(10573),uint(11123),uint(15351),uint(11752),uint(15263),uint(19161),uint(15131),uint(11902),uint(16161),uint(15853),uint(15171),uint(14951),uint(13411),uint(12861),uint(15822),uint(18453),uint(14023),uint(19311),uint(19443),uint(11172),uint(18462),uint(16623),uint(16403),uint(15352),uint(15132),uint(13702),uint(11511),uint(11753),uint(16531),uint(16333),uint(15783),uint(19312),uint(15343),uint(15321),uint(12602),uint(15823),uint(16241),uint(10121),uint(13271),uint(12611),uint(17983),uint(13381)})))|(.Peel:->contains($uint,[]uint{uint(34347)})&.Rotten:== uint(20109)))|(.Peel:->contains($uint,[]uint{uint(32101),uint(32123),uint(32541),uint(46132),uint(32092),uint(32202),uint(32532),uint(32642),uint(30033),uint(46141),uint(32172),uint(32502),uint(32031),uint(32053),uint(32471),uint(32933),uint(46101),uint(32792),uint(32572),uint(32441),uint(32793),uint(32881),uint(32573),uint(46142),uint(32001),uint(32111),uint(32221),uint(32542),uint(46261),uint(46701),uint(32102),uint(32401),uint(32203),uint(32643),uint(32511),uint(32093),uint(32094),uint(32512),uint(32402),uint(32261),uint(32173),uint(32780),uint(32472),uint(32032),uint(46102),uint(46190),uint(30031),uint(32882),uint(32002),uint(32222),uint(32112),uint(32442),uint(32961),uint(32103),uint(32521),uint(32543),uint(32301),uint(32631),uint(46262),uint(46702),uint(32271),uint(32161),uint(32513),uint(32931),uint(32051),uint(32460),uint(35751),uint(32262),uint(32033),uint(32121),uint(32473),uint(32870),uint(32430),uint(46131),uint(46263),uint(32122),uint(30032),uint(32443),uint(32641),uint(32531),uint(32883),uint(46470),uint(32003),uint(32201),uint(32223),uint(32091),uint(32113),uint(32522),uint(32632),uint(32302),uint(32720),uint(32962),uint(32104),uint(32303),uint(32523),uint(32171),uint(32633),uint(32501),uint(32932),uint(32272),uint(32052),uint(32162),uint(32514),uint(38761),uint(32791),uint(32571),uint(35752)})&.Rotten:== uint(2002)))|(.Rotten:== uint(1141)&.Peel:->contains($uint,[]uint{uint(1870126),uint(1630111),uint(1528113),uint(1626112),uint(1160111),uint(1451113),uint(1870121),uint(1116111),uint(1581112),uint(1128113),uint(1870125),uint(1642113),uint(1528112),uint(1164111),uint(1128112),uint(1160112),uint(1626113),uint(1581111),uint(1164112),uint(1870124),uint(1630112),uint(1165111),uint(1128111),uint(1506112),uint(1160113),uint(1528111),uint(1103112),uint(1642111),uint(1870123),uint(1630113),uint(1116113),uint(1506111),uint(1451111),uint(1164113),uint(1506113),uint(1165112),uint(1626111),uint(1996121),uint(1103111),uint(1870122),uint(1116112),uint(1165113),uint(1451112),uint(1581113),uint(1642112)})))|(.Peel:->contains($uint,[]uint{uint(3429113),uint(3429112),uint(96),uint(3429111),uint(97),uint(98)})&.Rotten:== uint(2091)))|(.Peel:->contains($uint,[]uint{uint(1553111),uint(1295112),uint(1250111),uint(15951122),uint(1671111),uint(13801112),uint(1074113),uint(1789111),uint(1399112),uint(16711121),uint(13991121),uint(1382111),uint(13711123),uint(1902126),uint(1398113),uint(1493111),uint(13821122),uint(6115112),uint(2084121),uint(1405113),uint(1597111),uint(1183111),uint(11051121),uint(10741121),uint(19911122),uint(1193112),uint(1371112),uint(1544113),uint(1295116),uint(15471121),uint(1991112),uint(1673113),uint(1477113),uint(11001122),uint(13811113),uint(1135116),uint(1597116),uint(1484113),uint(11771122),uint(14771121),uint(1671116),uint(11001121),uint(1381113),uint(15971123),uint(1475112),uint(22571123),uint(1100112),uint(2348121),uint(13811121),uint(1789115),uint(1379111),uint(1144113),uint(1553115),uint(1250116),uint(6115111),uint(1430112),uint(15531121),uint(6124113),uint(19911123),uint(1382112),uint(13801121),uint(61151123),uint(1074112),uint(1621112),uint(1142111),uint(1792111),uint(1295111),uint(6117113),uint(1135111),uint(13991122),uint(13481121),uint(13691123),uint(1902122),uint(10691122),uint(13941123),uint(1547113),uint(1380117),uint(15471122),uint(13821121),uint(1135115),uint(11441121),uint(1405112),uint(1193113),uint(1177111),uint(1258113),uint(15951121),uint(2084122),uint(1183112),uint(1597112),uint(18521121),uint(1493112),uint(1026121),uint(6115113),uint(1398112),uint(23451122),uint(1991111),uint(1295115),uint(1348111),uint(1902127),uint(11001123),uint(1177115),uint(11431112),uint(13811112),uint(1673112),uint(1371111),uint(11351123),uint(1484115),uint(1544112),uint(1789112),uint(61241123),uint(13811111),uint(1069111),uint(11771121),uint(1144112),uint(11431111),uint(1789116),uint(14771122),uint(1477115),uint(1250115),uint(23451123),uint(2348122),uint(1380113),uint(1100111),uint(1597117),uint(1792112),uint(13691122),uint(10691123),uint(1544117),uint(23081121),uint(1475113),uint(1026122),uint(13991123),uint(22571122),uint(1597113),uint(15971122),uint(1105113),uint(1902123),uint(1430111),uint(13801111),uint(1671115),uint(1381112),uint(1143113),uint(11831121),uint(1595111),uint(1621113),uint(1399111),uint(1394113),uint(1258112),uint(1405111),uint(1143117),uint(11051123),uint(1398111),uint(13801123),uint(10741123),uint(13941122),uint(11441122),uint(1177112),uint(15471123),uint(16711123),uint(1673111),uint(1183113),uint(2084123),uint(1477111),uint(1789113),uint(1379113),uint(11431113),uint(1348112),uint(1177116),uint(1484116),uint(1544111),uint(18521122),uint(2348124),uint(11351122),uint(1144111),uint(1380116),uint(1250113),uint(13711121),uint(23451121),uint(6117111),uint(1553117),uint(1380112),uint(1069112),uint(1143112),uint(11831122),uint(1595112),uint(6124111),uint(2348123),uint(61241122),uint(13691121),uint(1544116),uint(11431121),uint(61151121),uint(1177117),uint(1477116),uint(1135113),uint(13481123),uint(1142113),uint(1381111),uint(23081122),uint(1553113),uint(1484111),uint(14771123),uint(1493113),uint(1792113),uint(1369111),uint(15531123),uint(1789117),uint(1547112),uint(1394112),uint(15971121),uint(1105112),uint(22571121),uint(1399113),uint(11051122),uint(1369113),uint(1991113),uint(1295113),uint(13711122),uint(1250112),uint(1177113),uint(13801113),uint(1484117),uint(19911121),uint(10741122),uint(1143116),uint(1902125),uint(1671112),uint(1371113),uint(1380115),uint(11351121),uint(1193111),uint(1477112),uint(11431123),uint(18521123),uint(13811123),uint(1135117),uint(16711122),uint(1295117),uint(15951123),uint(2084124),uint(1348113),uint(1394111),uint(1595113),uint(11831123),uint(13811122),uint(1100113),uint(10691121),uint(1553116),uint(1250117),uint(1380111),uint(6117112),uint(11431122),uint(61151122),uint(1475111),uint(1379112),uint(6124112),uint(1671117),uint(1544115),uint(1143111),uint(1484112),uint(13821123),uint(1621111),uint(11441123),uint(1430113),uint(1477117),uint(15531122),uint(1143115),uint(1671113),uint(1902121),uint(1135112),uint(1547111),uint(13481122),uint(61241121),uint(13801122),uint(11771123),uint(1597115),uint(1105111),uint(1382113),uint(1142112),uint(13941121),uint(1069113),uint(1258111),uint(23081123),uint(1369112),uint(1553112),uint(1074111)})&.Rotten:== uint(5011)))|(.Peel:->contains($uint,[]uint{uint(5356941),uint(9529013),uint(5352141),uint(5310143),uint(9526611),uint(5310142),uint(9529511),uint(5352142),uint(9526612),uint(5356942),uint(5310141),uint(9529512),uint(9526613),uint(9529011),uint(5356943),uint(5352143),uint(9529513),uint(9529012)})&.Rotten:== uint(9031)))|(.Rotten:== uint(1110)&.Peel:->contains($uint,[]uint{uint(33561),uint(33562)})))|(.Rotten:== uint(2021)&.Peel:->contains($uint,[]uint{uint(4310841),uint(4466842),uint(4346741),uint(4345342),uint(233),uint(145),uint(4349843),uint(4342341),uint(4344141),uint(4468342),uint(198),uint(132),uint(154),uint(4349143),uint(4340643),uint(163),uint(229),uint(4349641),uint(150),uint(128),uint(194),uint(1482111),uint(4342342),uint(159),uint(4466841),uint(1250111),uint(4340142),uint(4345541),uint(168),uint(146),uint(4345343),uint(4344142),uint(4468341),uint(133),uint(155),uint(199),uint(243),uint(230),uint(164),uint(4346742),uint(4343341),uint(4340341),uint(4340143),uint(129),uint(151),uint(1482112),uint(160),uint(4349642),uint(4342343),uint(169),uint(4341441),uint(4344143),uint(134),uint(222),uint(244),uint(156),uint(200),uint(1250113),uint(4341041),uint(4464543),uint(4340641),uint(231),uint(4343342),uint(4346743),uint(4349141),uint(4310843),uint(4345542),uint(130),uint(152),uint(1482113),uint(4341442),uint(161),uint(4340342),uint(4343343),uint(4349643),uint(126),uint(170),uint(192),uint(4349841),uint(223),uint(157),uint(245),uint(4466843),uint(4464542),uint(144),uint(232),uint(4345341),uint(4341042),uint(4345543),uint(153),uint(131),uint(4468343),uint(4340642),uint(4349142),uint(4310842),uint(228),uint(162),uint(4341443),uint(4340343),uint(127),uint(193),uint(1250112),uint(4349842),uint(4340141),uint(4341043),uint(4464541),uint(158),uint(224)})))|(.Peel:->contains($uint,[]uint{uint(1190111),uint(1190112),uint(1190113)})&.Rotten:== uint(405)))|(.Peel:->contains($uint,[]uint{uint(9839661),uint(9839662),uint(9839663)})&.Rotten:== uint(6031)))|(.Peel:->contains($uint,[]uint{uint(33230),uint(33221),uint(33451),uint(33222),uint(40192),uint(40191),uint(33452)})&.Rotten:== uint(1003)))|(.Rotten:== uint(30011)&.Peel:->contains($uint,[]uint{uint(16841),uint(14193),uint(15592),uint(12411),uint(12121),uint(12112),uint(15183),uint(10731),uint(14211),uint(16842),uint(12113),uint(12412),uint(15593),uint(14212),uint(16843),uint(14731),uint(12122),uint(10732),uint(12021),uint(12791),uint(12413),uint(14732),uint(15181),uint(14191),uint(14213),uint(12022),uint(12123),uint(10733),uint(12792),uint(15591),uint(14733),uint(19181),uint(12793),uint(15182),uint(12111),uint(14192)})))|(.Peel:->contains($uint,[]uint{uint(6117111),uint(6117113),uint(6117112)})&.Rotten:== uint(501)))|(.Peel:->contains($uint,[]uint{uint(12651),uint(13553),uint(18472),uint(18582),uint(15502),uint(13852),uint(19462),uint(17671),uint(17693),uint(14182),uint(16571),uint(11463),uint(15933),uint(10491),uint(14552),uint(14662),uint(16061),uint(18001),uint(15621),uint(11472),uint(15753),uint(15951),uint(13883),uint(19981),uint(14873),uint(14521),uint(14543),uint(15683),uint(15331),uint(15111),uint(11094),uint(14231),uint(14561),uint(14891),uint(17993),uint(14583),uint(12911),uint(15432),uint(10544),uint(10412),uint(12621),uint(12643),uint(13853),uint(14183),uint(16572),uint(14592),uint(10421),uint(16761),uint(11543),uint(16541),uint(18583),uint(10131),uint(14522),uint(19463),uint(11473),uint(16031),uint(15503),uint(15701),uint(12652),uint(17672),uint(15741),uint(14861),uint(14553),uint(12912),uint(14663),uint(15433),uint(10171),uint(15411),uint(15191),uint(19982),uint(13871),uint(12661),uint(12441),uint(14201),uint(16062),uint(15952),uint(10492),uint(18011),uint(15622),uint(18473),uint(14593),uint(14571),uint(16762),uint(16542),uint(10422),uint(14892),uint(14562),uint(10413),uint(15332),uint(14232),uint(11711),uint(11091),uint(10761),uint(15702),uint(10541),uint(15504),uint(12653),uint(16573),uint(16111),uint(12622),uint(12662),uint(15953),uint(15931),uint(16063),uint(10141),uint(15623),uint(15051),uint(15711),uint(10493),uint(14171),uint(13181),uint(10132),uint(14523),uint(16032),uint(13731),uint(13621),uint(10172),uint(14233),uint(14893),uint(14563),uint(14541),uint(12913),uint(11712),uint(19983),uint(13551),uint(13881),uint(15412),uint(11461),uint(15192),uint(15742),uint(13872),uint(17691),uint(14202),uint(14862),uint(16112),uint(12623),uint(12271),uint(14572),uint(16543),uint(15751),uint(15333),uint(10423),uint(10621),uint(13622),uint(13732),uint(14172),uint(16033),uint(10771),uint(15681),uint(13182),uint(15703),uint(14581),uint(10762),uint(10542),uint(11092),uint(10142),uint(15193),uint(17692),uint(14863),uint(13851),uint(11462),uint(13873),uint(14203),uint(14181),uint(15932),uint(18581),uint(15712),uint(18471),uint(13191),uint(19461),uint(15052),uint(12663),uint(12641),uint(17991),uint(15752),uint(11471),uint(11713),uint(14872),uint(13231),uint(14542),uint(13552),uint(13882),uint(10173),uint(15501),uint(15413),uint(15743),uint(10411),uint(14582),uint(11093),uint(10763),uint(10543),uint(16113),uint(10622),uint(14551),uint(14573),uint(14661),uint(15431),uint(17992),uint(15053),uint(10772),uint(13733),uint(12642),uint(14173),uint(14591),uint(15704),uint(13623),uint(13183),uint(15682)})&.Rotten:== uint(4007)))|(.Rotten:== uint(1026)&.Peel:->contains($uint,[]uint{uint(46030)})))|(.Peel:->contains($uint,[]uint{uint(9552813),uint(5351843),uint(5350743),uint(5350941),uint(9534312),uint(5357343),uint(9537911),uint(9532913),uint(9552712),uint(5389241),uint(9554912),uint(9559712),uint(9534413),uint(5387543),uint(9534611),uint(5307781),uint(5403443),uint(9534211),uint(5351241),uint(5351043),uint(5350141),uint(5397842),uint(9537912),uint(9534313),uint(9534511),uint(9552713),uint(9559713),uint(5347541),uint(5350942),uint(9534212),uint(9554913),uint(5300543),uint(9534612),uint(5350142),uint(9558111),uint(5389242),uint(5350943),uint(5347542),uint(9534111),uint(5397843),uint(5351242),uint(9552714),uint(9534411),uint(9534213),uint(9552811),uint(5387541),uint(9534613),uint(5300542),uint(5351841),uint(5354441),uint(9537913),uint(9534512),uint(5350741),uint(9553612),uint(5403441),uint(9553611),uint(9554711),uint(5351243),uint(5389243),uint(5350143),uint(5307783),uint(9558112),uint(9534112),uint(5347543),uint(9532911),uint(5357341),uint(9534412),uint(5350742),uint(9552812),uint(9534113),uint(5351041),uint(9534311),uint(9559711),uint(5354442),uint(9552711),uint(5387542),uint(9534513),uint(9553613),uint(5300541),uint(5351842),uint(9554713),uint(9554911),uint(9554712),uint(5307782),uint(5347544),uint(9558113),uint(5403442),uint(5354443),uint(5357342),uint(5351042),uint(9532912),uint(5397841)})&.Rotten:== uint(8031)))|(.Rotten:== uint(101)&.Peel:->contains($uint,[]uint{uint(43571),uint(43593),uint(46902),uint(42123),uint(41802),uint(43971),uint(43562),uint(40403),uint(42921),uint(46903),uint(43972),uint(43563),uint(42925),uint(41803),uint(42111),uint(43572),uint(35701),uint(40401),uint(35702),uint(43591),uint(42113),uint(42926),uint(42112),uint(40405),uint(42121),uint(42922),uint(43592),uint(35703),uint(46901),uint(40407),uint(40406),uint(42122),uint(41801),uint(40402),uint(43561)})))|(.Peel:->contains($uint,[]uint{uint(6902),uint(23212),uint(23652),uint(6682),uint(6792),uint(20207),uint(34722),uint(35052),uint(35712),uint(26723),uint(26547),uint(26877),uint(21751),uint(26582),uint(26516),uint(26846),uint(33252),uint(20651),uint(23722),uint(6581),uint(35523),uint(35413),uint(24052),uint(35721),uint(23951),uint(6722),uint(6282),uint(26772),uint(33112),uint(21721),uint(35223),uint(35421),uint(35311),uint(20652),uint(35553),uint(21752),uint(35751),uint(23723),uint(23811),uint(24053),uint(23921),uint(23151),uint(24031),uint(6643),uint(6841),uint(33521),uint(6511),uint(33653),uint(20612),uint(33323),uint(24013),uint(20216),uint(6872),uint(6542),uint(21712),uint(6652),uint(35452),uint(23551),uint(23221),uint(29922),uint(26543),uint(26587),uint(23111),uint(26785),uint(26873),uint(26512),uint(23912),uint(29913),uint(24022),uint(26842),uint(26776),uint(33512),uint(20621),uint(34823),uint(34911),uint(20203),uint(35351),uint(34811),uint(26777),uint(34921),uint(26843),uint(26645),uint(23851),uint(26513),uint(35053),uint(6793),uint(6683),uint(6771),uint(35713),uint(20195),uint(20217),uint(23552),uint(6582),uint(23222),uint(20613),uint(23112),uint(33152),uint(22892),uint(6283),uint(23952),uint(35722),uint(22896),uint(33253),uint(33451),uint(23213),uint(34851),uint(26517),uint(35313),uint(26781),uint(26847),uint(35511),uint(35423),uint(26605),uint(26583),uint(35753),uint(35312),uint(23812),uint(24032),uint(23922),uint(6842),uint(35422),uint(35752),uint(6512),uint(26782),uint(20653),uint(26606),uint(23152),uint(23051),uint(9143),uint(6873),uint(22897),uint(6543),uint(26685),uint(26641),uint(33311),uint(21753),uint(26773),uint(20046),uint(26795),uint(35211),uint(26905),uint(35453),uint(35321),uint(26786),uint(30011),uint(23121),uint(29923),uint(23011),uint(33522),uint(21713),uint(34912),uint(21722),uint(35352),uint(20622),uint(6772),uint(24023),uint(23913),uint(23223),uint(23113),uint(23553),uint(6583),uint(22893),uint(6781),uint(20042),uint(20196),uint(34711),uint(34821),uint(35151),uint(35723),uint(26646),uint(9144),uint(26791),uint(26725),uint(26681),uint(26901),uint(34852),uint(23711),uint(23821),uint(23953),uint(35512),uint(35754),uint(7041),uint(6843),uint(6513),uint(23852),uint(33122),uint(26651),uint(26585),uint(26607),uint(26541),uint(23052),uint(26761),uint(26871),uint(33651),uint(33321),uint(21754),uint(35212),uint(35322),uint(20201),uint(23712),uint(23822),uint(6874),uint(20623),uint(33312),uint(6773),uint(34913),uint(20205),uint(21723),uint(35221),uint(6641),uint(35551),uint(35353),uint(23122),uint(26642),uint(29911),uint(23012),uint(26686),uint(26796),uint(26906),uint(30012),uint(23923),uint(26545),uint(24011),uint(23153),uint(23813),uint(24033),uint(23021),uint(26765),uint(26875),uint(26721),uint(26655),uint(34812),uint(34922),uint(34712),uint(34822),uint(26766),uint(26722),uint(26876),uint(26656),uint(35152),uint(26546),uint(30013),uint(6782),uint(26647),uint(26581),uint(26845),uint(26515),uint(20206),uint(6901),uint(23651),uint(6681),uint(6791),uint(33251),uint(23211),uint(23123),uint(34721),uint(34853),uint(23853),uint(35051),uint(35513),uint(24051),uint(35711),uint(23721),uint(34752),uint(26792),uint(35522),uint(26726),uint(35412),uint(26682),uint(26902),uint(20202),uint(34751),uint(35213),uint(35323),uint(23713),uint(23823),uint(24021),uint(23911),uint(35521),uint(35411),uint(6721),uint(26793),uint(26771),uint(26727),uint(26683),uint(6642),uint(33652),uint(26652),uint(26586),uint(33322),uint(26542),uint(26762),uint(26872),uint(35222),uint(29921),uint(35552),uint(26775),uint(26687),uint(26643),uint(26797),uint(26841),uint(29912),uint(23022),uint(20215),uint(33511),uint(33313),uint(34813),uint(34923),uint(21711),uint(35451),uint(20611),uint(6761),uint(6871),uint(6541),uint(6651),uint(26511),uint(24012)})&.Rotten:== uint(40104)))|(.Rotten:== uint(50102)&.Peel:->contains($uint,[]uint{uint(16523),uint(24711),uint(12352),uint(24623),uint(24821),uint(41021),uint(16567),uint(61766),uint(20452),uint(40911),uint(8115),uint(40933),uint(28552),uint(16633),uint(16215),uint(24733),uint(16897),uint(37312),uint(40713),uint(20232),uint(65387),uint(40823),uint(61986),uint(37334),uint(16105),uint(16985),uint(15951),uint(16061),uint(12682),uint(21112),uint(24513),uint(28112),uint(24051),uint(11692),uint(15753),uint(62316),uint(62206),uint(21222),uint(15687),uint(24205),uint(25613),uint(20122),uint(62536),uint(62096),uint(65079),uint(21376),uint(21354),uint(36652),uint(15467),uint(15445),uint(15533),uint(11472),uint(25723),uint(17425),uint(25921),uint(15643),uint(45412),uint(15621),uint(62426),uint(15555),uint(19858),uint(25811),uint(28332),uint(25833),uint(21552),uint(34351),uint(39723),uint(2866),uint(63086),uint(9765),uint(31623),uint(23325),uint(9545),uint(15335),uint(14873),uint(9853),uint(39613),uint(9457),uint(31513),uint(6575),uint(62646),uint(10073),uint(43322),uint(39921),uint(10205),uint(17755),uint(39833),uint(62756),uint(62866),uint(34813),uint(63636),uint(39811),uint(18613),uint(35011),uint(14433),uint(35033),uint(6135),uint(35121),uint(18525),uint(43353),uint(18503),uint(14587),uint(63526),uint(14565),uint(1027),uint(14543),uint(34923),uint(31931),uint(31953),uint(14521),uint(40053),uint(40031),uint(43551),uint(14785),uint(3856),uint(31821),uint(20782),uint(14631),uint(35231),uint(35253),uint(18195),uint(18217),uint(34232),uint(31711),uint(40251),uint(62857),uint(13663),uint(23356),uint(39732),uint(60411),uint(34122),uint(62835),uint(34012),uint(13553),uint(2721),uint(39622),uint(13575),uint(25912),uint(62945),uint(35451),uint(13597),uint(2655),uint(62967),uint(2677),uint(19691),uint(13333),uint(14081),uint(62527),uint(19647),uint(14125),uint(30523),uint(33726),uint(62637),uint(19581),uint(62615),uint(14235),uint(19515),uint(39952),uint(13487),uint(43331),uint(14323),uint(62747),uint(62725),uint(30413),uint(13421),uint(3337),uint(18635),uint(2237),uint(45733),uint(63517),uint(40612),uint(63495),uint(43133),uint(30721),uint(45821),uint(63407),uint(30611),uint(43023),uint(43111),uint(3557),uint(31051),uint(45931),uint(63187),uint(43432),uint(36133),uint(42913),uint(3887),uint(63275),uint(63055),uint(3865),uint(13883),uint(2105),uint(38632),uint(19097),uint(13817),uint(37123),uint(16576),uint(42451),uint(37211),uint(37233),uint(37013),uint(5506),uint(12233),uint(27232),uint(22234),uint(11186),uint(12343),uint(22212),uint(12651),uint(12673),uint(27012),uint(15986),uint(10746),uint(27122),uint(10790),uint(10856),uint(37321),uint(16906),uint(36551),uint(10922),uint(20351),uint(10900),uint(27034),uint(15656),uint(63627),uint(12937),uint(22806),uint(12915),uint(12893),uint(13223),uint(20131),uint(25151),uint(20153),uint(7697),uint(63869),uint(15436),uint(52161),uint(10526),uint(36991),uint(19955),uint(10416),uint(17434),uint(17412),uint(24931),uint(27452),uint(24953),uint(15502),uint(2897),uint(22432),uint(31372),uint(1652),uint(1696),uint(27311),uint(9906),uint(27223),uint(13945),uint(27333),uint(18991),uint(50912),uint(64036),uint(13857),uint(23052),uint(14121),uint(27113),uint(5625),uint(13813),uint(14187),uint(5647),uint(14165),uint(14231),uint(19101),uint(13593),uint(14297),uint(34822),uint(27641),uint(19453),uint(34712),uint(27751),uint(6065),uint(34932),uint(34734),uint(38113),uint(14495),uint(39081),uint(63596),uint(5955),uint(10126),uint(18507),uint(27773),uint(22722),uint(63486),uint(39103),uint(13571),uint(35152),uint(32054),uint(52623),uint(31922),uint(18617),uint(31812),uint(63706),uint(34333),uint(27553),uint(34311),uint(39653),uint(27531),uint(63860),uint(39631),uint(9642),uint(27421),uint(34223),uint(63926),uint(28631),uint(20553),uint(28653),uint(34113),uint(30052),uint(12647),uint(12625),uint(11182),uint(16448),uint(20531),uint(28521),uint(20311),uint(20333),uint(28433),uint(20421),uint(4437),uint(21622),uint(12911),uint(20113),uint(10918),uint(2686),uint(10896),uint(35614),uint(33651),uint(40832),uint(65158),uint(61955),uint(4085),uint(16136),uint(40722),uint(20223),uint(11006),uint(25221),uint(5053),uint(30712),uint(19695),uint(10698),uint(62197),uint(25111),uint(25133),uint(10522),uint(62175),uint(15982),uint(19981),uint(10412),uint(4877),uint(10786),uint(19585),uint(19915),uint(62065),uint(62087),uint(10852),uint(10808),uint(25023),uint(19541),uint(62505),uint(28323),uint(17416),uint(30932),uint(62417),uint(28411),uint(24913),uint(1982),uint(62395),uint(13087),uint(62307),uint(4547),uint(62285),uint(8111),uint(21895),uint(11107),uint(21851),uint(4556),uint(37352),uint(21983),uint(32727),uint(28512),uint(37132),uint(11085),uint(32551),uint(28732),uint(15432),uint(15476),uint(17922),uint(21653),uint(61572),uint(65347),uint(28402),uint(10799),uint(40951),uint(10865),uint(10909),uint(32023),uint(28622),uint(27852),uint(14552),uint(10491),uint(62056),uint(22511),uint(14662),uint(14486),uint(25331),uint(25353),uint(61946),uint(14618),uint(14596),uint(22555),uint(32221),uint(10755),uint(36912),uint(62386),uint(20817),uint(18186),uint(24922),uint(25032),uint(20751),uint(62276),uint(32353),uint(25551),uint(32331),uint(18208),uint(22423),uint(34413),uint(62166),uint(24812),uint(12317),uint(37022),uint(14816),uint(14772),uint(13826),uint(31253),uint(45333),uint(31231),uint(45311),uint(62716),uint(34523),uint(34633),uint(19132),uint(34611),uint(39851),uint(34721),uint(62936),uint(1617),uint(62496),uint(61251),uint(62826),uint(13716),uint(45223),uint(30923),uint(14178),uint(61141),uint(34853),uint(34831),uint(13562),uint(35051),uint(31033),uint(31011),uint(13606),uint(62606),uint(13496),uint(38012),uint(1067),uint(21213),uint(6417),uint(40731),uint(40753),uint(11745),uint(40533),uint(31913),uint(40511),uint(38122),uint(3566),uint(6637),uint(21323),uint(35513),uint(40621),uint(18736),uint(11613),uint(18846),uint(11481),uint(21521),uint(40313),uint(8806),uint(1375),uint(18802),uint(24152),uint(43032),uint(31451),uint(42812),uint(21411),uint(21433),uint(11415),uint(45421),uint(6373),uint(16413),uint(40423),uint(42922),uint(62597),uint(11411),uint(38033),uint(19555),uint(19511),uint(62685),uint(27853),uint(62707),uint(62487),uint(11477),uint(62465),uint(27831),uint(38011),uint(62817),uint(27523),uint(38121),uint(19885),uint(62377),uint(15626),uint(62355),uint(32222),uint(27413),uint(3575),uint(11081),uint(28051),uint(32332),uint(31452),uint(24012),uint(3597),uint(34412),uint(2585),uint(11103),uint(19643),uint(62575),uint(23022),uint(34522),uint(37351),uint(63345),uint(63257),uint(10795),uint(34632),uint(63125),uint(14636),uint(63147),uint(19027),uint(12225),uint(10905),uint(45913),uint(62927),uint(12357),uint(34852),uint(62905),uint(12335),uint(12313),uint(23352),uint(16572),uint(19093),uint(27611),uint(32024),uint(16638),uint(61255),uint(27721),uint(6448),uint(64005),uint(64027),uint(43612),uint(22252),uint(61145),uint(40752),uint(35512),uint(13888),uint(25332),uint(13822),uint(35622),uint(8846),uint(20721),uint(13866),uint(28821),uint(20633),uint(17254),uint(14482),uint(13712),uint(22032),uint(25552),uint(40312),uint(20611),uint(63477),uint(40532),uint(14614),uint(14592),uint(13602),uint(5986),uint(14526),uint(38803),uint(20523),uint(40422),uint(28513),uint(33951),uint(17694),uint(20413),uint(33753),uint(31232),uint(33731),uint(28711),uint(52165),uint(28733),uint(2805),uint(17738),uint(22802),uint(25323),uint(2871),uint(33533),uint(63675),uint(19995),uint(63697),uint(11675),uint(5436),uint(2915),uint(63785),uint(5656),uint(11697),uint(33511),uint(31012),uint(28623),uint(33621),uint(14086),uint(63886),uint(36722),uint(12656),uint(36832),uint(22305),uint(22525),uint(18112),uint(40651),uint(1626),uint(63996),uint(17914),uint(40453),uint(25411),uint(61066),uint(28812),uint(40431),uint(12898),uint(25521),uint(16211),uint(6105),uint(16035),uint(23075),uint(16101),uint(1252),uint(50933),uint(25631),uint(32411),uint(25653),uint(1296),uint(50911),uint(5335),uint(25851),uint(11776),uint(15925),uint(13492),uint(9211),uint(1186),uint(32521),uint(30022),uint(15705),uint(5687),uint(11622),uint(22811),uint(15683),uint(22723),uint(63666),uint(15617),uint(22591),uint(11446),uint(36612),uint(22635),uint(36634),uint(63776),uint(19696),uint(25112),uint(15441),uint(21051),uint(19586),uint(15551),uint(19916),uint(19982),uint(4587),uint(15507),uint(4565),uint(10047),uint(34421),uint(31421),uint(31311),uint(31531),uint(60142),uint(4235),uint(31333),uint(31553),uint(32213),uint(9497),uint(34553),uint(34531),uint(10201),uint(32323),uint(21711),uint(34751),uint(14605),uint(21645),uint(40123),uint(14583),uint(40233),uint(14561),uint(24452),uint(40211),uint(42732),uint(45451),uint(62025),uint(21513),uint(40321),uint(21623),uint(39881),uint(24122),uint(19102),uint(21601),uint(12106),uint(61915),uint(62245),uint(42512),uint(62267),uint(45253),uint(39991),uint(42622),uint(62047),uint(40013),uint(9761),uint(14825),uint(21821),uint(62157),uint(62135),uint(12938),uint(65175),uint(12916),uint(43621),uint(61026),uint(35433),uint(12894),uint(30321),uint(35411),uint(35521),uint(30431),uint(22221),uint(30453),uint(18116),uint(18182),uint(30233),uint(17918),uint(35653),uint(4618),uint(35323),uint(4596),uint(21891),uint(35213),uint(17698),uint(43313),uint(39912),uint(34052),uint(30651),uint(64867),uint(17896),uint(65065),uint(22023),uint(4486),uint(33722),uint(33832),uint(27052),uint(31113),uint(30893),uint(31223),uint(50951),uint(40352),uint(13576),uint(22727),uint(62126),uint(15987),uint(22551),uint(42631),uint(22595),uint(42521),uint(13224),uint(40022),uint(16031),uint(13422),uint(33612),uint(62016),uint(20813),uint(15921),uint(40132),uint(42653),uint(24852),uint(27646),uint(62456),uint(15657),uint(10285),uint(62566),uint(15525),uint(1987),uint(27712),uint(27514),uint(27734),uint(20923),uint(62676),uint(42433),uint(27822),uint(62346),uint(15745),uint(42411),uint(21011),uint(62236),uint(21033),uint(36951),uint(36511),uint(21121),uint(24522),uint(15305),uint(27932),uint(28152),uint(10527),uint(3496),uint(15437),uint(15415),uint(24632),uint(15503),uint(21253),uint(6897),uint(1965),uint(3606),uint(6985),uint(21231),uint(45711),uint(10417),uint(32336),uint(21451),uint(9581),uint(18732),uint(14865),uint(9625),uint(18842),uint(63226),uint(32512),uint(32534),uint(14777),uint(4178),uint(15195),uint(14821),uint(63116),uint(24412),uint(19106),uint(30013),uint(21715),uint(36621),uint(12652),uint(62786),uint(21627),uint(6567),uint(21605),uint(30211),uint(36731),uint(16563),uint(15085),uint(62896),uint(36753),uint(62337),uint(31654),uint(31522),uint(16893),uint(20932),uint(62315),uint(16915),uint(16717),uint(62535),uint(20712),uint(27351),uint(42552),uint(62557),uint(62139),uint(34452),uint(62645),uint(62205),uint(13941),uint(14557),uint(13875),uint(27153),uint(27923),uint(14535),uint(27813),uint(10496),uint(14645),uint(24531),uint(13787),uint(14491),uint(14667),uint(24553),uint(21152),uint(27021),uint(21372),uint(24751),uint(31412),uint(16981),uint(62425),uint(62447),uint(28011),uint(38051),uint(27131),uint(4165),uint(63085),uint(37611),uint(24311),uint(24201),uint(17421),uint(63107),uint(21658),uint(24333),uint(2647),uint(37721),uint(37523),uint(17311),uint(2603),uint(24113),uint(24421),uint(2625),uint(3857),uint(17707),uint(19854),uint(65386),uint(62667),uint(31896),uint(62777),uint(62755),uint(21812),uint(31918),uint(35222),uint(62887),uint(62865),uint(31852),uint(14095),uint(59583),uint(6576),uint(35112),uint(14183),uint(19986),uint(14161),uint(18191),uint(6136),uint(11486),uint(63855),uint(34153),uint(12665),uint(34131),uint(63525),uint(63965),uint(12687),uint(35332),uint(30312),uint(13083),uint(12643),uint(30532),uint(7755),uint(64075),uint(33933),uint(17751),uint(18631),uint(34021),uint(18675),uint(58131),uint(30422),uint(63195),uint(33823),uint(25424),uint(17927),uint(18807),uint(12885),uint(35552),uint(33911),uint(25512),uint(25622),uint(13567),uint(2867),uint(28121),uint(10892),uint(16132),uint(11002),uint(30752),uint(45812),uint(16066),uint(25732),uint(33713),uint(18521),uint(15956),uint(45922),uint(13215),uint(43423),uint(61246),uint(43511),uint(28451),uint(63635),uint(23321),uint(63657),uint(41012),uint(10782),uint(63637),uint(63615),uint(18526),uint(18636),uint(14487),uint(2106),uint(63725),uint(30753),uint(35012),uint(43112),uint(63505),uint(63527),uint(14641),uint(10206),uint(30731),uint(14597),uint(30621),uint(14553),uint(22565),uint(22631),uint(63857),uint(6035),uint(14531),uint(18218),uint(14817),uint(22301),uint(63967),uint(14795),uint(18196),uint(38633),uint(35232),uint(14861),uint(43552),uint(19098),uint(14663),uint(38501),uint(35122),uint(22433),uint(30951),uint(22411),uint(13871),uint(64077),uint(14773),uint(10492),uint(42452),uint(2898),uint(31523),uint(31611),uint(5551),uint(9766),uint(5507),uint(39711),uint(39733),uint(35452),uint(34132),uint(34022),uint(27352),uint(23071),uint(14091),uint(39623),uint(5925),uint(33912),uint(27132),uint(14179),uint(39953),uint(39931),uint(22851),uint(31413),uint(27022),uint(39821),uint(22807),uint(19956),uint(65067),uint(11746),uint(28122),uint(21223),uint(21421),uint(25152),uint(12881),uint(13211),uint(65177),uint(21377),uint(20132),uint(19692),uint(65155),uint(21311),uint(11416),uint(4605),uint(28452),uint(11482),uint(64825),uint(21641),uint(24822),uint(16445),uint(21531),uint(24932),uint(16511),uint(21553),uint(4495),uint(11086),uint(16577),uint(13805),uint(13717),uint(13827),uint(45312),uint(13607),uint(13585),uint(2722),uint(30313),uint(22213),uint(13695),uint(16216),uint(61776),uint(2656),uint(24712),uint(61996),uint(30511),uint(16106),uint(19582),uint(30533),uint(10756),uint(27770),uint(19516),uint(10800),uint(62106),uint(16995),uint(16062),uint(13563),uint(10910),uint(36552),uint(28012),uint(15952),uint(10866),uint(30423),uint(13497),uint(16907),uint(11693),uint(21452),uint(11473),uint(31932),uint(28113),uint(17545),uint(7698),uint(11935),uint(31822),uint(25051),uint(11187),uint(28421),uint(15446),uint(21716),uint(15556),uint(17435),uint(15622),uint(12221),uint(17413),uint(58111),uint(27431),uint(28311),uint(27453),uint(28333),uint(31712),uint(21606),uint(12353),uint(12331),uint(24831),uint(24721),uint(24875),uint(24853),uint(18117),uint(17897),uint(36992),uint(37212),uint(21892),uint(22222),uint(61635),uint(11055),uint(15336),uint(27651),uint(8116),uint(24413),uint(34713),uint(20352),uint(61965),uint(61767),uint(12661),uint(12683),uint(61987),uint(10747),uint(61116),uint(24633),uint(24611),uint(34823),uint(24523),uint(39082),uint(61921),uint(12595),uint(10857),uint(37322),uint(30722),uint(62207),uint(18733),uint(45831),uint(62185),uint(35153),uint(35131),uint(34911),uint(14522),uint(18843),uint(34933),uint(62075),uint(18491),uint(62515),uint(62537),uint(30612),uint(31052),uint(62097),uint(35021),uint(18865),uint(1983),uint(3888),uint(35351),uint(14786),uint(3866),uint(13884),uint(62427),uint(40151),uint(34321),uint(45413),uint(1961),uint(14566),uint(18183),uint(62405),uint(34211),uint(62317),uint(14632),uint(34233),uint(25812),uint(62295),uint(19107),uint(18205),uint(19085),uint(28751),uint(34123),uint(23357),uint(62955),uint(1697),uint(62845),uint(9546),uint(62867),uint(63087),uint(41031),uint(60412),uint(28553),uint(25922),uint(1895),uint(34013),uint(6915),uint(40921),uint(40811),uint(40833),uint(21012),uint(14082),uint(62625),uint(14126),uint(43332),uint(65388),uint(40613),uint(62735),uint(4086),uint(21232),uint(21122),uint(40723),uint(1675),uint(45721),uint(1653),uint(14236),uint(11715),uint(18645),uint(62757),uint(62066),uint(40512),uint(40622),uint(11931),uint(25121),uint(11777),uint(16036),uint(21324),uint(25033),uint(3567),uint(61956),uint(25451),uint(16911),uint(25011),uint(11711),uint(15926),uint(33551),uint(36891),uint(21522),uint(11623),uint(62396),uint(36913),uint(20752),uint(8112),uint(15552),uint(24923),uint(37023),uint(3875),uint(62286),uint(20532),uint(21412),uint(24813),uint(15706),uint(17175),uint(21434),uint(11447),uint(28632),uint(52167),uint(21852),uint(62836),uint(11183),uint(12591),uint(62858),uint(45431),uint(45321),uint(20422),uint(28522),uint(11095),uint(4535),uint(4557),uint(61252),uint(12657),uint(45211),uint(21654),uint(28412),uint(17923),uint(15442),uint(62946),uint(20312),uint(61142),uint(25913),uint(10853),uint(2687),uint(4095),uint(65115),uint(62506),uint(65159),uint(40952),uint(2665),uint(10897),uint(10919),uint(6638),uint(12855),uint(24351),uint(62616),uint(11051),uint(2555),uint(40732),uint(62726),uint(36561),uint(21896),uint(11007),uint(14606),uint(32011),uint(9212),uint(14562),uint(63496),uint(31923),uint(63408),uint(14496),uint(43121),uint(32231),uint(38123),uint(18671),uint(18209),uint(43033),uint(63276),uint(63386),uint(38013),uint(18737),uint(31813),uint(42923),uint(1376),uint(18803),uint(24153),uint(63188),uint(24131),uint(43011),uint(63056),uint(18187),uint(39632),uint(18847),uint(9762),uint(24021),uint(32451),uint(45453),uint(34414),uint(13946),uint(14826),uint(39852),uint(37221),uint(37133),uint(37111),uint(27321),uint(23295),uint(14122),uint(34722),uint(34612),uint(14166),uint(5626),uint(27233),uint(27211),uint(6066),uint(14232),uint(34832),uint(5956),uint(27123),uint(50913),uint(37331),uint(37353),uint(27013),uint(18495),uint(52611),uint(19859),uint(19881),uint(63355),uint(35052),uint(24206),uint(43152),uint(12912),uint(19551),uint(19991),uint(63245),uint(63685),uint(2806),uint(63025),uint(30933),uint(63707),uint(30911),uint(34312),uint(8807),uint(62937),uint(2872),uint(62915),uint(52831),uint(2916),uint(63795),uint(9621),uint(9643),uint(63927),uint(45422),uint(30713),uint(42932),uint(24052),uint(42712),uint(31351),uint(42822),uint(39883),uint(16634),uint(5657),uint(5745),uint(31373),uint(40213),uint(33652),uint(13572),uint(31021),uint(3576),uint(16137),uint(63597),uint(35624),uint(5987),uint(21113),uint(16115),uint(63465),uint(63487),uint(39993),uint(22556),uint(10545),uint(10523),uint(15983),uint(5195),uint(64895),uint(15741),uint(16986),uint(43451),uint(36812),uint(5305),uint(10413),uint(4865),uint(10765),uint(10809),uint(10787),uint(27554),uint(27532),uint(17426),uint(20805),uint(5415),uint(15477),uint(5437),uint(36922),uint(27422),uint(20651),uint(27312),uint(4645),uint(37032),uint(64037),uint(32552),uint(15301),uint(64015),uint(15081),uint(9995),uint(30053),uint(30031),uint(20453),uint(9885),uint(15433),uint(15411),uint(20431),uint(30251),uint(20211),uint(20123),uint(27642),uint(10281),uint(20321),uint(27752),uint(12626),uint(17756),uint(27774),uint(10127),uint(20233),uint(15191),uint(2586),uint(36614),uint(21646),uint(17541),uint(21602),uint(1187),uint(21712),uint(25751),uint(5336),uint(17431),uint(9331),uint(1253),uint(17739),uint(30032),uint(17695),uint(40212),uint(39882),uint(33851),uint(17321),uint(25311),uint(35623),uint(33521),uint(9771),uint(21822),uint(1297),uint(52835),uint(13216),uint(9815),uint(39992),uint(25113),uint(30252),uint(36613),uint(14096),uint(33631),uint(33653),uint(18245),uint(24871),uint(20722),uint(13942),uint(18113),uint(40652),uint(13876),uint(40432),uint(17915),uint(24651),uint(28822),uint(20612),uint(43151),uint(61573),uint(40322),uint(60143),uint(42931),uint(16133),uint(24321),uint(32531),uint(32553),uint(61925),uint(10761),uint(10805),uint(50921),uint(42711),uint(42733),uint(2595),uint(10783),uint(42821),uint(62057),uint(24431),uint(32421),uint(16067),uint(62035),uint(16111),uint(15957),uint(10915),uint(19103),uint(10893),uint(37251),uint(24453),uint(11003),uint(24123),uint(12226),uint(19081),uint(10497),uint(45351),uint(10541),uint(45813),uint(61947),uint(32575),uint(45923),uint(2265),uint(15715),uint(12336),uint(27621),uint(2331),uint(27643),uint(62277),uint(62145),uint(42623),uint(31981),uint(31915),uint(42513),uint(10695),uint(27731),uint(62167),uint(27753),uint(4566),uint(65348),uint(62695),uint(36723),uint(15495),uint(12666),uint(10145),uint(7175),uint(62497),uint(15605),uint(15627),uint(62475),uint(1627),uint(21052),uint(36811),uint(36921),uint(15165),uint(62365),uint(62805),uint(62827),uint(27533),uint(62387),uint(27511),uint(4236),uint(7756),uint(18641),uint(24013),uint(37031),uint(34422),uint(32223),uint(27423),uint(1715),uint(32333),uint(34532),uint(12886),uint(32311),uint(18861),uint(62585),uint(62607),uint(27313),uint(45452),uint(31211),uint(14835),uint(14615),uint(14593),uint(14791),uint(20423),uint(10796),uint(31233),uint(31321),uint(14637),uint(10906),uint(16516),uint(61916),uint(34752),uint(20313),uint(24132),uint(62246),uint(62136),uint(19983),uint(42522),uint(62026),uint(27612),uint(42632),uint(31013),uint(20951),uint(24352),uint(35412),uint(14087),uint(62466),uint(62576),uint(38021),uint(19587),uint(35522),uint(62356),uint(62378),uint(19851),uint(27524),uint(14175),uint(10048),uint(62686),uint(31651),uint(4597),uint(16912),uint(19917),uint(42412),uint(39451),uint(35654),uint(19455),uint(21413),uint(31453),uint(31431),uint(6986),uint(24022),uint(21523),uint(65075),uint(4487),uint(17176),uint(33952),uint(14527),uint(10202),uint(14505),uint(19697),uint(14483),uint(33732),uint(52166),uint(13493),uint(63126),uint(28712),uint(23296),uint(22812),uint(30023),uint(33512),uint(11676),uint(62906),uint(63676),uint(36622),uint(22526),uint(63786),uint(33622),uint(30221),uint(22592),uint(13185),uint(22636),uint(36732),uint(27722),uint(30331),uint(61155),uint(11412),uint(13867),uint(61111),uint(61067),uint(43613),uint(8847),uint(27832),uint(25333),uint(13801),uint(20753),uint(13823),uint(36512),uint(3607),uint(13691),uint(20731),uint(3585),uint(28052),uint(25421),uint(20621),uint(13713),uint(20533),uint(25553),uint(20511),uint(16212),uint(3497),uint(30551),uint(25531),uint(6106),uint(16102),uint(11082),uint(63346),uint(13581),uint(13625),uint(23076),uint(13603),uint(63117),uint(24202),uint(45712),uint(32412),uint(10858),uint(63205),uint(63227),uint(2626),uint(28131),uint(28351),uint(24312),uint(14831),uint(28153),uint(20251),uint(11056),uint(45932),uint(14787),uint(45822),uint(14875),uint(32522),uint(63095),uint(24422),uint(62765),uint(6445),uint(62787),uint(19855),uint(63667),uint(19987),uint(10748),uint(37612),uint(41013),uint(62897),uint(6577),uint(62875),uint(14237),uint(27647),uint(20911),uint(10286),uint(14325),uint(20933),uint(1966),uint(27713),uint(14435),uint(27779),uint(34431),uint(36952),uint(21021),uint(27823),uint(21153),uint(11936),uint(27933),uint(34453),uint(14611),uint(14545),uint(14567),uint(14501),uint(27911),uint(21131),uint(14523),uint(34651),uint(21351),uint(25412),uint(16916),uint(16982),uint(25522),uint(6137),uint(6115),uint(28021),uint(14633),uint(17422),uint(25632),uint(13577),uint(13621),uint(13665),uint(17312),uint(40221),uint(22596),uint(40353),uint(8117),uint(39913),uint(13555),uint(40331),uint(13181),uint(43411),uint(43433),uint(35223),uint(52162),uint(25852),uint(22552),uint(61247),uint(14083),uint(13225),uint(40023),uint(14127),uint(11716),uint(43521),uint(40111),uint(61115),uint(4795),uint(35113),uint(14171),uint(40133),uint(13335),uint(20801),uint(63777),uint(35553),uint(63887),uint(35421),uint(63865),uint(34251),uint(61027),uint(18192),uint(20713),uint(63997),uint(31532),uint(35333),uint(35311),uint(63975),uint(13995),uint(34031),uint(64085),uint(13885),uint(34053),uint(17752),uint(31312),uint(58132),uint(28813),uint(38052),uint(31422),uint(33921),uint(13775),uint(40551),uint(25513),uint(40252),uint(33811),uint(33833),uint(33613),uint(12345),uint(19028),uint(22803),uint(16032),uint(25711),uint(12235),uint(1711),uint(18522),uint(50952),uint(25623),uint(33723),uint(5552),uint(22561),uint(25821),uint(15922),uint(5926),uint(36631),uint(36653),uint(40032),uint(19094),uint(23353),uint(25733),uint(15746),uint(43512),uint(36851),uint(61256),uint(41022),uint(61146),uint(11465),uint(12851),uint(15526),uint(43622),uint(30212),uint(30432),uint(11487),uint(63856),uint(12653),uint(40912),uint(11355),uint(30322),uint(12675),uint(11091),uint(64076),uint(43323),uint(15306),uint(36521),uint(63966),uint(18632),uint(30652),uint(12917),uint(1095),uint(15416),uint(12895),uint(14866),uint(14822),uint(37621),uint(21615),uint(2723),uint(9582),uint(32337),uint(27031),uint(21373),uint(4166),uint(27053),uint(9626),uint(32051),uint(2657),uint(37511),uint(61775),uint(31985),uint(15196),uint(19886),uint(31897),uint(2525),uint(31831),uint(16573),uint(31853),uint(21813),uint(62105),uint(15086),uint(62127),uint(32513),uint(2305),uint(42751),uint(61995),uint(19996),uint(14162),uint(19512),uint(22253),uint(19556),uint(62325),uint(34352),uint(42421),uint(62545),uint(65066),uint(62347),uint(62567),uint(24752),uint(22231),uint(62237),uint(62215),uint(4606),uint(42553),uint(62677),uint(62655),uint(65176),uint(27251),uint(37313),uint(14536),uint(4496),uint(17255),uint(14492),uint(39922),uint(14646),uint(24532),uint(22011),uint(22033),uint(16991),uint(39812),uint(62457),uint(62435),uint(6995),uint(36993),uint(16512),uint(24722),uint(4175),uint(24612),uint(41032),uint(20551),uint(12341),uint(24832),uint(40922),uint(28651),uint(61777),uint(16908),uint(20221),uint(37323),uint(61997),uint(20331),uint(65376),uint(20353),uint(40812),uint(36553),uint(20133),uint(21013),uint(16996),uint(16116),uint(4087),uint(37213),uint(12671),uint(61117),uint(45731),uint(11747),uint(12627),uint(21123),uint(21321),uint(62327),uint(13111),uint(62217),uint(62305),uint(15742),uint(21233),uint(21211),uint(21431),uint(19957),uint(21453),uint(28013),uint(62107),uint(12935),uint(19693),uint(12913),uint(11483),uint(12891),uint(13331),uint(62085),uint(62525),uint(20111),uint(65156),uint(13221),uint(62195),uint(62547),uint(65068),uint(28123),uint(28453),uint(11351),uint(21651),uint(32514),uint(21717),uint(4615),uint(15412),uint(36751),uint(11461),uint(11417),uint(17436),uint(28431),uint(25712),uint(17414),uint(62437),uint(28255),uint(62415),uint(45423),uint(45313),uint(64826),uint(4505),uint(21607),uint(28321),uint(58112),uint(25822),uint(6916),uint(2855),uint(39712),uint(15082),uint(17898),uint(62965),uint(62877),uint(63097),uint(31612),uint(15302),uint(23072),uint(60413),uint(9886),uint(62635),uint(3185),uint(62657),uint(34714),uint(43333),uint(22852),uint(39932),uint(43311),uint(9996),uint(1676),uint(62767),uint(62745),uint(1654),uint(62855),uint(15192),uint(39822),uint(35022),uint(43113),uint(63625),uint(3625),uint(11835),uint(18492),uint(32052),uint(63515),uint(6036),uint(37521),uint(31986),uint(14532),uint(34912),uint(43452),uint(3867),uint(14796),uint(63405),uint(35352),uint(42651),uint(14862),uint(40152),uint(31832),uint(20815),uint(12231),uint(34331),uint(63207),uint(14642),uint(63185),uint(35132),uint(9622),uint(18206),uint(13696),uint(62846),uint(34221),uint(39853),uint(9547),uint(39831),uint(26011),uint(34111),uint(34133),uint(34023),uint(39633),uint(40051),uint(13586),uint(9767),uint(39611),uint(39721),uint(62956),uint(25923),uint(2666),uint(62516),uint(14092),uint(33913),uint(30512),uint(2556),uint(62626),uint(22905),uint(10075),uint(40513),uint(43122),uint(40623),uint(30732),uint(63506),uint(45832),uint(30622),uint(43012),uint(18866),uint(18844),uint(6067),uint(43421),uint(19020),uint(1896),uint(1962),uint(3876),uint(16411),uint(30952),uint(13872),uint(43553),uint(13806),uint(19086),uint(16565),uint(16521),uint(37112),uint(37222),uint(27331),uint(21893),uint(27353),uint(16631),uint(12222),uint(27221),uint(16217),uint(16195),uint(11087),uint(5627),uint(22223),uint(32725),uint(12332),uint(12662),uint(16983),uint(16063),uint(27771),uint(27111),uint(16107),uint(12596),uint(27133),uint(10757),uint(20252),uint(5957),uint(10867),uint(37332),uint(36562),uint(16895),uint(15953),uint(15975),uint(16917),uint(63616),uint(37354),uint(21981),uint(27023),uint(15645),uint(39083),uint(15623),uint(12882),uint(17511),uint(10141),uint(22553),uint(63726),uint(22597),uint(10207),uint(15755),uint(13212),uint(10625),uint(32351),uint(63858),uint(15337),uint(25052),uint(10493),uint(24876),uint(15535),uint(27551),uint(15557),uint(19856),uint(15447),uint(17423),uint(36892),uint(22421),uint(34415),uint(5746),uint(27322),uint(50923),uint(64025),uint(9851),uint(34613),uint(13802),uint(10049),uint(14176),uint(42713),uint(27212),uint(22821),uint(10203),uint(31031),uint(34811),uint(27652),uint(31053),uint(13626),uint(13692),uint(9455),uint(34921),uint(10071),uint(34723),uint(14506),uint(31251),uint(18496),uint(27014),uint(34833),uint(13582),uint(63497),uint(32021),uint(52612),uint(5196),uint(31911),uint(31933),uint(63695),uint(31823),uint(35031),uint(5306),uint(1025),uint(35053),uint(31713),uint(5416),uint(2807),uint(34322),uint(52832),uint(1377),uint(2873),uint(27432),uint(2895),uint(18848),uint(34212),uint(2917),uint(9763),uint(35251),uint(28752),uint(16415),uint(12592),uint(65389),uint(21611),uint(20322),uint(65411),uint(21985),uint(16635),uint(40953),uint(40931),uint(21655),uint(20432),uint(22051),uint(61636),uint(10907),uint(12856),uint(4096),uint(16213),uint(40821),uint(2675),uint(65345),uint(61966),uint(40711),uint(11083),uint(2587),uint(61922),uint(11105),uint(21897),uint(16037),uint(21853),uint(20212),uint(40733),uint(16103),uint(16811),uint(25351),uint(15927),uint(13186),uint(30613),uint(30723),uint(19882),uint(22557),uint(62208),uint(25122),uint(2235),uint(62186),uint(19992),uint(4866),uint(33552),uint(10797),uint(10775),uint(16987),uint(19552),uint(62076),uint(25012),uint(28312),uint(28422),uint(15531),uint(30921),uint(15553),uint(62406),uint(25813),uint(4536),uint(15751),uint(17251),uint(30811),uint(62318),uint(4646),uint(15685),uint(15641),uint(62296),uint(36131),uint(37253),uint(4545),uint(4435),uint(17735),uint(4567),uint(11052),uint(17757),uint(37121),uint(28523),uint(11096),uint(28721),uint(17911),uint(15465),uint(28413),uint(37231),uint(15443),uint(65116),uint(10854),uint(28633),uint(4237),uint(17691),uint(32012),uint(28611),uint(14541),uint(18505),uint(14497),uint(62067),uint(22632),uint(62045),uint(11932),uint(14431),uint(5051),uint(7695),uint(64896),uint(10282),uint(25131),uint(25153),uint(27951),uint(32232),uint(14607),uint(61957),uint(14585),uint(10766),uint(14563),uint(25452),uint(24933),uint(8113),uint(14871),uint(62397),uint(36923),uint(22214),uint(24911),uint(4875),uint(62375),uint(62287),uint(25021),uint(32452),uint(20652),uint(22412),uint(34424),uint(24823),uint(62155),uint(62265),uint(14827),uint(34512),uint(37033),uint(10546),uint(37011),uint(45322),uint(62727),uint(13881),uint(62705),uint(7176),uint(34622),uint(13815),uint(13661),uint(62925),uint(34732),uint(62485),uint(34754),uint(24713),uint(62815),uint(14123),uint(62837),uint(45212),uint(30912),uint(62859),uint(31352),uint(13485),uint(14167),uint(34952),uint(19583),uint(13551),uint(19495),uint(3335),uint(62507),uint(13573),uint(19517),uint(14233),uint(31022),uint(13595),uint(14321),uint(62595),uint(19451),uint(1716),uint(62617),uint(18527),uint(43351),uint(40632),uint(63475),uint(38023),uint(52621),uint(18615),uint(40522),uint(18637),uint(9213),uint(11712),uint(63387),uint(63255),uint(63277),uint(43153),uint(38111),uint(3555),uint(21312),uint(3577),uint(24207),uint(34313),uint(43131),uint(63057),uint(63145),uint(21532),uint(21642),uint(62947),uint(43021),uint(24053),uint(1254),uint(21422),uint(3885),uint(13947),uint(40412),uint(42933),uint(42911),uint(45432),uint(16446),uint(15505),uint(15527),uint(62586),uint(27754),uint(62696),uint(62498),uint(62476),uint(11466),uint(38022),uint(62806),uint(27952),uint(15681),uint(19456),uint(27512),uint(27534),uint(62366),uint(42413),uint(11356),uint(15615),uint(19852),uint(24023),uint(32211),uint(31551),uint(11092),uint(15197),uint(58151),uint(32233),uint(32321),uint(34423),uint(3586),uint(6987),uint(15307),uint(32453),uint(23077),uint(2596),uint(15417),uint(7757),uint(34533),uint(34511),uint(23011),uint(34621),uint(14823),uint(6635),uint(63356),uint(10762),uint(14867),uint(18862),uint(10806),uint(2332),uint(19082),uint(14647),uint(10542),uint(34731),uint(63246),uint(10916),uint(12236),uint(34753),uint(37252),uint(16561),uint(62916),uint(62938),uint(16517),uint(2266),uint(12346),uint(27622),uint(16715),uint(6415),uint(32013),uint(6371),uint(27732),uint(63026),uint(34951),uint(20952),uint(10696),uint(64016),uint(14097),uint(16913),uint(43513),uint(61112),uint(43623),uint(14185),uint(14163),uint(61156),uint(13943),uint(35523),uint(40631),uint(35611),uint(20732),uint(13855),uint(13877),uint(30451),uint(14295),uint(16891),uint(40653),uint(25453),uint(6173),uint(13811),uint(17177),uint(22021),uint(20622),uint(6107),uint(40323),uint(1065),uint(25651),uint(40521),uint(63466),uint(14581),uint(13591),uint(14537),uint(35413),uint(14493),uint(40411),uint(20512),uint(40433),uint(33852),uint(17705),uint(22901),uint(31221),uint(22813),uint(31353),uint(31331),uint(5337),uint(28722),uint(30913),uint(30891),uint(22637),uint(25312),uint(33522),uint(63686),uint(19918),uint(5645),uint(22725),uint(31023),uint(28612),uint(63796),uint(22527),uint(31111),uint(22593),uint(33632),uint(36733),uint(12645),uint(61253),uint(36821),uint(12667),uint(61143),uint(36931),uint(36513),uint(36953),uint(1615),uint(22052),uint(40552),uint(17925),uint(25422),uint(12887),uint(28823),uint(18805),uint(6116),uint(25532),uint(63347),uint(9332),uint(16112),uint(28405),uint(32422),uint(50922),uint(32576),uint(32554),uint(30033),uint(25752),uint(11677),uint(30011),uint(32532),uint(28713),uint(15716),uint(11611),uint(22822),uint(11545),uint(8848),uint(63655),uint(15606),uint(25321),uint(13085),uint(63677),uint(18497),uint(11413),uint(36623),uint(25211),uint(30253),uint(36711),uint(63787),uint(30231),uint(39452),uint(25123),uint(19641),uint(38053),uint(9948),uint(10146),uint(15166),uint(19883),uint(31652),uint(25013),uint(15496),uint(37811),uint(31432),uint(21414),uint(34454),uint(31322),uint(38031),uint(34652),uint(43051),uint(32312),uint(2627),uint(19025),uint(40112),uint(24353),uint(14616),uint(21656),uint(16416),uint(40222),uint(42721),uint(14792),uint(62036),uint(45352),uint(40332),uint(19135),uint(21986),uint(19091),uint(21612),uint(24133),uint(24111),uint(24551),uint(61926),uint(64865),uint(12337),uint(62278),uint(12315),uint(59581),uint(42523),uint(12227),uint(16636),uint(31982),uint(4796),uint(14836),uint(21898),uint(9816),uint(42633),uint(31916),uint(9772),uint(37613),uint(62146),uint(42611),uint(24331),uint(30332),uint(35422),uint(12883),uint(65076),uint(22232),uint(4585),uint(13081),uint(4607),uint(35312),uint(12685),uint(22254),uint(39923),uint(17753),uint(34151),uint(4497),uint(39813),uint(33931),uint(18611),uint(30552),uint(18633),uint(22012),uint(1096),uint(33953),uint(33733),uint(40253),uint(40231),uint(33711),uint(61785),uint(38801),uint(33821),uint(33623),uint(61741),uint(13697),uint(31212),uint(40451),uint(61917),uint(18523),uint(61895),uint(13565),uint(18501),uint(13587),uint(62115),uint(62137),uint(15976),uint(13213),uint(40011),uint(40033),uint(42752),uint(40121),uint(11717),uint(13411),uint(18215),uint(62005),uint(11695),uint(62027),uint(33513),uint(62467),uint(36852),uint(15646),uint(19513),uint(62445),uint(19491),uint(24753),uint(15536),uint(62555),uint(62577),uint(24731),uint(27723),uint(62357),uint(24951),uint(42422),uint(62665),uint(27833),uint(27811),uint(20912),uint(15756),uint(62335),uint(10142),uint(62225),uint(62247),uint(21022),uint(62687),uint(36522),uint(1712),uint(24511),uint(21132),uint(24533),uint(37314),uint(27921),uint(11937),uint(19645),uint(27151),uint(6996),uint(3595),uint(24621),uint(28053),uint(45722),uint(12223),uint(14876),uint(21352),uint(24313),uint(32523),uint(12355),uint(4167),uint(14832),uint(12333),uint(32413),uint(24423),uint(12311),uint(63105),uint(63127),uint(12597),uint(19095),uint(62775),uint(12663),uint(19029),uint(6446),uint(12641),uint(36632),uint(36654),uint(10076),uint(21616),uint(30222),uint(62907),uint(24203),uint(62885),uint(27613),uint(31621),uint(62326),uint(20921),uint(20811),uint(10045),uint(31511),uint(42453),uint(34353),uint(42431),uint(21053),uint(20723),uint(62546),uint(62128),uint(13996),uint(14436),uint(21031),uint(27714),uint(14326),uint(31533),uint(24872),uint(20613),uint(62216),uint(21251),uint(27912),uint(34551),uint(24652),uint(31313),uint(13886),uint(14546),uint(14502),uint(27252),uint(27032),uint(3626),uint(10265),uint(28022),uint(16992),uint(27054),uint(13666),uint(31423),uint(10287),uint(62436),uint(13776),uint(9495),uint(14612),uint(4176),uint(6895),uint(63096),uint(17432),uint(20151),uint(37512),uint(21647),uint(24322),uint(21625),uint(35013),uint(21603),uint(6917),uint(9583),uint(17322),uint(24432),uint(52163),uint(2526),uint(17696),uint(17256),uint(35233),uint(65375),uint(62656),uint(31951),uint(45251),uint(62766),uint(19865),uint(35211),uint(19887),uint(21823),uint(62876),uint(19997),uint(52836),uint(62788),uint(2306),uint(6565),uint(21713),uint(35123),uint(37622),uint(30213),uint(11541),uint(11475),uint(6037),uint(34252),uint(41111),uint(35453),uint(35651),uint(40913),uint(35431),uint(63976),uint(12676),uint(63866),uint(35321),uint(30323),uint(5927),uint(33922),uint(64086),uint(30653),uint(34032),uint(11101),uint(30411),uint(33812),uint(25413),uint(30433),uint(63206),uint(12896),uint(17916),uint(12852),uint(30521),uint(10859),uint(13556),uint(50953),uint(25523),uint(2856),uint(10925),uint(28132),uint(25611),uint(45713),uint(13622),uint(45823),uint(25721),uint(11057),uint(50931),uint(25633),uint(5553),uint(16033),uint(25853),uint(13226),uint(45911),uint(15747),uint(25831),uint(43412),uint(45933),uint(13182),uint(15923),uint(61257),uint(13336),uint(28352),uint(5685),uint(61147),uint(3186),uint(43522),uint(41023),uint(38502),uint(63626),uint(10415),uint(35023),uint(18493),uint(14432),uint(63516),uint(43123),uint(14608),uint(14586),uint(18735),uint(43431),uint(63868),uint(43013),uint(43453),uint(34913),uint(63406),uint(18801),uint(14542),uint(10283),uint(18207),uint(35331),uint(18185),uint(18845),uint(35221),uint(14872),uint(1897),uint(10547),uint(35133),uint(10525),uint(19087),uint(35111),uint(63186),uint(22422),uint(1963),uint(13882),uint(1985),uint(2865),uint(34253),uint(31512),uint(31622),uint(34231),uint(27451),uint(39722),uint(34033),uint(34121),uint(9887),uint(27231),uint(27253),uint(34011),uint(42551),uint(35353),uint(39612),uint(40052),uint(27121),uint(33923),uint(9997),uint(27011),uint(22906),uint(1677),uint(27033),uint(39832),uint(33813),uint(35551),uint(14322),uint(7696),uint(28133),uint(65078),uint(28111),uint(11713),uint(12936),uint(21212),uint(11691),uint(12892),uint(33725),uint(13222),uint(20121),uint(36651),uint(21322),uint(25053),uint(28551),uint(4616),uint(21652),uint(25031),uint(11471),uint(16412),uint(36893),uint(21432),uint(21454),uint(24833),uint(28353),uint(24877),uint(28331),uint(24921),uint(16522),uint(19857),uint(4506),uint(16566),uint(21982),uint(24613),uint(13816),uint(16632),uint(45213),uint(11097),uint(41121),uint(21894),uint(45323),uint(19131),uint(11053),uint(24811),uint(13596),uint(61787),uint(22224),uint(61743),uint(11185),uint(24723),uint(2667),uint(61765),uint(13662),uint(2645),uint(61985),uint(16117),uint(2557),uint(62007),uint(10745),uint(2601),uint(10767),uint(30522),uint(13332),uint(62095),uint(61897),uint(10855),uint(13552),uint(36563),uint(10921),uint(28023),uint(30412),uint(27913),uint(25414),uint(13486),uint(16896),uint(15985),uint(15743),uint(21375),uint(21353),uint(32053),uint(15655),uint(11836),uint(31987),uint(4867),uint(1026),uint(11462),uint(5197),uint(31921),uint(65069),uint(15413),uint(31811),uint(28432),uint(11352),uint(31833),uint(5307),uint(5417),uint(4647),uint(27552),uint(15435),uint(31613),uint(24952),uint(12232),uint(17424),uint(58122),uint(5505),uint(4537),uint(21551),uint(64827),uint(15501),uint(20781),uint(28322),uint(21617),uint(12342),uint(24732),uint(37223),uint(22233),uint(14863),uint(20451),uint(22211),uint(15303),uint(37113),uint(10626),uint(34724),uint(20253),uint(27772),uint(20231),uint(12672),uint(15193),uint(24622),uint(10868),uint(12628),uint(24512),uint(34812),uint(37333),uint(22013),uint(37311),uint(30733),uint(62196),uint(2236),uint(30711),uint(34922),uint(14533),uint(62086),uint(18502),uint(62130),uint(30623),uint(62526),uint(35032),uint(25713),uint(3877),uint(3855),uint(14797),uint(30953),uint(34332),uint(14555),uint(30931),uint(14775),uint(35252),uint(62416),uint(13785),uint(13873),uint(25823),uint(62306),uint(34222),uint(14643),uint(18216),uint(19096),uint(14665),uint(9623),uint(38631),uint(13807),uint(34112),uint(26021),uint(62856),uint(28652),uint(31371),uint(25911),uint(20913),uint(40932),uint(62966),uint(40822),uint(21023),uint(21111),uint(14093),uint(65157),uint(62636),uint(62746),uint(43321),uint(4097),uint(14181),uint(21221),uint(18612),uint(21133),uint(45732),uint(40712),uint(62077),uint(40633),uint(15981),uint(40523),uint(40611),uint(62187),uint(25352),uint(62165),uint(25132),uint(61923),uint(61945),uint(3556),uint(25022),uint(21313),uint(16900),uint(61967),uint(62055),uint(36132),uint(20785),uint(24912),uint(11612),uint(62407),uint(21511),uint(62385),uint(21533),uint(15607),uint(11546),uint(37012),uint(40413),uint(62275),uint(3886),uint(17252),uint(20653),uint(62209),uint(20631),uint(62297),uint(15717),uint(21423),uint(12316),uint(7177),uint(32726),uint(28621),uint(4436),uint(20433),uint(62825),uint(17692),uint(12668),uint(20411),uint(62847),uint(20521),uint(11106),uint(28511),uint(28731),uint(45332),uint(28753),uint(4546),uint(15167),uint(30051),uint(12646),uint(17736),uint(15475),uint(45222),uint(15497),uint(17912),uint(28423),uint(21643),uint(28401),uint(62935),uint(65346),uint(21621),uint(15431),uint(62957),uint(20323),uint(62495),uint(2676),uint(62517),uint(19993),uint(30513),uint(10908),uint(61065),uint(62605),uint(40721),uint(20213),uint(40831),uint(62627),uint(62715),uint(43352),uint(14595),uint(32022),uint(63485),uint(63507),uint(14551),uint(14661),uint(14485),uint(31912),uint(14507),uint(18616),uint(43132),uint(38112),uint(63705),uint(14617),uint(32352),uint(42912),uint(9641),uint(63925),uint(43022),uint(39621),uint(8805),uint(14771),uint(14793),uint(9773),uint(2896),uint(64035),uint(34425),uint(9817),uint(14815),uint(14837),uint(27332),uint(34513),uint(5747),uint(37122),uint(37232),uint(39731),uint(34733),uint(34623),uint(34711),uint(27222),uint(14177),uint(27024),uint(3336),uint(34821),uint(34931),uint(34953),uint(27112),uint(63617),uint(60141),uint(63595),uint(39951),uint(9333),uint(18506),uint(52622),uint(13187),uint(13253),uint(35151),uint(2267),uint(6636),uint(2333),uint(63696),uint(63256),uint(39652),uint(43053),uint(43031),uint(34323),uint(30922),uint(34213),uint(24151),uint(62926),uint(63146),uint(45433),uint(45411),uint(6372),uint(42921),uint(30812),uint(13121),uint(6416),uint(27213),uint(16447),uint(1651),uint(42613),uint(42811),uint(31252),uint(13825),uint(16513),uint(13715),uint(1981),uint(13693),uint(13803),uint(42723),uint(16821),uint(9456),uint(13561),uint(13495),uint(13583),uint(3587),uint(33553),uint(31032),uint(16909),uint(13627),uint(13605),uint(19452),uint(35613),uint(3565),uint(33751),uint(1695),uint(1717),uint(63476),uint(27851),uint(5052),uint(22633),uint(36713),uint(15752),uint(22413),uint(11933),uint(33531),uint(16997),uint(10776),uint(4876),uint(10798),uint(15532),uint(27521),uint(15466),uint(20816),uint(17415),uint(36911),uint(28313),uint(36933),uint(5646),uint(37131),uint(27433),uint(15686),uint(27411),uint(15642),uint(27323),uint(37021),uint(17899),uint(9852),uint(12593),uint(32695),uint(12351),uint(64026),uint(23073),uint(20552),uint(23051),uint(61571),uint(61637),uint(17921),uint(12857),uint(10072),uint(20112),uint(27653),uint(20332),uint(2685),uint(22853),uint(12681),uint(2597),uint(39102),uint(22721),uint(20222),uint(40113),uint(21613),uint(25652),uint(13557),uint(1066),uint(13337),uint(21657),uint(5435),uint(17706),uint(30021),uint(40223),uint(40311),uint(13491),uint(64897),uint(5655),uint(25322),uint(35612),uint(13183),uint(33532),uint(21811),uint(33752),uint(4797),uint(14085),uint(36624),uint(63995),uint(40751),uint(63885),uint(22515),uint(13997),uint(20733),uint(13887),uint(64017),uint(20711),uint(40421),uint(21987),uint(17926),uint(13821),uint(13777),uint(13865),uint(43052),uint(20513),uint(20623),uint(22031),uint(28811),uint(22053),uint(40333),uint(40553),uint(30813),uint(13623),uint(13601),uint(9496),uint(40531),uint(22251),uint(13711),uint(13667),uint(24332),uint(50932),uint(42722),uint(12105),uint(10860),uint(62046),uint(10926),uint(24112),uint(24552),uint(19092),uint(12237),uint(19026),uint(12347),uint(39101),uint(15682),uint(45252),uint(62266),uint(45912),uint(62288),uint(19136),uint(62156),uint(32696),uint(32014),uint(42612),uint(59582),uint(4555),uint(20931),uint(10046),uint(36712),uint(20953),uint(15506),uint(39453),uint(12677),uint(62706),uint(62486),uint(36822),uint(21151),uint(15616),uint(12655),uint(1616),uint(62376),uint(27522),uint(62816),uint(32212),uint(34411),uint(39651),uint(27412),uint(34433),uint(36932),uint(34521),uint(32322),uint(12897),uint(10266),uint(21371),uint(12853),uint(18806),uint(62596),uint(65117),uint(24451),uint(38802),uint(27051),uint(10697),uint(31112),uint(10543),uint(34631),uint(10521),uint(34653),uint(20412),uint(42753),uint(14582),uint(10763),uint(10807),uint(34851),uint(10785),uint(16417),uint(30892),uint(31332),uint(45221),uint(45331),uint(45353),uint(31222),uint(61927),uint(10895),uint(10411),uint(10851),uint(16637),uint(62235),uint(16571),uint(62147),uint(42511),uint(62015),uint(42731),uint(27623),uint(62037),uint(42621),uint(62125),uint(27645),uint(19642),uint(62587),uint(62565),uint(9949),uint(62477),uint(62455),uint(35313),uint(38032),uint(35511),uint(9905),uint(62367),uint(62345),uint(14186),uint(62675),uint(62785),uint(27513),uint(14296),uint(4586),uint(35621),uint(4608),uint(42423),uint(64866),uint(21424),uint(6997),uint(24121),uint(21512),uint(31552),uint(21314),uint(24011),uint(10125),uint(17253),uint(10147),uint(34051),uint(2628),uint(35423),uint(63247),uint(1295),uint(33831),uint(1251),uint(33853),uint(23021),uint(17737),uint(63225),uint(33721),uint(17693),uint(63115),uint(52613),uint(11775),uint(22801),uint(1185),uint(22823),uint(28723),uint(62895),uint(52833),uint(1625),uint(30012),uint(23351),uint(62917),uint(63665),uint(33523),uint(62807),uint(63687),uint(13086),uint(36611),uint(11621),uint(63775),uint(36633),uint(30232),uint(33611),uint(28613),uint(63797),uint(6447),uint(63027),uint(33633),uint(11467),uint(36721),uint(27733),uint(27711),uint(30452),uint(5985),uint(11357),uint(61254),uint(27821),uint(11445),uint(13856),uint(27953),uint(27931),uint(20786),uint(13812),uint(36523),uint(11005),uint(3596),uint(10917),uint(28151),uint(20632),uint(18111),uint(25454),uint(17913),uint(6117),uint(11181),uint(1097),uint(20522),uint(63467),uint(13592),uint(16113),uint(63357),uint(11093),uint(16135),uint(10891),uint(63106),uint(32423),uint(37513),uint(10869),uint(32335),uint(45723),uint(6896),uint(45811),uint(24323),uint(2857),uint(2527),uint(32577),uint(45921),uint(14776),uint(32533),uint(45833),uint(11001),uint(20152),uint(37821),uint(24433),uint(24411),uint(32511),uint(31983),uint(37711),uint(62776),uint(63656),uint(31917),uint(31895),uint(28406),uint(10781),uint(37623),uint(16575),uint(3187),uint(31851),uint(62886),uint(6566),uint(2307),uint(3495),uint(10077),uint(27724),uint(20922),uint(36831),uint(11837),uint(16795),uint(21032),uint(10143),uint(27812),uint(14666),uint(1713),uint(34552),uint(19646),uint(14556),uint(10495),uint(27922),uint(16905),uint(25423),uint(21252),uint(32313),uint(25533),uint(3627),uint(25511),uint(16993),uint(3605),uint(17411),uint(22805),uint(25621),uint(13566),uint(17521),uint(40232),uint(52305),uint(25753),uint(31213),uint(25731),uint(30751),uint(13214),uint(22431),uint(35212),uint(43422),uint(40012),uint(61258),uint(13412),uint(40122),uint(38503),uint(14182),uint(5686),uint(23355),uint(17433),uint(20812),uint(18115),uint(31653),uint(52837),uint(35432),uint(18181),uint(31521),uint(35322),uint(35652),uint(11485),uint(11463),uint(34152),uint(31323),uint(17697),uint(40452),uint(11353),uint(58121),uint(17917),uint(31433),uint(17895),uint(13786),uint(31411),uint(33932),uint(22902),uint(40351),uint(33822),uint(18841),uint(18995),uint(25612),uint(16131),uint(12312),uint(22726),uint(16065),uint(33712),uint(25832),uint(40021),uint(19105),uint(25722),uint(19083),uint(15955),uint(11696),uint(15977),uint(15757),uint(12356),uint(43413),uint(40153),uint(40131),uint(36752),uint(61245),uint(43523),uint(11476),uint(30311),uint(41033),uint(61157),uint(41011),uint(11542),uint(40923),uint(30421),uint(61113),uint(15537),uint(30223),uint(43611),uint(63867),uint(40813),uint(12642),uint(13082),uint(15647),uint(8845),uint(61025),uint(30333),uint(12664),uint(15625),uint(12686),uint(11102),uint(43312),uint(63977),uint(58152),uint(23012),uint(30553),uint(30531),uint(64087),uint(18731),uint(14833),uint(61742),uint(4177),uint(14877),uint(61896),uint(2646),uint(2668),uint(37522),uint(61786),uint(25313),uint(2602),uint(31952),uint(19853),uint(42652),uint(62138),uint(16562),uint(61918),uint(32524),uint(16716),uint(21626),uint(19985),uint(65385),uint(62006),uint(16892),uint(14173),uint(19545),uint(19457),uint(65077),uint(62336),uint(62556),uint(62248),uint(14327),uint(4617),uint(42432),uint(34451),uint(24873),uint(62666),uint(24851),uint(14525),uint(14481),uint(37324),uint(39933),uint(4507),uint(14503),uint(39911),uint(14635),uint(24521),uint(4595),uint(22022),uint(14437),uint(1964),uint(1986),uint(14613),uint(39823),uint(1898),uint(14591),uint(39713),uint(27152),uint(24653),uint(14547),uint(4485),uint(24631),uint(62446)})))|(.Rotten:== uint(1012)&.Peel:->contains($uint,[]uint{uint(6116112),uint(15361121),uint(1126111),uint(12531122),uint(30712),uint(11201122),uint(35732),uint(1195115),uint(12561122),uint(35512),uint(35292),uint(1255115),uint(35072),uint(35182),uint(1296112),uint(137411),uint(1372112),uint(15731123),uint(1525112),uint(1121113),uint(31583),uint(14401121),uint(1209111),uint(1253113),uint(1136112),uint(12081123),uint(1436111),uint(15671121),uint(13971123),uint(31222),uint(12071122),uint(1195111),uint(14351122),uint(22851122),uint(1612111),uint(18571121),uint(11211123),uint(1428112),uint(1857111),uint(22711123),uint(1214113),uint(1251111),uint(1397111),uint(14371123),uint(1711111),uint(1197113),uint(17111122),uint(1269111),uint(20761123),uint(35560),uint(1404111),uint(12511121),uint(35472),uint(1208112),uint(1101112),uint(1296116),uint(1397112),uint(1197112),uint(1404112),uint(35121),uint(35011),uint(17111123),uint(1375113),uint(1351111),uint(1441113),uint(12091123),uint(12541122),uint(1612112),uint(12141121),uint(1367113),uint(1413113),uint(1274117),uint(1439111),uint(1255111),uint(35552),uint(35442),uint(1525113),uint(1207113),uint(12551122),uint(31821),uint(1198111),uint(1136111),uint(1274113),uint(1132112),uint(12741123),uint(11981121),uint(12691121),uint(2271111),uint(1404116),uint(35741),uint(35631),uint(1536112),uint(35191),uint(1397116),uint(35301),uint(1567112),uint(14361123),uint(1138113),uint(14041121),uint(35302),uint(35192),uint(1363111),uint(30713),uint(1120113),uint(1296111),uint(14371122),uint(1253112),uint(15251123),uint(1209112),uint(6116113),uint(12531121),uint(12071121),uint(12081122),uint(12961123),uint(35733),uint(35293),uint(1196115),uint(35271),uint(1525111),uint(1121112),uint(35073),uint(35183),uint(1437113),uint(1274112),uint(17111121),uint(1351113),uint(11321123),uint(1372111),uint(1195112),uint(22851121),uint(61161121),uint(1208113),uint(22711122),uint(14351121),uint(1296115),uint(1428111),uint(11211122),uint(1374113),uint(1220111),uint(11971121),uint(13971122),uint(12561123),uint(31223),uint(1441112),uint(19431123),uint(12091122),uint(12541121),uint(11951123),uint(61161122),uint(11211121),uint(1138112),uint(19971123),uint(33591),uint(14391123),uint(1274116),uint(1101111),uint(35540),uint(1198112),uint(1256113),uint(35012),uint(1120117),uint(35122),uint(1375112),uint(1351112),uint(12691122),uint(1612113),uint(14331121),uint(1440113),uint(1397115),uint(1132111),uint(12961122),uint(1433113),uint(35443),uint(35421),uint(35531),uint(1404115),uint(31822),uint(14041122),uint(1413112),uint(35091),uint(1395113),uint(12141122),uint(12551123),uint(1567111),uint(14361122),uint(1997113),uint(11981122),uint(11201121),uint(16121123),uint(1531113),uint(1536111),uint(35742),uint(35632),uint(1195116),uint(1209113),uint(1274111),uint(1196116),uint(15251122),uint(1437112),uint(1120112),uint(13971121),uint(1711113),uint(1207111),uint(35303),uint(35193),uint(1269113),uint(1195113),uint(1255117),uint(14371121),uint(1363112),uint(12511123),uint(11971122),uint(1436113),uint(35272),uint(12081121),uint(15671123),uint(1251113),uint(11321122),uint(21250),uint(1121111),uint(31431),uint(18571123),uint(1374112),uint(1214111),uint(1220112),uint(35901),uint(1441111),uint(1367111),uint(14401123),uint(35791),uint(137413),uint(35571),uint(1196112),uint(15731121),uint(35461),uint(35131),uint(35241),uint(35902),uint(12741121),uint(35792),uint(35572),uint(35462),uint(1256112),uint(22711121),uint(11981123),uint(35110),uint(35132),uint(14331122),uint(35242),uint(11951122),uint(1138111),uint(1102113),uint(20761121),uint(1196111),uint(61161123),uint(33592),uint(1433112),uint(1375111),uint(12691123),uint(19431122),uint(1440112),uint(1120116),uint(1857113),uint(2271113),uint(1198113),uint(19971122),uint(35101),uint(35123),uint(16121122),uint(1395112),uint(1195117),uint(14041123),uint(1255113),uint(14361121),uint(12961121),uint(1531112),uint(1997112),uint(1439113),uint(1253111),uint(1274115),uint(35532),uint(35422),uint(12091121),uint(35941),uint(35092),uint(1186111),uint(12141123),uint(14391122),uint(31581),uint(1413111),uint(35511),uint(31582),uint(11201123),uint(35423),uint(1186112),uint(35181),uint(35071),uint(35093),uint(35291),uint(14401122),uint(1437111),uint(1208111),uint(15731122),uint(1372113),uint(12531123),uint(1397117),uint(15361122),uint(1136113),uint(15251121),uint(1120111),uint(15671122),uint(6116111),uint(1363113),uint(1207112),uint(11971123),uint(12561121),uint(35480),uint(1997111),uint(22851123),uint(1255116),uint(1296113),uint(1214112),uint(1269112),uint(1102111),uint(1857112),uint(1196113),uint(31221),uint(12071123),uint(14351123),uint(1436112),uint(137412),uint(35471),uint(31432),uint(12511122),uint(11321121),uint(18571122),uint(1251112),uint(1711112),uint(1433111),uint(1374111),uint(1220113),uint(1367112),uint(14331123),uint(20761122),uint(1440111),uint(1567113),uint(1256111),uint(35793),uint(1296117),uint(35551),uint(1428113),uint(1102112),uint(11951121),uint(35441),uint(1404113),uint(1197111),uint(1397113),uint(19431121),uint(12541123),uint(1536113),uint(1531111),uint(2271112),uint(33593),uint(19971121),uint(14391121),uint(1255112),uint(35520),uint(35942),uint(1120115),uint(35102),uint(1439112),uint(16121121),uint(1196117),uint(1126112),uint(1101113),uint(1395111),uint(12551121),uint(12741122),uint(15361123),uint(30711),uint(1404117),uint(35731),uint(1132113)})))|(.Rotten:== uint(10117)&.Peel:->contains($uint,[]uint{uint(14786),uint(63676),uint(16515),uint(63385),uint(12107),uint(14787),uint(63677),uint(63725),uint(63726),uint(12105),uint(63675),uint(14785),uint(12106),uint(63727)})))|(.Peel:->contains($uint,[]uint{uint(1409111),uint(1598117),uint(1849127),uint(1259111),uint(1690125),uint(1148111),uint(1849122),uint(1110111),uint(1443111),uint(1007113),uint(1598113),uint(1530112),uint(1408112),uint(1463112),uint(1148115),uint(1464111),uint(1690121),uint(1285113),uint(1072115),uint(1463113),uint(1995113),uint(1849126),uint(1443112),uint(1007112),uint(1285117),uint(1530111),uint(1995117),uint(1849121),uint(1408111),uint(100713),uint(1464112),uint(1285112),uint(1690123),uint(1995116),uint(1849125),uint(1285116),uint(1007111),uint(1443113),uint(1690127),uint(1995112),uint(1598115),uint(1148113),uint(1598111),uint(1110113),uint(1072111),uint(1464113),uint(100712),uint(1409113),uint(1285111),uint(1148117),uint(1690122),uint(1995115),uint(1530113),uint(1995111),uint(1148112),uint(1259112),uint(1690126),uint(1598116),uint(1285115),uint(1259113),uint(1598112),uint(100711),uint(1849123),uint(1110112),uint(1408113),uint(1148116),uint(1463111),uint(1409112)})&.Rotten:== uint(5061)))|(.Peel:->contains($uint,[]uint{uint(46252),uint(31662),uint(2052),uint(35692),uint(45051),uint(35142),uint(35252),uint(35451),uint(35143),uint(35253),uint(35002),uint(35653),uint(35213),uint(46891),uint(45052),uint(46253),uint(31663),uint(35452),uint(36041),uint(45053),uint(36821),uint(46892),uint(35021),uint(35022),uint(35651),uint(35453),uint(35211),uint(36042),uint(31661),uint(35691),uint(35251),uint(35141),uint(46251),uint(35023),uint(35001),uint(36043),uint(35652),uint(35212),uint(36822)})&.Rotten:== uint(1013)))|(.Peel:->contains($uint,[]uint{uint(32152),uint(39812),uint(53812),uint(33815),uint(32253),uint(39623),uint(39821),uint(33916),uint(32552),uint(37111),uint(41611),uint(57151),uint(44031),uint(37251),uint(37053),uint(33811),uint(33305),uint(33921),uint(32051),uint(39451),uint(41321),uint(31523),uint(33802),uint(33912),uint(43732),uint(33803),uint(33913),uint(41661),uint(32351),uint(32153),uint(39822),uint(53813),uint(33816),uint(39611),uint(37112),uint(33851),uint(33917),uint(33301),uint(39752),uint(32553),uint(33302),uint(41612),uint(37252),uint(39751),uint(39452),uint(44032),uint(41401),uint(41322),uint(43733),uint(33922),uint(33812),uint(57152),uint(33306),uint(32052),uint(39813),uint(32053),uint(32251),uint(39823),uint(39612),uint(37113),uint(32352),uint(33817),uint(39753),uint(37122),uint(39621),uint(33852),uint(41402),uint(37121),uint(44033),uint(33853),uint(33303),uint(39651),uint(31521),uint(41323),uint(57153),uint(41662),uint(37051),uint(33307),uint(33813),uint(33923),uint(53811),uint(39613),uint(32252),uint(39811),uint(33915),uint(32551),uint(39622),uint(37123),uint(39653),uint(39652),uint(31522),uint(37052),uint(33801),uint(33911),uint(43731),uint(32151)})&.Rotten:== uint(3153)))|(.Peel:->contains($uint,[]uint{uint(38096),uint(46196),uint(46262),uint(32055),uint(32077),uint(32165),uint(32121),uint(32407),uint(30502),uint(32275),uint(32253),uint(32297),uint(32803),uint(32935),uint(32473),uint(32891),uint(32517),uint(32627),uint(32671),uint(61041),uint(40142),uint(40076),uint(30515),uint(30273),uint(32002),uint(47085),uint(38897),uint(32222),uint(31342),uint(61045),uint(32442),uint(38831),uint(32552),uint(40173),uint(40151),uint(40085),uint(40063),uint(32873),uint(32807),uint(32851),uint(32961),uint(38092),uint(52215),uint(30506),uint(32213),uint(32125),uint(32191),uint(32103),uint(32543),uint(32631),uint(32653),uint(32433),uint(38686),uint(32675),uint(32257),uint(32301),uint(46271),uint(32477),uint(32521),uint(32522),uint(38685),uint(38707),uint(32302),uint(32632),uint(32214),uint(32676),uint(38905),uint(38091),uint(32852),uint(32962),uint(40071),uint(39433),uint(32126),uint(32192),uint(40313),uint(32271),uint(32293),uint(32161),uint(32513),uint(32205),uint(32535),uint(32227),uint(32557),uint(32623),uint(32645),uint(38892),uint(32447),uint(32403),uint(46103),uint(46191),uint(46147),uint(32931),uint(32755),uint(40146),uint(30511),uint(32007),uint(32051),uint(32095),uint(32073),uint(46275),uint(46143),uint(32218),uint(38835),uint(38901),uint(38703),uint(32526),uint(32306),uint(46266),uint(32966),uint(32636),uint(38681),uint(40177),uint(40111),uint(40067),uint(40155),uint(52216),uint(32175),uint(38845),uint(32307),uint(32351),uint(40165),uint(40143),uint(40077),uint(32672),uint(32892),uint(32936),uint(38832),uint(46131),uint(46197),uint(46263),uint(32056),uint(32122),uint(61042),uint(32276),uint(32166),uint(46105),uint(46193),uint(40152),uint(40086),uint(37565),uint(32575),uint(32641),uint(32443),uint(32751),uint(32795),uint(38841),uint(38093),uint(38687),uint(32531),uint(32553),uint(30516),uint(61046),uint(46272),uint(32003),uint(47086),uint(39435),uint(61055),uint(32201),uint(32223),uint(32091),uint(40315),uint(40161),uint(40073),uint(31343),uint(40072),uint(52211),uint(46135),uint(32963),uint(46267),uint(32853),uint(32875),uint(38035),uint(46192),uint(32127),uint(32105),uint(38695),uint(32303),uint(32523),uint(32545),uint(32193),uint(32171),uint(32677),uint(32633),uint(32215),uint(32655),uint(38871),uint(38893),uint(32435),uint(40147),uint(40081),uint(32932),uint(46276),uint(32646),uint(32756),uint(51041),uint(30125),uint(30455),uint(32052),uint(32272),uint(38836),uint(32206),uint(32096),uint(38682),uint(32536),uint(32162),uint(47081),uint(40156),uint(40112),uint(32791),uint(38097),uint(38031),uint(32967),uint(32527),uint(32571),uint(38691),uint(32637),uint(30512),uint(46141),uint(46273),uint(32176),uint(47087),uint(38833),uint(30513),uint(32352),uint(61043),uint(32792),uint(30271),uint(52217),uint(38701),uint(32572),uint(61052),uint(40153),uint(40175),uint(40087),uint(40065),uint(37566),uint(32937),uint(32893),uint(50501),uint(32057),uint(32255),uint(32123),uint(32101),uint(32211),uint(61056),uint(32673),uint(32651),uint(32475),uint(32871),uint(32431),uint(32805),uint(38842),uint(32541),uint(40316),uint(40162),uint(39436),uint(32796),uint(38037),uint(30517),uint(46106),uint(32202),uint(30275),uint(32092),uint(30451),uint(32532),uint(32576),uint(32642),uint(38697),uint(32752),uint(38895),uint(38873),uint(30121),uint(32445),uint(32511),uint(32533),uint(38696),uint(32401),uint(32555),uint(32577),uint(32291),uint(32643),uint(32621),uint(32225),uint(38036),uint(38872),uint(32753),uint(47082),uint(32797),uint(40082),uint(30122),uint(32093),uint(32203),uint(32005),uint(32071),uint(52212),uint(37561),uint(38837),uint(32172),uint(32216),uint(32546),uint(38683),uint(38705),uint(61047),uint(32436),uint(46136),uint(32656),uint(32876),uint(40157),uint(40113),uint(39431),uint(30126),uint(30456),uint(61051),uint(32106),uint(51042),uint(38032),uint(46132),uint(40311),uint(32251),uint(38846),uint(32207),uint(38692),uint(32075),uint(32053),uint(32515),uint(32097),uint(32537),uint(32471),uint(32405),uint(32295),uint(32933),uint(46277),uint(32625),uint(32647),uint(46101),uint(32801),uint(46145),uint(32757),uint(40166),uint(32076),uint(32472),uint(32406),uint(32252),uint(32296),uint(40176),uint(37567),uint(46107),uint(40066),uint(32793),uint(38095),uint(32441),uint(38821),uint(32551),uint(32573),uint(31341),uint(30272),uint(39437),uint(46142),uint(32001),uint(38843),uint(32353),uint(61053),uint(32177),uint(32221),uint(40317),uint(40141),uint(40075),uint(40163),uint(32476),uint(32652),uint(32432),uint(32806),uint(38896),uint(32542),uint(32872),uint(61057),uint(30505),uint(46195),uint(46261),uint(30452),uint(32256),uint(32212),uint(30276),uint(32102),uint(37563),uint(40172),uint(40062),uint(30453),uint(30123),uint(30277),uint(40061),uint(40171),uint(40083),uint(46146),uint(37562),uint(46102),uint(46137),uint(39432),uint(32072),uint(32006),uint(32402),uint(38706),uint(32292),uint(32512),uint(32556),uint(32226),uint(32622),uint(32446),uint(47083),uint(40312),uint(52213),uint(46265),uint(32965),uint(50502),uint(32877),uint(38033),uint(32635),uint(32657),uint(46133),uint(38825),uint(32305),uint(32217),uint(38891),uint(38847),uint(32107),uint(38693),uint(32525),uint(32173),uint(32547),uint(32437),uint(30127),uint(40145),uint(40167),uint(32802),uint(32516),uint(32626),uint(38702),uint(51043),uint(30501),uint(30457)})&.Rotten:== uint(3157)))|(.Peel:->contains($uint,[]uint{uint(55571),uint(55373),uint(16822),uint(15392),uint(19361),uint(51501),uint(54462),uint(15872),uint(55562),uint(19893),uint(16831),uint(12242),uint(16651),uint(52253),uint(15661),uint(54453),uint(15881),uint(14671),uint(13901),uint(53912),uint(14253),uint(19933),uint(15393),uint(13831),uint(52702),uint(17012),uint(16022),uint(11763),uint(19942),uint(16832),uint(12243),uint(13541),uint(19362),uint(16823),uint(13902),uint(55541),uint(55563),uint(14672),uint(15873),uint(55572),uint(15341),uint(16023),uint(16652),uint(53891),uint(53913),uint(54441),uint(54463),uint(15662),uint(15882),uint(51502),uint(19921),uint(19943),uint(55721),uint(52703),uint(17013),uint(13832),uint(19011),uint(19891),uint(13542),uint(16833),uint(55723),uint(55371),uint(54451),uint(15663),uint(15883),uint(14673),uint(55573),uint(13903),uint(13833),uint(14251),uint(53892),uint(54442),uint(15342),uint(55542),uint(16653),uint(19922),uint(55722),uint(11761),uint(52251),uint(51503),uint(19931),uint(16821),uint(15391),uint(55372),uint(19923),uint(13543),uint(52701),uint(53911),uint(54461),uint(55561),uint(19012),uint(19892),uint(12241),uint(54443),uint(19941),uint(14252),uint(55543),uint(54452),uint(15343),uint(15871),uint(17011),uint(16021),uint(19932),uint(52252),uint(11762),uint(53893)})&.Rotten:== uint(4004)))|(.Peel:->contains($uint,[]uint{uint(21570),uint(21700),uint(21780)})&.Rotten:== uint(7004)))|(.Peel:->contains($uint,[]uint{uint(4460641),uint(4467443),uint(179),uint(4464042),uint(4460742),uint(188),uint(197),uint(175),uint(250),uint(184),uint(4463443),uint(171),uint(4464041),uint(4463843),uint(4467442),uint(180),uint(4466443),uint(189),uint(4460741),uint(176),uint(4462043),uint(4463143),uint(185),uint(251),uint(4463442),uint(172),uint(4467441),uint(181),uint(4463842),uint(4466442),uint(190),uint(4462042),uint(177),uint(4463142),uint(4460643),uint(4463441),uint(186),uint(195),uint(173),uint(182),uint(4463841),uint(191),uint(4466441),uint(4463141),uint(178),uint(4460642),uint(4464043),uint(4460743),uint(4462041),uint(187),uint(174),uint(196),uint(249),uint(183)})&.Rotten:== uint(3021)))|(.Rotten:== uint(8021)&.Peel:->contains($uint,[]uint{uint(4463441),uint(4463841),uint(4466441),uint(4462041),uint(4464043),uint(4460642),uint(4463141),uint(4460743),uint(4467443),uint(4460641),uint(4464042),uint(4460742),uint(4463443),uint(4464041),uint(4463843),uint(4467442),uint(4466443),uint(4460741),uint(4463143),uint(4462043),uint(4463442),uint(4463842),uint(4467441),uint(4466442),uint(4460643),uint(4462042),uint(4463142)})))|(.Rotten:== uint(2111)&.Peel:->contains($uint,[]uint{uint(46432),uint(34812),uint(34803),uint(34522),uint(30101),uint(34791),uint(34813),uint(46411),uint(46292),uint(34801),uint(30102),uint(34792),uint(34814),uint(46412),uint(46280),uint(46431),uint(34811),uint(34802),uint(30103),uint(34521),uint(46290)})))|(.Rotten:== uint(1011)&.Peel:->contains($uint,[]uint{uint(1828121),uint(14911122),uint(1001111),uint(17741121),uint(16381121),uint(1165113),uint(1128113),uint(1836111),uint(1793112),uint(1875113),uint(16501123),uint(1275112),uint(10441123),uint(1630111),uint(1139117),uint(1650112),uint(1044112),uint(1491111),uint(1876112),uint(23361123),uint(2336111),uint(11531123),uint(1528113),uint(1870121),uint(1637111),uint(22791122),uint(11131121),uint(1153112),uint(1160111),uint(11131122),uint(1774113),uint(1877111),uint(2336112),uint(1642113),uint(16371121),uint(1181111),uint(12461121),uint(1139112),uint(1626111),uint(18781122),uint(1870125),uint(11391123),uint(1581112),uint(1139116),uint(10441122),uint(22611122),uint(1869113),uint(1153116),uint(1275116),uint(16501122),uint(1506113),uint(18691123),uint(1793111),uint(1451113),uint(1888111),uint(1895111),uint(22791123),uint(1637112),uint(1164111),uint(17741122),uint(1113113),uint(14911123),uint(22611121),uint(1638115),uint(1002113),uint(1876113),uint(1630112),uint(1793113),uint(1491112),uint(1103112),uint(1828124),uint(1638111),uint(12751121),uint(11531122),uint(1528112),uint(1044113),uint(1128112),uint(1153111),uint(1650113),uint(1877112),uint(1275111),uint(1626113),uint(20791121),uint(1581111),uint(1626112),uint(18781123),uint(11131123),uint(1160112),uint(20791122),uint(1869112),uint(1870124),uint(1139111),uint(2336113),uint(12461122),uint(1153115),uint(1181112),uint(1275115),uint(1139115),uint(18691122),uint(17741123),uint(1164112),uint(1630113),uint(1888112),uint(1002112),uint(1637113),uint(16381123),uint(11531121),uint(1836113),uint(12751122),uint(1875111),uint(1642111),uint(1103111),uint(1001113),uint(1895112),uint(1160113),uint(1638112),uint(1877113),uint(1828123),uint(1165111),uint(23361121),uint(1491113),uint(1128111),uint(1870123),uint(18691121),uint(1869111),uint(20791123),uint(16371123),uint(12461123),uint(1116113),uint(16591121),uint(1774111),uint(1528111),uint(1638116),uint(30512),uint(11391121),uint(1506111),uint(1002111),uint(1181113),uint(1113112),uint(1638113),uint(34961),uint(1828122),uint(16381122),uint(1451111),uint(1836112),uint(14911121),uint(1275113),uint(1044111),uint(1164113),uint(1875112),uint(1001112),uint(1888113),uint(22791121),uint(23361122),uint(1650111),uint(1895113),uint(16591122),uint(1876111),uint(12751123),uint(1165112),uint(1116111),uint(1870122),uint(1139113),uint(1774112),uint(1275117),uint(1116112),uint(1153113),uint(1642112),uint(18781121),uint(16371122),uint(1506112),uint(11391122),uint(16501121),uint(22611123),uint(1451112),uint(1581113),uint(1638117),uint(1870126),uint(1996121),uint(30513),uint(1113111),uint(10441121),uint(1153117)})))|(.Rotten:== uint(40105)&.Peel:->contains($uint,[]uint{uint(18557),uint(59431),uint(2247),uint(14672),uint(14254),uint(59651),uint(59321),uint(18447),uint(59123),uint(59233),uint(59211),uint(55612),uint(59013),uint(10655),uint(6396),uint(25425),uint(59453),uint(56822),uint(58111),uint(19921),uint(19877),uint(57913),uint(58353),uint(12868),uint(58023),uint(61622),uint(27581),uint(61556),uint(61512),uint(56052),uint(61446),uint(13902),uint(61807),uint(19415),uint(61851),uint(61314),uint(16335),uint(2533),uint(19591),uint(58551),uint(16027),uint(58032),uint(15873),uint(58054),uint(15565),uint(12252),uint(61653),uint(64253),uint(61565),uint(61521),uint(58824),uint(59022),uint(61455),uint(61477),uint(22297),uint(58912),uint(5327),uint(61886),uint(57152),uint(64451),uint(61908),uint(8565),uint(61323),uint(61213),uint(14311),uint(55621),uint(14443),uint(3545),uint(14465),uint(55511),uint(18566),uint(3897),uint(13915),uint(9665),uint(60223),uint(4447),uint(9577),uint(60113),uint(9335),uint(60553),uint(57922),uint(60531),uint(60421),uint(60311),uint(57812),uint(55313),uint(58014),uint(58322),uint(16023),uint(12248),uint(61657),uint(24822),uint(61613),uint(3906),uint(61525),uint(61415),uint(11214),uint(61437),uint(58652),uint(4456),uint(57134),uint(57112),uint(15561),uint(60953),uint(60931),uint(61151),uint(4258),uint(6911),uint(60513),uint(60821),uint(9287),uint(26912),uint(57222),uint(60623),uint(60051),uint(59853),uint(5877),uint(57552),uint(9595),uint(60852),uint(56813),uint(13053),uint(60522),uint(56351),uint(57231),uint(57253),uint(60654),uint(23335),uint(13911),uint(55911),uint(55823),uint(9652),uint(5886),uint(19538),uint(60412),uint(17017),uint(56021),uint(59312),uint(59224),uint(27563),uint(59752),uint(4676),uint(27585),uint(5666),uint(28333),uint(3057),uint(57121),uint(61723),uint(61811),uint(61855),uint(57011),uint(15398),uint(15376),uint(12701),uint(56923),uint(2705),uint(59422),uint(52404),uint(9296),uint(60614),uint(56421),uint(60812),uint(56553),uint(1416),uint(56223),uint(56311),uint(59822),uint(57213),uint(9824),uint(59932),uint(55651),uint(57521),uint(60152),uint(13907),uint(61824),uint(57653),uint(64411),uint(22293),uint(61846),uint(3915),uint(12257),uint(59052),uint(18562),uint(58722),uint(59624),uint(2406),uint(15878),uint(59712),uint(15372),uint(27586),uint(6832),uint(4465),uint(61815),uint(10651),uint(55352),uint(59523),uint(59633),uint(14316),uint(58951),uint(59611),uint(59721),uint(26917),uint(9925),uint(19662),uint(17075),uint(19596),uint(7017),uint(19926),uint(59413),uint(57851),uint(1205),uint(11905),uint(13546),uint(61516),uint(22843),uint(61406),uint(1535),uint(61252),uint(58511),uint(58621),uint(6027),uint(61296),uint(58753),uint(58313),uint(60922),uint(16331),uint(16397),uint(6335),uint(56012),uint(58423),uint(11223),uint(59021),uint(11021),uint(58911),uint(11175),uint(55312),uint(58713),uint(58823),uint(14312),uint(19534),uint(14466),uint(16837),uint(59351),uint(17013),uint(59153),uint(19666),uint(12253),uint(5376),uint(57613),uint(5398),uint(61652),uint(22847),uint(64424),uint(56522),uint(57723),uint(56412),uint(61476),uint(57921),uint(8566),uint(61322),uint(58031),uint(61388),uint(57833),uint(57811),uint(61212),uint(56214),uint(11505),uint(23331),uint(58053),uint(13916),uint(61705),uint(16393),uint(18795),uint(12244),uint(57622),uint(61551),uint(61485),uint(15887),uint(18443),uint(61397),uint(61507),uint(18553),uint(61375),uint(57952),uint(61353),uint(61133),uint(61111),uint(61221),uint(58612),uint(12706),uint(8557),uint(60913),uint(60451),uint(55123),uint(61806),uint(60253),uint(25421),uint(9415),uint(55321),uint(19565),uint(24827),uint(19411),uint(2248),uint(59813),uint(9877),uint(14457),uint(19873),uint(9811),uint(19895),uint(60121),uint(59923),uint(14677),uint(19675),uint(60011),uint(57512),uint(60033),uint(61566),uint(61522),uint(61456),uint(61852),uint(57153),uint(57131),uint(57813),uint(57923),uint(57021),uint(61324),uint(17071),uint(12702),uint(56911),uint(19922),uint(58121),uint(56823),uint(58011),uint(58033),uint(60532),uint(58451),uint(8795),uint(15575),uint(9653),uint(9895),uint(1905),uint(15377),uint(60422),uint(60312),uint(3546),uint(18567),uint(59652),uint(14673),uint(6397),uint(23345),uint(60321),uint(9666),uint(23332),uint(60123),uint(55952),uint(60211),uint(19667),uint(9336),uint(6912),uint(60431),uint(19535),uint(60453),uint(55512),uint(55622),uint(14255),uint(60013),uint(13903),uint(3907),uint(58913),uint(16336),uint(5878),uint(57052),uint(59551),uint(13045),uint(19931),uint(15874),uint(59331),uint(59353),uint(52401),uint(10656),uint(59221),uint(27582),uint(59023),uint(15566),uint(56612),uint(59111),uint(55912),uint(9926),uint(59951),uint(5887),uint(64254),uint(18791),uint(26913),uint(64452),uint(60413),uint(9596),uint(13547),uint(19561),uint(56022),uint(59423),uint(59511),uint(59621),uint(14317),uint(59753),uint(14251),uint(23336),uint(5667),uint(57232),uint(58653),uint(11224),uint(4457),uint(57122),uint(61711),uint(58323),uint(12865),uint(61821),uint(2706),uint(57012),uint(61887),uint(58411),uint(16332),uint(58521),uint(59313),uint(10652),uint(19671),uint(13041),uint(24823),uint(61658),uint(4677),uint(56352),uint(58851),uint(61526),uint(19935),uint(61416),uint(19891),uint(4466),uint(15562),uint(61856),uint(58552),uint(61812),uint(55151),uint(25426),uint(59432),uint(59322),uint(59212),uint(18448),uint(59234),uint(61623),uint(61535),uint(61513),uint(61557),uint(56053),uint(61447),uint(56031),uint(13912),uint(61425),uint(55921),uint(7075),uint(55811),uint(6833),uint(19592),uint(19416),uint(61205),uint(58024),uint(58112),uint(60831),uint(60523),uint(60853),uint(11501),uint(1417),uint(11611),uint(60611),uint(3916),uint(55613),uint(19575),uint(58512),uint(19597),uint(19663),uint(3045),uint(27587),uint(27565),uint(58622),uint(19531),uint(19927),uint(11211),uint(28335),uint(2407),uint(12245),uint(6336),uint(4255),uint(61517),uint(58952),uint(61495),uint(61407),uint(61385),uint(61231),uint(61121),uint(61253),uint(61297),uint(17076),uint(60813),uint(56013),uint(57522),uint(52405),uint(60923),uint(64421),uint(9416),uint(55111),uint(57852),uint(60351),uint(55551),uint(55353),uint(57223),uint(57113),uint(61152),uint(57553),uint(60932),uint(64412),uint(5377),uint(1206),uint(60624),uint(9341),uint(11906),uint(5421),uint(56651),uint(57751),uint(18792),uint(5575),uint(60822),uint(9297),uint(56211),uint(56321),uint(1536),uint(15395),uint(19672),uint(15373),uint(60052),uint(15571),uint(19936),uint(19892),uint(24824),uint(61847),uint(59634),uint(59612),uint(59722),uint(9935),uint(8567),uint(61112),uint(56611),uint(56523),uint(57513),uint(61706),uint(13046),uint(57623),uint(61816),uint(57821),uint(16337),uint(25422),uint(55951),uint(57711),uint(56413),uint(18444),uint(15875),uint(9337),uint(60452),uint(57953),uint(19412),uint(24828),uint(59352),uint(60012),uint(9821),uint(10657),uint(60122),uint(9667),uint(18796),uint(15567),uint(19676),uint(15325),uint(57051),uint(59823),uint(55652),uint(59713),uint(16825),uint(59911),uint(59933),uint(14445),uint(3547),uint(14467),uint(9812),uint(60131),uint(60153),uint(13895),uint(13917),uint(59251),uint(60021),uint(19896),uint(55322),uint(4251),uint(14313),uint(11506),uint(23341),uint(58613),uint(12707),uint(58151),uint(11176),uint(59053),uint(56312),uint(56422),uint(61552),uint(58921),uint(61486),uint(58723),uint(61376),uint(61354),uint(18563),uint(56224),uint(61222),uint(58811),uint(59552),uint(55513),uint(59332),uint(1906),uint(55821),uint(59112),uint(59222),uint(55623),uint(23333),uint(9896),uint(14441),uint(58122),uint(13055),uint(19932),uint(58034),uint(56921),uint(56811),uint(58012),uint(5395),uint(61655),uint(56613),uint(11502),uint(61611),uint(61567),uint(61523),uint(61435),uint(64251),uint(61457),uint(13913),uint(61752),uint(61818),uint(61796),uint(61906),uint(58452),uint(17015),uint(19536),uint(58153),uint(58351),uint(25423),uint(58021),uint(28331),uint(15576),uint(12241),uint(27583),uint(27561),uint(59011),uint(61576),uint(58813),uint(61466),uint(61721),uint(58923),uint(61312),uint(61853),uint(61378),uint(57053),uint(12703),uint(2245),uint(14256),uint(55522),uint(18555),uint(57251),uint(60652),uint(55852),uint(18445),uint(8796),uint(60212),uint(6913),uint(57713),uint(57911),uint(60432),uint(6825),uint(60322),uint(57823),uint(18797),uint(11907),uint(58311),uint(11621),uint(61536),uint(3895),uint(52407),uint(3917),uint(58113),uint(4445),uint(61426),uint(61448),uint(4467),uint(61206),uint(57123),uint(57013),uint(15572),uint(7076),uint(58751),uint(58421),uint(2531),uint(2707),uint(15396),uint(58553),uint(9342),uint(60832),uint(14252),uint(23337),uint(57211),uint(60612),uint(57233),uint(59952),uint(57651),uint(55152),uint(2408),uint(6337),uint(60951),uint(13042),uint(60533),uint(60511),uint(60621),uint(23346),uint(19923),uint(55922),uint(9597),uint(9575),uint(16333),uint(5875),uint(55812),uint(13548),uint(16245),uint(60423),uint(19417),uint(19571),uint(19593),uint(60313),uint(56032),uint(15871),uint(17072),uint(59323),uint(59521),uint(59213),uint(16025),uint(59653),uint(59631),uint(15563),uint(10653),uint(59851),uint(3046),uint(9927),uint(57154),uint(57132),uint(61712),uint(12866),uint(61822),uint(57022),uint(5325),uint(56912),uint(25427),uint(59433),uint(59411),uint(64453),uint(9285),uint(9417),uint(5422),uint(5576),uint(1537),uint(56212),uint(56322),uint(59811),uint(9813),uint(59921),uint(16395),uint(13896),uint(60251),uint(60031),uint(64422),uint(60053),uint(61813),uint(24825),uint(61857),uint(16021),uint(16241),uint(59151),uint(58953),uint(18793),uint(12246),uint(18551),uint(59613),uint(26915),uint(58711),uint(18441),uint(59723),uint(58821),uint(57114),uint(12708),uint(4256),uint(56652),uint(55121),uint(59512),uint(59622),uint(58852),uint(59754),uint(19673),uint(9936),uint(3055),uint(27566),uint(19937),uint(19893),uint(52406),uint(19871),uint(56551),uint(28336),uint(57752),uint(13051),uint(56221),uint(61505),uint(61527),uint(61395),uint(56353),uint(61417),uint(58522),uint(61351),uint(61131),uint(61153),uint(60911),uint(23338),uint(60823),uint(60933),uint(56023),uint(58412),uint(11212),uint(19897),uint(58922),uint(19875),uint(55323),uint(58812),uint(16826),uint(3548),uint(14455),uint(19413),uint(6025),uint(14675),uint(59252),uint(19677),uint(12242),uint(56313),uint(52402),uint(61575),uint(64413),uint(56511),uint(61553),uint(57712),uint(56423),uint(61465),uint(61487),uint(8555),uint(61311),uint(61377),uint(57822),uint(61223),uint(55653),uint(14257),uint(23342),uint(58152),uint(61113),uint(55521),uint(60651),uint(13905),uint(8797),uint(55851),uint(57721),uint(12255),uint(57831),uint(57611),uint(57853),uint(22845),uint(61496),uint(58051),uint(15876),uint(61386),uint(61122),uint(58513),uint(61232),uint(58623),uint(11507),uint(15326),uint(56621),uint(11177),uint(13047),uint(11221),uint(5396),uint(61707),uint(61751),uint(61795),uint(60352),uint(61817),uint(55112),uint(9338),uint(61905),uint(55552),uint(4252),uint(16835),uint(19532),uint(59714),uint(22295),uint(19576),uint(17011),uint(59912),uint(1907),uint(14446),uint(9822),uint(60132),uint(7015),uint(17077),uint(60022),uint(57523),uint(61577),uint(61555),uint(61511),uint(61753),uint(61445),uint(61467),uint(61907),uint(61885),uint(61313),uint(57912),uint(12867),uint(16026),uint(17016),uint(56922),uint(60851),uint(19933),uint(15872),uint(13043),uint(56812),uint(58352),uint(58022),uint(60653),uint(11503),uint(6826),uint(60213),uint(9576),uint(60521),uint(60433),uint(60411),uint(60323),uint(14442),uint(59553),uint(18446),uint(18556),uint(59751),uint(57252),uint(12251),uint(23334),uint(7077),uint(23343),uint(56051),uint(60112),uint(60222),uint(9897),uint(2532),uint(60552),uint(2708),uint(2246),uint(55523),uint(55611),uint(26911),uint(55853),uint(9875),uint(3896),uint(6395),uint(16391),uint(58814),uint(59012),uint(64252),uint(16827),uint(12704),uint(57151),uint(59452),uint(13056),uint(19876),uint(15885),uint(56821),uint(59232),uint(56513),uint(59254),uint(15577),uint(56623),uint(59122),uint(61621),uint(9937),uint(55813),uint(5876),uint(9651),uint(22841),uint(5326),uint(9343),uint(56033),uint(59412),uint(56011),uint(59522),uint(55351),uint(59632),uint(27562),uint(59654),uint(23347),uint(59852),uint(57221),uint(11213),uint(3047),uint(4446),uint(57133),uint(57111),uint(61722),uint(58752),uint(58312),uint(57023),uint(56913),uint(61854),uint(58422),uint(17073),uint(19572),uint(59214),uint(13052),uint(28332),uint(15573),uint(52408),uint(22291),uint(61537),uint(61515),uint(61427),uint(4455),uint(4675),uint(61713),uint(4257),uint(58453),uint(61845),uint(61823),uint(15375),uint(58651),uint(15397),uint(59421),uint(59333),uint(59311),uint(14671),uint(59223),uint(59113),uint(61656),uint(61612),uint(61458),uint(13901),uint(61436),uint(24821),uint(57551),uint(55822),uint(19537),uint(58013),uint(60952),uint(60512),uint(58321),uint(14253),uint(3905),uint(60622),uint(58123),uint(58523),uint(15371),uint(3056),uint(15327),uint(58721),uint(58611),uint(19872),uint(11222),uint(58413),uint(59051),uint(12256),uint(6831),uint(58853),uint(61506),uint(61352),uint(61396),uint(5885),uint(61132),uint(13897),uint(14447),uint(57511),uint(57621),uint(60912),uint(64454),uint(55122),uint(57753),uint(9295),uint(60252),uint(5423),uint(5577),uint(14315),uint(57951),uint(5665),uint(6026),uint(61295),uint(61405),uint(57124),uint(61251),uint(60921),uint(16396),uint(64423),uint(22292),uint(57652),uint(60613),uint(9286),uint(16022),uint(28337),uint(13545),uint(60833),uint(56552),uint(60811),uint(22842),uint(56222),uint(1415),uint(18561),uint(59931),uint(19661),uint(59821),uint(19573),uint(19595),uint(59953),uint(19925),uint(55153),uint(60151),uint(61814),uint(59513),uint(12247),uint(59623),uint(59711),uint(26916),uint(2405),uint(57212),uint(61211),uint(22296),uint(61123),uint(8556),uint(56512),uint(5397),uint(13057),uint(56622),uint(60353),uint(64414),uint(61805),uint(5375),uint(16392),uint(57612),uint(18565),uint(57722),uint(22846),uint(60221),uint(58052),uint(15886),uint(60551),uint(57832),uint(19533),uint(19577),uint(27567),uint(9876),uint(60023),uint(7016),uint(59913),uint(59231),uint(59253),uint(60133),uint(60111),uint(59121),uint(19665),uint(12243),uint(12705),uint(4253),uint(59451),uint(59724),uint(59812),uint(16836),uint(55553),uint(59922),uint(14456),uint(9823),uint(13906),uint(17012),uint(24826),uint(60032),uint(14676),uint(52403),uint(6827),uint(55113),uint(55311),uint(59614),uint(14258),uint(56653),uint(56411),uint(56323),uint(59152),uint(61651),uint(56521),uint(61497),uint(58712),uint(61387),uint(61475),uint(15877),uint(18552),uint(11011),uint(56213),uint(61233),uint(58822),uint(61321),uint(18442)})))|(.Peel:->contains($uint,[]uint{uint(11601),uint(11623),uint(15992),uint(12063),uint(12362),uint(17101),uint(12732),uint(15011),uint(17743),uint(14703),uint(14941),uint(11144),uint(17933),uint(11531),uint(12763),uint(12363),uint(16591),uint(16481),uint(16371),uint(18061),uint(11391),uint(15993),uint(11602),uint(14911),uint(15021),uint(11532),uint(17102),uint(16592),uint(12421),uint(16372),uint(14942),uint(12751),uint(10441),uint(16341),uint(11603),uint(15941),uint(16381),uint(11141),uint(19201),uint(11392),uint(12461),uint(16342),uint(12061),uint(10442),uint(17741),uint(14912),uint(15022),uint(11621),uint(11533),uint(17103),uint(16461),uint(16373),uint(12752),uint(12422),uint(14701),uint(14921),uint(19202),uint(12462),uint(12761),uint(16382),uint(15942),uint(11142),uint(12361),uint(11393),uint(14922),uint(14702),uint(10443),uint(17931),uint(12062),uint(11622),uint(15991),uint(14913),uint(17742),uint(16383),uint(15943),uint(12762),uint(12731),uint(12753),uint(16462),uint(17932),uint(11143),uint(12463)})&.Rotten:== uint(6005)))|(.Peel:->contains($uint,[]uint{uint(1125112),uint(1347112),uint(1281113),uint(142),uint(120),uint(76),uint(230),uint(274),uint(208),uint(384),uint(14111122),uint(1155112),uint(1184111),uint(1561111),uint(1200113),uint(428),uint(1279111),uint(18921121),uint(450),uint(472),uint(494),uint(1250112),uint(4341841),uint(1671112),uint(1193113),uint(1177111),uint(15581123),uint(1183112),uint(1361112),uint(1407112),uint(12181123),uint(1371113),uint(12631122),uint(1376111),uint(1518112),uint(1026121),uint(1272111),uint(1257112),uint(1503113),uint(85),uint(63),uint(195),uint(151),uint(217),uint(239),uint(107),uint(1140111),uint(371),uint(11371123),uint(459),uint(305),uint(1348111),uint(283),uint(4462043),uint(437),uint(415),uint(1353113),uint(6112112),uint(1119111),uint(1482113),uint(11401123),uint(13651122),uint(1503117),uint(1984122),uint(1133111),uint(1379112),uint(1282116),uint(1469111),uint(116),uint(94),uint(160),uint(138),uint(292),uint(314),uint(226),uint(270),uint(13841123),uint(490),uint(424),uint(380),uint(1771113),uint(468),uint(1563113),uint(1108111),uint(14901121),uint(1672111),uint(1003121),uint(1158113),uint(1507112),uint(1490111),uint(1107113),uint(1483111),uint(1469112),uint(1100113),uint(1410112),uint(1365111),uint(1180112),uint(2835111),uint(59),uint(147),uint(125),uint(103),uint(257),uint(1145113),uint(1218112),uint(301),uint(279),uint(191),uint(213),uint(1380111),uint(411),uint(1263113),uint(477),uint(1211112),uint(4343043),uint(1135112),uint(11371122),uint(1478113),uint(1281117),uint(1401111),uint(1122111),uint(1935112),uint(4342541),uint(1143111),uint(1552113),uint(1549113),uint(1145117),uint(11451121),uint(1241111),uint(1411111),uint(112),uint(68),uint(156),uint(178),uint(398),uint(376),uint(1400112),uint(464),uint(354),uint(288),uint(310),uint(266),uint(12631123),uint(420),uint(1026122),uint(11231123),uint(1003125),uint(1282111),uint(2380123),uint(1131113),uint(1671113),uint(1902123),uint(1105111),uint(1413113),uint(4342141),uint(11551123),uint(1406113),uint(1401115),uint(1468113),uint(1473111),uint(14101121),uint(1382113),uint(77),uint(143),uint(209),uint(121),uint(1785121),uint(1218116),uint(1142112),uint(1155113),uint(275),uint(1258111),uint(385),uint(1553112),uint(451),uint(473),uint(1553111),uint(1406112),uint(1177112),uint(1282115),uint(1184112),uint(1413112),uint(1671111),uint(1250111),uint(1347113),uint(1257111),uint(1384113),uint(12631121),uint(1281112),uint(14901122),uint(1382111),uint(42),uint(174),uint(64),uint(86),uint(152),uint(284),uint(196),uint(218),uint(13651121),uint(240),uint(14111121),uint(438),uint(416),uint(372),uint(1666113),uint(1125111),uint(460),uint(18921122),uint(1141113),uint(11451123),uint(4341842),uint(11331123),uint(1405113),uint(1183113),uint(1481111),uint(1281116),uint(1407111),uint(1231113),uint(1371112),uint(1352111),uint(1477111),uint(4342542),uint(51),uint(1527113),uint(139),uint(1361113),uint(117),uint(95),uint(227),uint(249),uint(271),uint(1366111),uint(161),uint(447),uint(381),uint(4462042),uint(469),uint(1398113),uint(293),uint(1490113),uint(315),uint(425),uint(1518111),uint(1107111),uint(1563112),uint(1348112),uint(1984121),uint(1544113),uint(1673113),uint(12811123),uint(1145112),uint(1483113),uint(13531123),uint(104),uint(60),uint(1202111),uint(214),uint(148),uint(1218113),uint(280),uint(258),uint(1558113),uint(1144113),uint(302),uint(412),uint(456),uint(1137113),uint(478),uint(1935113),uint(1135111),uint(11371121),uint(1483112),uint(1512111),uint(1507113),uint(1365112),uint(1211113),uint(1381113),uint(1216111),uint(1100112),uint(1490112),uint(1123113),uint(14011121),uint(1410111),uint(6112113),uint(1563111),uint(1549112),uint(1469113),uint(135),uint(179),uint(113),uint(201),uint(157),uint(289),uint(311),uint(1263112),uint(421),uint(1107112),uint(377),uint(1379111),uint(355),uint(1552112),uint(1865121),uint(1063111),uint(1131112),uint(1185111),uint(4341843),uint(1145116),uint(1400111),uint(1382112),uint(11451122),uint(1785122),uint(122),uint(2380122),uint(1142111),uint(1218117),uint(452),uint(474),uint(386),uint(1180113),uint(4343541),uint(1473112),uint(1130113),uint(11231122),uint(4342142),uint(1473113),uint(15581121),uint(1133113),uint(43),uint(65),uint(1384112),uint(241),uint(153),uint(1140113),uint(175),uint(197),uint(1177113),uint(373),uint(285),uint(439),uint(417),uint(461),uint(1119113),uint(1406111),uint(1984124),uint(1405112),uint(1401117),uint(1892111),uint(1561113),uint(14901123),uint(1131111),uint(1141112),uint(1672113),uint(1258113),uint(11331122),uint(1281111),uint(4462041),uint(1398112),uint(1481112),uint(1413111),uint(52),uint(1184113),uint(140),uint(228),uint(118),uint(316),uint(272),uint(448),uint(250),uint(470),uint(492),uint(426),uint(382),uint(1200111),uint(18921123),uint(1145111),uint(1202113),uint(1666112),uint(1193111),uint(1281115),uint(12811122),uint(1371111),uint(1477112),uint(61),uint(105),uint(1503115),uint(4342543),uint(303),uint(281),uint(215),uint(237),uint(1673112),uint(259),uint(479),uint(501),uint(435),uint(413),uint(1353111),uint(369),uint(1348113),uint(457),uint(1544112),uint(1482111),uint(1231112),uint(1366112),uint(1122113),uint(11401121),uint(11231121),uint(1468111),uint(1549111),uint(1003123),uint(1158111),uint(4342143),uint(158),uint(136),uint(114),uint(290),uint(202),uint(422),uint(378),uint(356),uint(312),uint(1365113),uint(15031121),uint(1137112),uint(13841121),uint(14101123),uint(1380113),uint(1558112),uint(1512112),uint(1144112),uint(1145115),uint(1100111),uint(1352112),uint(14011122),uint(1202112),uint(1527112),uint(1411113),uint(1141111),uint(1263111),uint(1279113),uint(57),uint(123),uint(255),uint(189),uint(2835113),uint(475),uint(4343542),uint(1902121),uint(1105113),uint(1272113),uint(1123112),uint(1478111),uint(1401113),uint(1003127),uint(1381112),uint(1063112),uint(1241113),uint(1552111),uint(1143113),uint(1216112),uint(1130112),uint(66),uint(44),uint(154),uint(176),uint(13531122),uint(242),uint(2380121),uint(286),uint(264),uint(1185112),uint(440),uint(418),uint(396),uint(374),uint(462),uint(1672112),uint(1361111),uint(1258112),uint(1140112),uint(1185113),uint(11331121),uint(1405111),uint(1561112),uint(1398111),uint(1407113),uint(1481113),uint(12181122),uint(1401116),uint(1376112),uint(1125113),uint(53),uint(119),uint(75),uint(1503112),uint(1282113),uint(141),uint(273),uint(317),uint(207),uint(251),uint(229),uint(449),uint(427),uint(383),uint(1279112),uint(1518113),uint(1155111),uint(1272112),uint(471),uint(493),uint(1183111),uint(1193112),uint(1119112),uint(11551121),uint(4343543),uint(1984123),uint(1892112),uint(15581122),uint(1257113),uint(1379113),uint(12811121),uint(1507111),uint(1673111),uint(1211111),uint(1108112),uint(6112111),uint(62),uint(84),uint(1482112),uint(150),uint(4343041),uint(106),uint(6108112),uint(238),uint(282),uint(260),uint(216),uint(414),uint(1282117),uint(370),uint(458),uint(1353112),uint(1144111),uint(304),uint(436),uint(1935111),uint(1544111),uint(1771112),uint(1384111),uint(1200112),uint(1250113),uint(15031123),uint(1133112),uint(1218111),uint(1666111),uint(1503116),uint(1477113),uint(14111123),uint(13651123),uint(1347111),uint(1380112),uint(93),uint(115),uint(159),uint(203),uint(137),uint(225),uint(1366113),uint(379),uint(1527111),uint(313),uint(291),uint(15031122),uint(13841122),uint(423),uint(489),uint(14011123),uint(1231111),uint(1003122),uint(1143112),uint(1410113),uint(1158112),uint(1468112),uint(1771111),uint(1352113),uint(1108113),uint(58),uint(124),uint(102),uint(190),uint(300),uint(256),uint(476),uint(1401112),uint(11401122),uint(1180111),uint(1122112),uint(1137111),uint(4343042),uint(6108111),uint(1135113),uint(1478112),uint(1512113),uint(1003126),uint(1381111),uint(1216113),uint(1105112),uint(14101122),uint(1503111),uint(11551122),uint(1282112),uint(1241112),uint(1218115),uint(1892113),uint(1558111),uint(1142113),uint(13531121),uint(1411112),uint(1553113),uint(1130111),uint(111),uint(67),uint(177),uint(155),uint(265),uint(309),uint(287),uint(1376113),uint(463),uint(1400113),uint(419),uint(397),uint(375),uint(1123111),uint(1902122),uint(2835112),uint(1063113),uint(12181121)})&.Rotten:== uint(1021)))|(.Peel:->contains($uint,[]uint{uint(32433),uint(32477),uint(24311),uint(61212),uint(32521),uint(32543),uint(32257),uint(32631),uint(24113),uint(32301),uint(32191),uint(32213),uint(32653),uint(40313),uint(32675),uint(41017),uint(44462),uint(40071),uint(61322),uint(28152),uint(24751),uint(48127),uint(52122),uint(44022),uint(28922),uint(41633),uint(32807),uint(24553),uint(31333),uint(32741),uint(32851),uint(32961),uint(24421),uint(32873),uint(46266),uint(26722),uint(43252),uint(26612),uint(23211),uint(31421),uint(52012),uint(31751),uint(23453),uint(23651),uint(29252),uint(31883),uint(20712),uint(62853),uint(23321),uint(32103),uint(21152),uint(25952),uint(32125),uint(62523),uint(33722),uint(55752),uint(46103),uint(29551),uint(50142),uint(46191),uint(46147),uint(26753),uint(26621),uint(26511),uint(29023),uint(22252),uint(60451),uint(26423),uint(29111),uint(26313),uint(29221),uint(21922),uint(29353),uint(21812),uint(43173),uint(38892),uint(32292),uint(32226),uint(32512),uint(52641),uint(25851),uint(32556),uint(20721),uint(32446),uint(32402),uint(40146),uint(52751),uint(52091),uint(27712),uint(32952),uint(30211),uint(52223),uint(61652),uint(30123),uint(30453),uint(52443),uint(32622),uint(42183),uint(27822),uint(25213),uint(30277),uint(46275),uint(42192),uint(26911),uint(26713),uint(27153),uint(22322),uint(31412),uint(46143),uint(41906),uint(22014),uint(23312),uint(26053),uint(62822),uint(26251),uint(30422),uint(32006),uint(25811),uint(32072),uint(33713),uint(44691),uint(25723),uint(27923),uint(33251),uint(25613),uint(28121),uint(58871),uint(28913),uint(56262),uint(38835),uint(41642),uint(41312),uint(24821),uint(38681),uint(44251),uint(38703),uint(52571),uint(25151),uint(38901),uint(39011),uint(32173),uint(28112),uint(32217),uint(41013),uint(28222),uint(32481),uint(65211),uint(32107),uint(58682),uint(32437),uint(32371),uint(21253),uint(25622),uint(44502),uint(32305),uint(40177),uint(32877),uint(40111),uint(40155),uint(33053),uint(61511),uint(41431),uint(61951),uint(32965),uint(40067),uint(32547),uint(32525),uint(32613),uint(21011),uint(32635),uint(28552),uint(32657),uint(38096),uint(61313),uint(61423),uint(45175),uint(45395),uint(55391),uint(22111),uint(22023),uint(31821),uint(60653),uint(29212),uint(21913),uint(24412),uint(45835),uint(55831),uint(26823),uint(27321),uint(37567),uint(27211),uint(27453),uint(35421),uint(27651),uint(31822),uint(30722),uint(28113),uint(30612),uint(38095),uint(28223),uint(46107),uint(26221),uint(63253),uint(46195),uint(52931),uint(26155),uint(32372),uint(44523),uint(46261),uint(30502),uint(23722),uint(44501),uint(32306),uint(32218),uint(20651),uint(60613),uint(28751),uint(52513),uint(28553),uint(38821),uint(26023),uint(38843),uint(61053),uint(28311),uint(29213),uint(33551),uint(44083),uint(28421),uint(41012),uint(52073),uint(25451),uint(44466),uint(32671),uint(28522),uint(40317),uint(44312),uint(32473),uint(60622),uint(32891),uint(32803),uint(40163),uint(40141),uint(32407),uint(40075),uint(22411),uint(25812),uint(32517),uint(21751),uint(28412),uint(44202),uint(32627),uint(33221),uint(33111),uint(32935),uint(39437),uint(31351),uint(35412),uint(24822),uint(25152),uint(43256),uint(31813),uint(32011),uint(62813),uint(31901),uint(32077),uint(32055),uint(29512),uint(31923),uint(22323),uint(48122),uint(29622),uint(32253),uint(32275),uint(32297),uint(10021),uint(32165),uint(27123),uint(32121),uint(62351),uint(32231),uint(21821),uint(29921),uint(38896),uint(29723),uint(29811),uint(25552),uint(43177),uint(43353),uint(25222),uint(33652),uint(42913),uint(29613),uint(32552),uint(32442),uint(31153),uint(27312),uint(41901),uint(24012),uint(30911),uint(40172),uint(30933),uint(24122),uint(41571),uint(30801),uint(27422),uint(30823),uint(32486),uint(40062),uint(33322),uint(62553),uint(30515),uint(42451),uint(30713),uint(27752),uint(33212),uint(54462),uint(30273),uint(42187),uint(63222),uint(52632),uint(52522),uint(24813),uint(37563),uint(24021),uint(27523),uint(25011),uint(27413),uint(30506),uint(27721),uint(32002),uint(28051),uint(52302),uint(32222),uint(38091),uint(42196),uint(21852),uint(63213),uint(28513),uint(39433),uint(62122),uint(33511),uint(33423),uint(33313),uint(26652),uint(29151),uint(23823),uint(38685),uint(26322),uint(28953),uint(58875),uint(58831),uint(38905),uint(31342),uint(38707),uint(28623),uint(23713),uint(26212),uint(28711),uint(38695),uint(22121),uint(30221),uint(22011),uint(30551),uint(38893),uint(21923),uint(38035),uint(38871),uint(21813),uint(55753),uint(62511),uint(25852),uint(47081),uint(23221),uint(31651),uint(27722),uint(61851),uint(32962),uint(61521),uint(32676),uint(31343),uint(24422),uint(32742),uint(31211),uint(24312),uint(44771),uint(32852),uint(31101),uint(44595),uint(61213),uint(44463),uint(33512),uint(61411),uint(28052),uint(24752),uint(22253),uint(61323),uint(52101),uint(52123),uint(52211),uint(20722),uint(31752),uint(41643),uint(27911),uint(52431),uint(52541),uint(32126),uint(25223),uint(35351),uint(27713),uint(61222),uint(42193),uint(61112),uint(44692),uint(32302),uint(32522),uint(32192),uint(32214),uint(28351),uint(32632),uint(58833),uint(41907),uint(52013),uint(40081),uint(28153),uint(40147),uint(58877),uint(60452),uint(29011),uint(38836),uint(29121),uint(28923),uint(44252),uint(29253),uint(38682),uint(39012),uint(21822),uint(61046),uint(24321),uint(33723),uint(46135),uint(24123),uint(46267),uint(31422),uint(26622),uint(24013),uint(41005),uint(26512),uint(40112),uint(32931),uint(40156),uint(61512),uint(29112),uint(24413),uint(32623),uint(21012),uint(29222),uint(32645),uint(32755),uint(65221),uint(58683),uint(23313),uint(22112),uint(30212),uint(22024),uint(23511),uint(51041),uint(32007),uint(29552),uint(38097),uint(32293),uint(26921),uint(32271),uint(46263),uint(23951),uint(38031),uint(32205),uint(32227),uint(32073),uint(32051),uint(32095),uint(32491),uint(32161),uint(32513),uint(32535),uint(32557),uint(26252),uint(32447),uint(46131),uint(32403),uint(55392),uint(46197),uint(38845),uint(45396),uint(23652),uint(38691),uint(23322),uint(23212),uint(30423),uint(45836),uint(55832),uint(60751),uint(39021),uint(26811),uint(46276),uint(29411),uint(26912),uint(26723),uint(29521),uint(26613),uint(29851),uint(31413),uint(26151),uint(40165),uint(40143),uint(41432),uint(32966),uint(20713),uint(40077),uint(32482),uint(21153),uint(25821),uint(32526),uint(31105),uint(52572),uint(25953),uint(21021),uint(32636),uint(28122),uint(59431),uint(41872),uint(30511),uint(44591),uint(61952),uint(25711),uint(33252),uint(25623),uint(44503),uint(30621),uint(43741),uint(29412),uint(25351),uint(25153),uint(43521),uint(29522),uint(33121),uint(52303),uint(32967),uint(52215),uint(60623),uint(24823),uint(24911),uint(20652),uint(22412),uint(25021),uint(45171),uint(23811),uint(31911),uint(58841),uint(26913),uint(32021),uint(45391),uint(27111),uint(32307),uint(32351),uint(41871),uint(27221),uint(32175),uint(30622),uint(30512),uint(62352),uint(23723),uint(35422),uint(32791),uint(45831),uint(21752),uint(40142),uint(29852),uint(40076),uint(65212),uint(32483),uint(32527),uint(24251),uint(32571),uint(32615),uint(32637),uint(42452),uint(23952),uint(62823),uint(30613),uint(30811),uint(30723),uint(54591),uint(58872),uint(52932),uint(27212),uint(48123),uint(29821),uint(27322),uint(27652),uint(31823),uint(56263),uint(33222),uint(44775),uint(32936),uint(26253),uint(32892),uint(26451),uint(33112),uint(46196),uint(46262),uint(26011),uint(39051),uint(28752),uint(44467),uint(23512),uint(38831),uint(41902),uint(44313),uint(38897),uint(28312),uint(21013),uint(61041),uint(33552),uint(25813),uint(41572),uint(44203),uint(28422),uint(30921),uint(54463),uint(31902),uint(32012),uint(27753),uint(32056),uint(41471),uint(32276),uint(58876),uint(58832),uint(41361),uint(32232),uint(32122),uint(63223),uint(27951),uint(32166),uint(28523),uint(52752),uint(35413),uint(52642),uint(28611),uint(50143),uint(32672),uint(28413),uint(62123),uint(40173),uint(46192),uint(40063),uint(30912),uint(40151),uint(24022),uint(41581),uint(40085),uint(41691),uint(26653),uint(30802),uint(26411),uint(26521),uint(61111),uint(29051),uint(26323),uint(52092),uint(61221),uint(38092),uint(29711),uint(29513),uint(28721),uint(26213),uint(38686),uint(29623),uint(25751),uint(31352),uint(61045),uint(29152),uint(26156),uint(28712),uint(33653),uint(32795),uint(32971),uint(46271),uint(26222),uint(21853),uint(47085),uint(33521),uint(33411),uint(33323),uint(30516),uint(31871),uint(32201),uint(32223),uint(42197),uint(25452),uint(32003),uint(32091),uint(32531),uint(52633),uint(32553),uint(32443),uint(29812),uint(32575),uint(52523),uint(32311),uint(27313),uint(32641),uint(32751),uint(27511),uint(25012),uint(27423),uint(40072),uint(32487),uint(61113),uint(24322),uint(32532),uint(61223),uint(44693),uint(32576),uint(61047),uint(32642),uint(32312),uint(32202),uint(61421),uint(28053),uint(41006),uint(44253),uint(61311),uint(40082),uint(52221),uint(45397),uint(29021),uint(28911),uint(60651),uint(32796),uint(52573),uint(28713),uint(32752),uint(31212),uint(52441),uint(46145),uint(43351),uint(26821),uint(43175),uint(29813),uint(26711),uint(45837),uint(46277),uint(23222),uint(30121),uint(26623),uint(21251),uint(26513),uint(46101),uint(37561),uint(60453),uint(31652),uint(29153),uint(31872),uint(20723),uint(32092),uint(25853),uint(29351),uint(42911),uint(26051),uint(62512),uint(33711),uint(39431),uint(46136),uint(33513),uint(26522),uint(29012),uint(38683),uint(38705),uint(26412),uint(29122),uint(23451),uint(22021),uint(21911),uint(62851),uint(39013),uint(38837),uint(21823),uint(62521),uint(32303),uint(31102),uint(25752),uint(32127),uint(27151),uint(32523),uint(32545),uint(32215),uint(32105),uint(52542),uint(32193),uint(32171),uint(32611),uint(47082),uint(41644),uint(40311),uint(32435),uint(40157),uint(33051),uint(52102),uint(32963),uint(61751),uint(40113),uint(30222),uint(52212),uint(30552),uint(35352),uint(52432),uint(32655),uint(32677),uint(32633),uint(27921),uint(32743),uint(32853),uint(27811),uint(32875),uint(27723),uint(26812),uint(42181),uint(38032),uint(55393),uint(50501),uint(59432),uint(26922),uint(22311),uint(31423),uint(46132),uint(22113),uint(41873),uint(10111),uint(23323),uint(23521),uint(30125),uint(62811),uint(31753),uint(30455),uint(26152),uint(30411),uint(23213),uint(55833),uint(25822),uint(30213),uint(44592),uint(27912),uint(28352),uint(25712),uint(41015),uint(41521),uint(61513),uint(38846),uint(38692),uint(22421),uint(39022),uint(32162),uint(32206),uint(28123),uint(41002),uint(25721),uint(32052),uint(28321),uint(28211),uint(44777),uint(32096),uint(65222),uint(32492),uint(32272),uint(25611),uint(44271),uint(40166),uint(41442),uint(61522),uint(61852),uint(41332),uint(32932),uint(32536),uint(32646),uint(31106),uint(21022),uint(32756),uint(29421),uint(43523),uint(43743),uint(29553),uint(61412),uint(38701),uint(24753),uint(29751),uint(22122),uint(48125),uint(51042),uint(22012),uint(29113),uint(43171),uint(29223),uint(63251),uint(60752),uint(24423),uint(24313),uint(27222),uint(41441),uint(31151),uint(23513),uint(31107),uint(31921),uint(30931),uint(41573),uint(45832),uint(31811),uint(30711),uint(32075),uint(32097),uint(30623),uint(30821),uint(23821),uint(26452),uint(28212),uint(58873),uint(44776),uint(54592),uint(32053),uint(32471),uint(41903),uint(32405),uint(32295),uint(46272),uint(23711),uint(32207),uint(32251),uint(30513),uint(47086),uint(26012),uint(38832),uint(61042),uint(28322),uint(39052),uint(22413),uint(41001),uint(43742),uint(43522),uint(52216),uint(41331),uint(25352),uint(28621),uint(28511),uint(44521),uint(26021),uint(61051),uint(60611),uint(32792),uint(26153),uint(25713),uint(40152),uint(40086),uint(28313),uint(25823),uint(22422),uint(44081),uint(28423),uint(32572),uint(32616),uint(28951),uint(41362),uint(33122),uint(28753),uint(35423),uint(24811),uint(29853),uint(37565),uint(30271),uint(65213),uint(24921),uint(42453),uint(32022),uint(31912),uint(29523),uint(29413),uint(38093),uint(22312),uint(45392),uint(32352),uint(29611),uint(29721),uint(52933),uint(42915),uint(27112),uint(32176),uint(29712),uint(29822),uint(33553),uint(61121),uint(33421),uint(61055),uint(25211),uint(25013),uint(25453),uint(38841),uint(38687),uint(27213),uint(32475),uint(32651),uint(32673),uint(32431),uint(40315),uint(27323),uint(32805),uint(41472),uint(24023),uint(40161),uint(30922),uint(27521),uint(40073),uint(24111),uint(41582),uint(27411),uint(30812),uint(41692),uint(32541),uint(33311),uint(33113),uint(27653),uint(39435),uint(32893),uint(32937),uint(32871),uint(24551),uint(63211),uint(52643),uint(52753),uint(52511),uint(24912),uint(24252),uint(27512),uint(30913),uint(20653),uint(25022),uint(30451),uint(30517),uint(62551),uint(52093),uint(52071),uint(31903),uint(31881),uint(32233),uint(32255),uint(38036),uint(27952),uint(32211),uint(30275),uint(32057),uint(44772),uint(32013),uint(32123),uint(42185),uint(32101),uint(21753),uint(28612),uint(44596),uint(46105),uint(62111),uint(33522),uint(26751),uint(33412),uint(23812),uint(29052),uint(26311),uint(26421),uint(38872),uint(26157),uint(46193),uint(58842),uint(38696),uint(31331),uint(26223),uint(28722),uint(31221),uint(38706),uint(30452),uint(26413),uint(22022),uint(51043),uint(30122),uint(62852),uint(25951),uint(21912),uint(42195),uint(30276),uint(25621),uint(62522),uint(25753),uint(21252),uint(61752),uint(27711),uint(32973),uint(48126),uint(32951),uint(27513),uint(32797),uint(27953),uint(31332),uint(32753),uint(24411),uint(31222),uint(24323),uint(27821),uint(33721),uint(50141),uint(39432),uint(33523),uint(33413),uint(28151),uint(58681),uint(61422),uint(61312),uint(52222),uint(41522),uint(31653),uint(62113),uint(61651),uint(41632),uint(27922),uint(32005),uint(52442),uint(24552),uint(27812),uint(32071),uint(21151),uint(32093),uint(25212),uint(31103),uint(61211),uint(61123),uint(32291),uint(42182),uint(61057),uint(32511),uint(32533),uint(32313),uint(32203),uint(32555),uint(32225),uint(32577),uint(32643),uint(44593),uint(32621),uint(44461),uint(40312),uint(30553),uint(20711),uint(61321),uint(32445),uint(32401),uint(44021),uint(38825),uint(22251),uint(28912),uint(23452),uint(38693),uint(29352),uint(39023),uint(38891),uint(21811),uint(38847),uint(21921),uint(38033),uint(55751),uint(46102),uint(33712),uint(46146),uint(24112),uint(43251),uint(26721),uint(31411),uint(26611),uint(29022),uint(41016),uint(26523),uint(40167),uint(40145),uint(33052),uint(32876),uint(61413),uint(61853),uint(61523),uint(29123),uint(44272),uint(29211),uint(21023),uint(28551),uint(32612),uint(32656),uint(41003),uint(29013),uint(30223),uint(22123),uint(22013),uint(23522),uint(30421),uint(35353),uint(60753),uint(26813),uint(43172),uint(32172),uint(32216),uint(60621),uint(32546),uint(32106),uint(27152),uint(32436),uint(46142),uint(30126),uint(56261),uint(42917),uint(38702),uint(23311),uint(23223),uint(30412),uint(60652),uint(63252),uint(29422),uint(26822),uint(46265),uint(26923),uint(26712),uint(50502),uint(22321),uint(27121),uint(29752),uint(46133),uint(27451),uint(32757),uint(41641),uint(32801),uint(40176),uint(40066),uint(41333),uint(62821),uint(32933),uint(41311),uint(32515),uint(32537),uint(32647),uint(62513),uint(32625),uint(26052),uint(28111),uint(42191),uint(28221),uint(27913),uint(25722),uint(28353),uint(30456),uint(41905),uint(52121),uint(25612),uint(52011),uint(29423),uint(52072),uint(29511),uint(48121),uint(29753),uint(29621),uint(48011),uint(42916),uint(60612),uint(24812),uint(38833),uint(24922),uint(22423),uint(39053),uint(32076),uint(30721),uint(23822),uint(31922),uint(22313),uint(32406),uint(30413),uint(30501),uint(32296),uint(30457),uint(30611),uint(32252),uint(27122),uint(23712),uint(32802),uint(62121),uint(27452),uint(40153),uint(40175),uint(40065),uint(32472),uint(40087),uint(37566),uint(35411),uint(21851),uint(46106),uint(65223),uint(32516),uint(26651),uint(32626),uint(30127),uint(10121),uint(62812),uint(30712),uint(23721),uint(10011),uint(45393),uint(27113),uint(59433),uint(27223),uint(27421),uint(30272),uint(27311),uint(45833),uint(31812),uint(33321),uint(41011),uint(28213),uint(33651),uint(33211),uint(27751),uint(41363),uint(52217),uint(46141),uint(33123),uint(39436),uint(44522),uint(63221),uint(46273),uint(47087),uint(26022),uint(41693),uint(28521),uint(31152),uint(38842),uint(23523),uint(28323),uint(44082),uint(61052),uint(30822),uint(28411),uint(30932),uint(31913),uint(32023),uint(32001),uint(23813),uint(62552),uint(58843),uint(32221),uint(44773),uint(63212),uint(31341),uint(32177),uint(32617),uint(28512),uint(44597),uint(28622),uint(40316),uint(52631),uint(62112),uint(46137),uint(24253),uint(52543),uint(32441),uint(44465),uint(40162),uint(32353),uint(32793),uint(52521),uint(44201),uint(26752),uint(24011),uint(24121),uint(44311),uint(30923),uint(32485),uint(32551),uint(30813),uint(32573),uint(26422),uint(61122),uint(26312),uint(52103),uint(28952),uint(38895),uint(38037),uint(52433),uint(29722),uint(38873),uint(52213),uint(38697),uint(29612),uint(52301),uint(43255),uint(47083),uint(61056),uint(29053),uint(28921),uint(29251),uint(26453),uint(26211),uint(28723),uint(32872),uint(26321),uint(32806),uint(28613),uint(43176),uint(43352),uint(25551),uint(26013),uint(61043),uint(41007),uint(33422),uint(33312),uint(54593),uint(30505),uint(25221),uint(25023),uint(54461),uint(31882),uint(42186),uint(42912),uint(32102),uint(32212),uint(25353),uint(29823),uint(32476),uint(32542),uint(32432),uint(52512),uint(29911),uint(32652),uint(29713),uint(32256),uint(37562),uint(27522),uint(40171),uint(40083),uint(27412),uint(40061)})&.Rotten:== uint(3171)))|(.Rotten:== uint(40051)&.Peel:->contains($uint,[]uint{uint(12861),uint(16623),uint(16161),uint(19311),uint(16333),uint(11172),uint(15321),uint(12611),uint(13381),uint(16241),uint(19312),uint(18221),uint(15322),uint(12612),uint(13391),uint(12613),uint(16621),uint(15323),uint(16331),uint(13401),uint(16622),uint(11171),uint(16332),uint(13371)})))|(.Peel:->contains($uint,[]uint{uint(32450),uint(32100)})&.Rotten:== uint(1002)))|(.Rotten:== uint(1022)&.Peel:->contains($uint,[]uint{uint(1272111),uint(14191121),uint(12721122),uint(6113111),uint(1279111),uint(11221123),uint(1392113),uint(1073111),uint(1200113),uint(15271121),uint(1257112),uint(1107117),uint(1283115),uint(1473115),uint(1221113),uint(1216115),uint(1361112),uint(1407112),uint(1376111),uint(18531122),uint(12021123),uint(17711121),uint(1122116),uint(12001121),uint(15631122),uint(1518112),uint(1563113),uint(1119111),uint(2770121),uint(1500112),uint(1733112),uint(2267111),uint(14681123),uint(1212111),uint(1672111),uint(10731121),uint(1469111),uint(12111123),uint(11301122),uint(13761123),uint(1476111),uint(1771113),uint(12571122),uint(1421112),uint(1476112),uint(1107113),uint(14691123),uint(1180112),uint(14211123),uint(2267112),uint(1241115),uint(1469112),uint(14741121),uint(1406117),uint(1361116),uint(1071113),uint(12791123),uint(61131123),uint(1211112),uint(11311122),uint(1131113),uint(1970113),uint(15181123),uint(1515112),uint(1762111),uint(1473111),uint(11851122),uint(11071123),uint(1407116),uint(1211116),uint(12021122),uint(1122111),uint(16721122),uint(1853111),uint(12211121),uint(1559113),uint(1279115),uint(1468113),uint(1272115),uint(1406113),uint(61101122),uint(13611123),uint(19701122),uint(1073112),uint(1216116),uint(1406112),uint(12721123),uint(11221122),uint(14191122),uint(1257111),uint(1392112),uint(13521123),uint(14731121),uint(1131112),uint(1733113),uint(1185115),uint(1473116),uint(1559117),uint(1212112),uint(1407111),uint(11301123),uint(22671121),uint(1107111),uint(1518111),uint(18531121),uint(1421111),uint(1352111),uint(1563112),uint(1684112),uint(1361113),uint(12001122),uint(12571123),uint(2770122),uint(14681122),uint(10731122),uint(1122115),uint(12791121),uint(6113112),uint(1361117),uint(12791122),uint(19701121),uint(14691122),uint(1211113),uint(1216111),uint(6110111),uint(1202111),uint(11801123),uint(1476113),uint(1563111),uint(1063115),uint(1559116),uint(15631123),uint(14741122),uint(1527113),uint(1406116),uint(1107112),uint(1684113),uint(16721121),uint(1500113),uint(1419117),uint(1469113),uint(1474111),uint(1063111),uint(11071122),uint(11851123),uint(1107116),uint(61101121),uint(1211117),uint(1283113),uint(1762112),uint(1419113),uint(1939121),uint(1185111),uint(1180113),uint(1515111),uint(1130113),uint(1473112),uint(14211122),uint(1407115),uint(1352115),uint(1970112),uint(14071123),uint(11311123),uint(1559112),uint(12831121),uint(14731122),uint(1672113),uint(15271123),uint(15181121),uint(1473113),uint(1216117),uint(1523112),uint(1119113),uint(1406111),uint(1073113),uint(1131111),uint(12121121),uint(12211123),uint(22671122),uint(1279113),uint(1684111),uint(1241117),uint(13521122),uint(1185116),uint(1200111),uint(1063117),uint(10731123),uint(1212113),uint(6113113),uint(16841123),uint(14681121),uint(13761121),uint(14191123),uint(1283117),uint(1071111),uint(17711123),uint(1473117),uint(12001123),uint(11221121),uint(1122113),uint(13611121),uint(1419116),uint(1970111),uint(1853113),uint(1279117),uint(12111121),uint(1202112),uint(16841122),uint(1527112),uint(1559115),uint(14691121),uint(1063116),uint(1352112),uint(1272117),uint(1468111),uint(1474112),uint(14741123),uint(1406115),uint(1523113),uint(1130112),uint(1419112),uint(14071122),uint(1559111),uint(12121122),uint(1392111),uint(1063112),uint(1272113),uint(11071121),uint(1241113),uint(1762113),uint(1352116),uint(1185112),uint(12831122),uint(1216112),uint(61131121),uint(1107115),uint(11801122),uint(6110112),uint(1283112),uint(14211121),uint(11301121),uint(1376112),uint(1421113),uint(1221112),uint(18531123),uint(1672112),uint(12211122),uint(1185113),uint(1361111),uint(1283116),uint(1407113),uint(1279112),uint(1419111),uint(1518113),uint(22671123),uint(1272112),uint(1122117),uint(15271122),uint(1523111),uint(1119112),uint(1241111),uint(1211111),uint(13761122),uint(1071112),uint(1257113),uint(1185117),uint(12571121),uint(1733111),uint(1500111),uint(14731123),uint(17711122),uint(1771112),uint(1361115),uint(1200112),uint(15631121),uint(13521121),uint(1279116),uint(12111122),uint(1771111),uint(1283111),uint(1419115),uint(16841121),uint(1853112),uint(13611122),uint(1468112),uint(1272116),uint(2267113),uint(61101123),uint(1527111),uint(1352113),uint(11851121),uint(11311121),uint(1202113),uint(1241116),uint(1180111),uint(1407117),uint(1122112),uint(1216113),uint(1352117),uint(14071121),uint(12121123),uint(12831123),uint(19701123),uint(1130111),uint(1241112),uint(61131122),uint(16721123),uint(6110113),uint(12021121),uint(1474113),uint(1376113),uint(11801121),uint(12721121),uint(15181122),uint(1063113),uint(1221111),uint(1211115)})))|(.Rotten:== uint(20104)&.Peel:->contains($uint,[]uint{uint(34795),uint(34135),uint(21675),uint(64951),uint(46076),uint(46406),uint(58052),uint(46305),uint(46327),uint(46745),uint(21671),uint(46067),uint(46837),uint(47167),uint(30105),uint(55711),uint(46306),uint(30106),uint(46746),uint(34796),uint(46407),uint(46385),uint(34136),uint(64952),uint(46645),uint(34545),uint(46315),uint(46205),uint(46785),uint(46345),uint(55721),uint(58053),uint(46077),uint(28025),uint(55712),uint(28026),uint(47165),uint(46395),uint(46307),uint(30107),uint(46065),uint(46747),uint(34797),uint(34137),uint(46787),uint(46325),uint(46347),uint(9591),uint(46646),uint(46316),uint(46206),uint(34546),uint(34547),uint(46346),uint(46786),uint(46386),uint(55722),uint(46405),uint(46317),uint(9592),uint(46207),uint(46075),uint(46647),uint(47166),uint(46396),uint(28027),uint(58051),uint(46326),uint(46066)})))|(.Rotten:== uint(20103)&.Peel:->contains($uint,[]uint{uint(32296),uint(37567),uint(38095),uint(32617),uint(32485),uint(32806),uint(32256),uint(32556),uint(32217),uint(32657),uint(38096),uint(32297),uint(26155),uint(32486),uint(52215),uint(32257),uint(32807),uint(32675),uint(32676),uint(32557),uint(32218),uint(52216),uint(32615),uint(26156),uint(37565),uint(32487),uint(32215),uint(32655),uint(32677),uint(38097),uint(32616),uint(52217),uint(37566),uint(32255),uint(32805),uint(26157),uint(32555),uint(32656),uint(32216),uint(32295)})))|(.Rotten:== uint(5006)&.Peel:->contains($uint,[]uint{uint(16033),uint(15703),uint(15681),uint(17991),uint(14581),uint(12623),uint(12271),uint(16112),uint(10542),uint(11092),uint(10762),uint(13191),uint(13851),uint(13873),uint(10142),uint(14181),uint(14203),uint(12663),uint(12641),uint(10771),uint(15052),uint(13622),uint(14172),uint(14872),uint(11471),uint(19461),uint(13882),uint(11713),uint(14542),uint(15743),uint(11462),uint(13552),uint(14863),uint(15501),uint(15413),uint(15193),uint(17692),uint(16113),uint(10543),uint(15431),uint(13231),uint(14551),uint(14573),uint(14661),uint(10622),uint(18471),uint(15752),uint(18581),uint(14173),uint(13183),uint(14591),uint(10772),uint(13623),uint(15704),uint(15682),uint(10763),uint(18001),uint(11093),uint(14582),uint(15502),uint(11463),uint(14182),uint(12651),uint(17693),uint(16571),uint(12642),uint(13852),uint(15053),uint(17992),uint(15753),uint(10491),uint(15951),uint(16061),uint(15621),uint(14543),uint(14521),uint(14873),uint(13553),uint(11472),uint(13883),uint(14583),uint(10544),uint(14561),uint(11094),uint(15331),uint(15111),uint(14891),uint(19981),uint(14231),uint(18472),uint(15432),uint(18582),uint(14552),uint(14662),uint(19462),uint(12911),uint(14592),uint(12643),uint(12621),uint(16761),uint(16541),uint(19982),uint(10421),uint(15683),uint(14522),uint(12652),uint(15701),uint(16031),uint(17993),uint(15503),uint(13853),uint(14183),uint(16572),uint(15191),uint(10492),uint(14861),uint(15411),uint(15433),uint(13871),uint(14201),uint(14553),uint(14663),uint(12441),uint(11473),uint(15952),uint(16062),uint(15622),uint(12661),uint(16762),uint(16542),uint(18011),uint(18473),uint(11711),uint(18583),uint(14892),uint(10422),uint(15332),uint(19463),uint(14562),uint(12912),uint(14232),uint(15741),uint(10761),uint(10541),uint(16573),uint(16111),uint(19983),uint(11091),uint(12622),uint(14571),uint(14593),uint(15623),uint(15953),uint(16063),uint(14171),uint(12662),uint(15051),uint(14523),uint(12653),uint(13621),uint(16032),uint(13181),uint(12913),uint(13551),uint(13881),uint(15742),uint(15412),uint(15192),uint(14202),uint(10141),uint(17691),uint(14862),uint(10493),uint(11461),uint(13872),uint(10423),uint(10621),uint(16543),uint(11712),uint(15333),uint(15751),uint(14563),uint(14541),uint(14233),uint(14893),uint(14871)})))|(.Peel:->contains($uint,[]uint{uint(21341),uint(21342)})&.Rotten:== uint(10009)))|(.Rotten:== uint(50105)&.Peel:->contains($uint,[]uint{uint(14521),uint(18802),uint(14873),uint(14235),uint(12893),uint(13333),uint(11472),uint(16567),uint(61766),uint(11186),uint(13553),uint(13575),uint(61141),uint(13597),uint(11463),uint(12233),uint(12343),uint(12673),uint(12651),uint(62285),uint(62307),uint(62505),uint(62527),uint(62417),uint(62166),uint(62496),uint(62276),uint(12625),uint(61066),uint(62606),uint(14618),uint(18111),uint(14486),uint(19101),uint(13606),uint(13562),uint(16105),uint(12352),uint(61946),uint(12682),uint(13602),uint(17707),uint(13866),uint(16101),uint(62355),uint(62377),uint(62157),uint(62487),uint(12656),uint(62575),uint(62597),uint(18807),uint(12898),uint(14165),uint(14231),uint(19885),uint(14605),uint(14495),uint(62566),uint(61145),uint(13857),uint(18112),uint(13571),uint(13593),uint(11182),uint(14865),uint(14535),uint(14491),uint(13567),uint(14161),uint(18116),uint(12357),uint(12335),uint(12665),uint(19106),uint(11477),uint(61026),uint(12687),uint(61765),uint(61787),uint(61897),uint(16563),uint(16915),uint(62425),uint(62535),uint(62557),uint(62315),uint(62337),uint(14526),uint(14482),uint(14614),uint(61635),uint(12353),uint(61767),uint(62075),uint(12683),uint(16106),uint(12661),uint(62317),uint(62295),uint(62515),uint(62185),uint(62537),uint(62625),uint(11473),uint(62427),uint(19881),uint(62405),uint(14522),uint(12331),uint(13576),uint(14236),uint(11187),uint(12652),uint(12894),uint(15415),uint(19102),uint(14166),uint(14232),uint(13572),uint(14496),uint(12626),uint(16911),uint(11183),uint(62286),uint(65115),uint(62506),uint(15411),uint(14487),uint(14531),uint(62167),uint(61947),uint(62365),uint(62277),uint(14861),uint(62497),uint(62475),uint(13563),uint(13585),uint(13607),uint(62585),uint(61142),uint(62607),uint(18803),uint(19886),uint(62576),uint(12336),uint(61146),uint(14483),uint(14527),uint(13867),uint(14505),uint(13603),uint(14615),uint(12657),uint(61111),uint(18113),uint(61067),uint(13581),uint(16102),uint(14606),uint(19103),uint(62356),uint(16912),uint(18117),uint(12895),uint(61027),uint(61775),uint(13555),uint(13577),uint(13335),uint(62545),uint(62567),uint(62435),uint(15416),uint(12235),uint(14866),uint(12345),uint(12653),uint(12675),uint(19107),uint(62426),uint(16916),uint(62316),uint(62536),uint(14492),uint(14536),uint(14162),uint(12666),uint(11465),uint(14532),uint(14862),uint(11461),uint(61777),uint(13586),uint(16107),uint(61636),uint(12332),uint(14875),uint(12662),uint(62296),uint(62318),uint(62076),uint(62516),uint(14501),uint(14523),uint(62186),uint(14611),uint(62406),uint(62626),uint(14237),uint(62155),uint(16103),uint(62507),uint(62485),uint(62375),uint(62287),uint(61143),uint(65116),uint(62595),uint(14607),uint(14871),uint(14167),uint(14233),uint(14497),uint(19882),uint(13331),uint(13595),uint(13551),uint(13573),uint(12231),uint(12341),uint(12627),uint(15412),uint(12891),uint(12671),uint(13591),uint(14163),uint(13855),uint(62366),uint(62278),uint(12337),uint(12667),uint(62498),uint(62476),uint(62586),uint(61895),uint(61785),uint(16561),uint(62115),uint(16913),uint(62335),uint(62357),uint(14616),uint(62555),uint(62577),uint(14506),uint(17705),uint(61112),uint(13582),uint(14876),uint(16565),uint(16917),uint(14502),uint(14612),uint(13556),uint(13336),uint(11475),uint(12236),uint(12346),uint(12896),uint(61147),uint(12676),uint(11466),uint(15417),uint(61776),uint(14867),uint(62436),uint(62546),uint(19887),uint(14537),uint(14493),uint(12342),uint(12672),uint(12628),uint(62306),uint(62526),uint(12892),uint(13332),uint(11462),uint(62416),uint(15413),uint(14533),uint(14863),uint(12232),uint(13587),uint(62605),uint(62627),uint(13565),uint(18801),uint(16566),uint(12355),uint(12333),uint(12663),uint(12685),uint(13561),uint(13583),uint(14507),uint(13605),uint(14485),uint(18805),uint(12681),uint(61637),uint(61945),uint(19883),uint(62187),uint(62165),uint(62275),uint(62077),uint(62517),uint(62495),uint(62407),uint(62297),uint(11185),uint(65117),uint(62156),uint(62376),uint(62288),uint(12351),uint(14872),uint(62486),uint(13552),uint(13596),uint(62596),uint(61065),uint(11471),uint(11467),uint(62477),uint(62367),uint(62587),uint(62565),uint(11181),uint(12347),uint(19105),uint(12237),uint(16562),uint(61113),uint(61025),uint(13856),uint(17706),uint(12668),uint(18806),uint(13592),uint(14617),uint(61786),uint(13566),uint(61896),uint(62556),uint(62336),uint(14877),uint(12356),uint(12664),uint(12686),uint(62415),uint(16795),uint(62305),uint(62525),uint(62547),uint(14481),uint(14613),uint(13865),uint(14503),uint(14525),uint(62437),uint(12655),uint(18115),uint(11476),uint(12677),uint(12897),uint(13601),uint(13557),uint(13337)})))|(.Peel:->contains($uint,[]uint{uint(454),uint(2651113),uint(2684112),uint(2677112),uint(230),uint(1170111),uint(2664111),uint(455),uint(222),uint(231),uint(2672113),uint(2679113),uint(1170112),uint(2677111),uint(2684111),uint(2672111),uint(2651111),uint(2679111),uint(223),uint(2664112),uint(232),uint(2679112),uint(228),uint(2672112),uint(1170113),uint(2651112),uint(224),uint(2664113),uint(233),uint(453),uint(2684113),uint(2677113),uint(229)})&.Rotten:== uint(4041)))|(.Peel:->contains($uint,[]uint{uint(24413),uint(32623),uint(24523),uint(12186),uint(32711),uint(4196),uint(24633),uint(24611),uint(11856),uint(28122),uint(19846),uint(24721),uint(24853),uint(29112),uint(3536),uint(23951),uint(24831),uint(4746),uint(15587),uint(4526),uint(11306),uint(33151),uint(32953),uint(32931),uint(32821),uint(39623),uint(1257),uint(1235),uint(1213),uint(14905),uint(1345),uint(14685),uint(35122),uint(29772),uint(31413),uint(17787),uint(9357),uint(23313),uint(34924),uint(38532),uint(17941),uint(13022),uint(35012),uint(9555),uint(29222),uint(12846),uint(23731),uint(23621),uint(1807),uint(26252),uint(60346),uint(26723),uint(29332),uint(26811),uint(15235),uint(23753),uint(63756),uint(26032),uint(29552),uint(26921),uint(18667),uint(26833),uint(63646),uint(25922),uint(15125),uint(1587),uint(18535),uint(23511),uint(27031),uint(27053),uint(4042),uint(15037),uint(63536),uint(23533),uint(39522),uint(39632),uint(6726),uint(23322),uint(13475),uint(13761),uint(35813),uint(60487),uint(34066),uint(36011),uint(12815),uint(23234),uint(26613),uint(23212),uint(12837),uint(2797),uint(35923),uint(60597),uint(33252),uint(36121),uint(12727),uint(14135),uint(36033),uint(12793),uint(19701),uint(36253),uint(2005),uint(12573),uint(14003),uint(23806),uint(22112),uint(60355),uint(29433),uint(29411),uint(19481),uint(29521),uint(29323),uint(23652),uint(16722),uint(14157),uint(26151),uint(26912),uint(63945),uint(10712),uint(27022),uint(64055),uint(4007),uint(5186),uint(63747),uint(25953),uint(64187),uint(64165),uint(30951),uint(5076),uint(25931),uint(10976),uint(27132),uint(20735),uint(22222),uint(3765),uint(25623),uint(63835),uint(25733),uint(30753),uint(22332),uint(25711),uint(11196),uint(30731),uint(27352),uint(3655),uint(30511),uint(30423),uint(30621),uint(64517),uint(64495),uint(52127),uint(30533),uint(35553),uint(28012),uint(25051),uint(32812),uint(64275),uint(64297),uint(64385),uint(64407),uint(32922),uint(35421),uint(35311),uint(30313),uint(27013),uint(31052),uint(63936),uint(63958),uint(13537),uint(35223),uint(63716),uint(5635),uint(27123),uint(35113),uint(9872),uint(63606),uint(64046),uint(38321),uint(30722),uint(27321),uint(14065),uint(26551),uint(27431),uint(17356),uint(13845),uint(9718),uint(27211),uint(30612),uint(27233),uint(63826),uint(34475),uint(19485),uint(23612),uint(26353),uint(34387),uint(26331),uint(60337),uint(14197),uint(64376),uint(30524),uint(26111),uint(12833),uint(23722),uint(27453),uint(19353),uint(26133),uint(14131),uint(26221),uint(64486),uint(25913),uint(32152),uint(12635),uint(12723),uint(64156),uint(19111),uint(23392),uint(26023),uint(64266),uint(10972),uint(4117),uint(39553),uint(39531),uint(35712),uint(11192),uint(3026),uint(35822),uint(33837),uint(28355),uint(11346),uint(35932),uint(11302),uint(19815),uint(52805),uint(11236),uint(33331),uint(11456),uint(11258),uint(33221),uint(19705),uint(28113),uint(15596),uint(36152),uint(24813),uint(25011),uint(22424),uint(7716),uint(24923),uint(19925),uint(13471),uint(25033),uint(33551),uint(65137),uint(32451),uint(17646),uint(32231),uint(4016),uint(32121),uint(10633),uint(11073),uint(17866),uint(64763),uint(11227),uint(11337),uint(64565),uint(14716),uint(22213),uint(11315),uint(22323),uint(33111),uint(20871),uint(33133),uint(33023),uint(35522),uint(32913),uint(22411),uint(24932),uint(22433),uint(35412),uint(32671),uint(18592),uint(35324),uint(22785),uint(15156),uint(31021),uint(22675),uint(18922),uint(13506),uint(12217),uint(6845),uint(12195),uint(29512),uint(31153),uint(12415),uint(24052),uint(1407),uint(17391),uint(13616),uint(61107),uint(61085),uint(24712),uint(1077),uint(34752),uint(24822),uint(23832),uint(2023),uint(23854),uint(2111),uint(29776),uint(11557),uint(8926),uint(34246),uint(34202),uint(60667),uint(38022),uint(16665),uint(21905),uint(34466),uint(31901),uint(27423),uint(35611),uint(2837),uint(2815),uint(15152),uint(27313),uint(35523),uint(35413),uint(27775),uint(38021),uint(11223),uint(2727),uint(31902),uint(10717),uint(18927),uint(15636),uint(11377),uint(14712),uint(15592),uint(23252),uint(31022),uint(34951),uint(30912),uint(32232),uint(32122),uint(32452),uint(23912),uint(24022),uint(26521),uint(26433),uint(2573),uint(23824),uint(34731),uint(26411),uint(4135),uint(26213),uint(34753),uint(26323),uint(34203),uint(63817),uint(5556),uint(34247),uint(13656),uint(12631),uint(22152),uint(12411),uint(63575),uint(63905),uint(29051),uint(20995),uint(13766),uint(17497),uint(12125),uint(12213),uint(34467),uint(60385),uint(25751),uint(34445),uint(61133),uint(64345),uint(64455),uint(38351),uint(35852),uint(64477),uint(3475),uint(12015),uint(23032),uint(38813),uint(64125),uint(60627),uint(33851),uint(33807),uint(64257),uint(64235),uint(64147),uint(26222),uint(22051),uint(32751),uint(63566),uint(16287),uint(1856),uint(26134),uint(26112),uint(16727),uint(63896),uint(1306),uint(1196),uint(12116),uint(29152),uint(2186),uint(33411),uint(33433),uint(5587),uint(22535),uint(33521),uint(60416),uint(64226),uint(64336),uint(12006),uint(33213),uint(23151),uint(9375),uint(64116),uint(13612),uint(11852),uint(13502),uint(15077),uint(9705),uint(31453),uint(30252),uint(31431),uint(19486),uint(38052),uint(14725),uint(4685),uint(14681),uint(19112),uint(24352),uint(35052),uint(35272),uint(19926),uint(26631),uint(64446),uint(26653),uint(25012),uint(64556),uint(8042),uint(14747),uint(5037),uint(26851),uint(32113),uint(34832),uint(32311),uint(5235),uint(7866),uint(32333),uint(32421),uint(12842),uint(4905),uint(19816),uint(19706),uint(10035),uint(15275),uint(5125),uint(34722),uint(15187),uint(5103),uint(8535),uint(16723),uint(21901),uint(17862),uint(30221),uint(22121),uint(64525),uint(61102),uint(65185),uint(22253),uint(25632),uint(34436),uint(22231),uint(64547),uint(35751),uint(22451),uint(4716),uint(64437),uint(64415),uint(26622),uint(5156),uint(12002),uint(29451),uint(33512),uint(33622),uint(12112),uint(1227),uint(22671),uint(13476),uint(12156),uint(3396),uint(60486),uint(31211),uint(13762),uint(26952),uint(38822),uint(31233),uint(33732),uint(36323),uint(60596),uint(22781),uint(3506),uint(31321),uint(36213),uint(24532),uint(10031),uint(32632),uint(32852),uint(15271),uint(15425),uint(19116),uint(15183),uint(24312),uint(24752),uint(9635),uint(31123),uint(32412),uint(31013),uint(15865),uint(1315),uint(2217),uint(1337),uint(28052),uint(6665),uint(65515),uint(6951),uint(12816),uint(22033),uint(30551),uint(24422),uint(22011),uint(21923),uint(27251),uint(31312),uint(35351),uint(24651),uint(37775),uint(31422),uint(13841),uint(24321),uint(14215),uint(35021),uint(35131),uint(20876),uint(37621),uint(14105),uint(9736),uint(17396),uint(14017),uint(14061),uint(24123),uint(34713),uint(30652),uint(28021),uint(13027),uint(34933),uint(14765),uint(28153),uint(14743),uint(34911),uint(34823),uint(2415),uint(14721),uint(34427),uint(4197),uint(30322),uint(30212),uint(24431),uint(24453),uint(17717),uint(2635),uint(17805),uint(49751),uint(11232),uint(23221),uint(11254),uint(63535),uint(23353),uint(23331),uint(23133),uint(33877),uint(34097),uint(21932),uint(23111),uint(23397),uint(16846),uint(39513),uint(23023),uint(29033),uint(63755),uint(29011),uint(28351),uint(4065),uint(4043),uint(34185),uint(29121),uint(11452),uint(63645),uint(5596),uint(63557),uint(18597),uint(64195),uint(64107),uint(24013),uint(18531),uint(3845),uint(64327),uint(26512),uint(64305),uint(1258),uint(36112),uint(64217),uint(1236),uint(3537),uint(36332),uint(13533),uint(33613),uint(33723),uint(23551),uint(38853),uint(11078),uint(36222),uint(33811),uint(33833),uint(28747),uint(38831),uint(18663),uint(30521),uint(22333),uint(22421),uint(30653),uint(14101),uint(2006),uint(34714),uint(13925),uint(22113),uint(30213),uint(26812),uint(63647),uint(26152),uint(18536),uint(63537),uint(27032),uint(30411),uint(26922),uint(30323),uint(14211),uint(25712),uint(27252),uint(31313),uint(14761),uint(64065),uint(17392),uint(64197),uint(25932),uint(63757),uint(23323),uint(63735),uint(64175),uint(31423),uint(13023),uint(38533),uint(63845),uint(14717),uint(23213),uint(14695),uint(63955),uint(34186),uint(25052),uint(19702),uint(33152),uint(4527),uint(4725),uint(36012),uint(28022),uint(64527),uint(19482),uint(36122),uint(64395),uint(32932),uint(64417),uint(64307),uint(64285),uint(64505),uint(39633),uint(4747),uint(33812),uint(65187),uint(16666),uint(32822),uint(5275),uint(13507),uint(5187),uint(39611),uint(5077),uint(13617),uint(24612),uint(39523),uint(24722),uint(11074),uint(11316),uint(11338),uint(24832),uint(22223),uint(22311),uint(27705),uint(11307),uint(15236),uint(28013),uint(64496),uint(15126),uint(15038),uint(8355),uint(64166),uint(64386),uint(14906),uint(17621),uint(10713),uint(10735),uint(64298),uint(24511),uint(35211),uint(35321),uint(24533),uint(30952),uint(24621),uint(3766),uint(35123),uint(32712),uint(22122),uint(17885),uint(3656),uint(20736),uint(7717),uint(28123),uint(22232),uint(24753),uint(24951),uint(24731),uint(1135),uint(11197),uint(30622),uint(35013),uint(30732),uint(7871),uint(23807),uint(29113),uint(12825),uint(23851),uint(12847),uint(23653),uint(29333),uint(29311),uint(2125),uint(60356),uint(18721),uint(29553),uint(29531),uint(29421),uint(61082),uint(61126),uint(22012),uint(23631),uint(23521),uint(14136),uint(24423),uint(21902),uint(19117),uint(6727),uint(14686),uint(12165),uint(24313),uint(35713),uint(12187),uint(11857),uint(34155),uint(35823),uint(35911),uint(36021),uint(9556),uint(35933),uint(34067),uint(24933),uint(33121),uint(24911),uint(52595),uint(20872),uint(36153),uint(25021),uint(24823),uint(11457),uint(32923),uint(52815),uint(33451),uint(33011),uint(15276),uint(29522),uint(11853),uint(15188),uint(32813),uint(29412),uint(4105),uint(61086),uint(39532),uint(4215),uint(17625),uint(17647),uint(3027),uint(6846),uint(11237),uint(11303),uint(11193),uint(33253),uint(24713),uint(33231),uint(14132),uint(23723),uint(23613),uint(30534),uint(30512),uint(14066),uint(12843),uint(21906),uint(9376),uint(5636),uint(35422),uint(26913),uint(23393),uint(35312),uint(27023),uint(63946),uint(18725),uint(4017),uint(18923),uint(17555),uint(24053),uint(24031),uint(64056),uint(27133),uint(32153),uint(27111),uint(32131),uint(18593),uint(14682),uint(1078),uint(26552),uint(12007),uint(23921),uint(27353),uint(27221),uint(12117),uint(12161),uint(26332),uint(23811),uint(27331),uint(9706),uint(63836),uint(23833),uint(14726),uint(23855),uint(32351),uint(2112),uint(23622),uint(60347),uint(60325),uint(23732),uint(8927),uint(12636),uint(12416),uint(13472),uint(34476),uint(23512),uint(12196),uint(63805),uint(63827),uint(63717),uint(35722),uint(63915),uint(63607),uint(63585),uint(63937),uint(64047),uint(31251),uint(29513),uint(52806),uint(27322),uint(36052),uint(27212),uint(23952),uint(26451),uint(13846),uint(64487),uint(15597),uint(10225),uint(64465),uint(64575),uint(3476),uint(27432),uint(22434),uint(64355),uint(64377),uint(26253),uint(4765),uint(22412),uint(64135),uint(9873),uint(32672),uint(64157),uint(15157),uint(25923),uint(16015),uint(26121),uint(33552),uint(64267),uint(22676),uint(64245),uint(26033),uint(31053),uint(26011),uint(5557),uint(31031),uint(2816),uint(30921),uint(30811),uint(22786),uint(39651),uint(33332),uint(30723),uint(33222),uint(33112),uint(30613),uint(5425),uint(64346),uint(4906),uint(35721),uint(64456),uint(64236),uint(60417),uint(25651),uint(35853),uint(5236),uint(33311),uint(33751),uint(20996),uint(36051),uint(33223),uint(16847),uint(12632),uint(33113),uint(5126),uint(5038),uint(17815),uint(64126),uint(9781),uint(9715),uint(12412),uint(17881),uint(13842),uint(29052),uint(14216),uint(12126),uint(1197),uint(1307),uint(33421),uint(14106),uint(14062),uint(25013),uint(33553),uint(26751),uint(22536),uint(9737),uint(33531),uint(64566),uint(24023),uint(32211),uint(7625),uint(24111),uint(2187),uint(32321),uint(30922),uint(32123),uint(32431),uint(23913),uint(30812),uint(32453),uint(27213),uint(2671),uint(27323),uint(4136),uint(24551),uint(10221),uint(22052),uint(19355),uint(35612),uint(1857),uint(27433),uint(1901),uint(27411),uint(24353),uint(24331),uint(4686),uint(15593),uint(15637),uint(19113),uint(32651),uint(10595),uint(32673),uint(34952),uint(26852),uint(65525),uint(14625),uint(24054),uint(24032),uint(23812),uint(19707),uint(23834),uint(31221),uint(10036),uint(30451),uint(30385),uint(38823),uint(23922),uint(3507),uint(34732),uint(3397),uint(34754),uint(15153),uint(30253),uint(6952),uint(2825),uint(30231),uint(10718),uint(17498),uint(14735),uint(14713),uint(34446),uint(31903),uint(19927),uint(4717),uint(35752),uint(33522),uint(17626),uint(26553),uint(26531),uint(27776),uint(33852),uint(26421),uint(6666),uint(26311),uint(13525),uint(13503),uint(26333),uint(13767),uint(13657),uint(63576),uint(13613),uint(63818),uint(26223),uint(63906),uint(23152),uint(26113),uint(16662),uint(1338),uint(14075),uint(31111),uint(31023),uint(33412),uint(20873),uint(30913),uint(1316),uint(13921),uint(14687),uint(2416),uint(28031),uint(28053),uint(24014),uint(32312),uint(14731),uint(23552),uint(24432),uint(2636),uint(63545),uint(63567),uint(32752),uint(50311),uint(15237),uint(37776),uint(35273),uint(15127),uint(24322),uint(35185),uint(37622),uint(32422),uint(15105),uint(35053),uint(35031),uint(35251),uint(63765),uint(14907),uint(10736),uint(10714),uint(64227),uint(34811),uint(64205),uint(3846),uint(34833),uint(34723),uint(26513),uint(29351),uint(22452),uint(22672),uint(13477),uint(12166),uint(64337),uint(64315),uint(34921),uint(63875),uint(63897),uint(34525),uint(13521),uint(63985),uint(13763),uint(31212),uint(64095),uint(64117),uint(38832),uint(5157),uint(31322),uint(8536),uint(22782),uint(14005),uint(31432),uint(17806),uint(23332),uint(23112),uint(26051),uint(34437),uint(20877),uint(29021),uint(61103),uint(64535),uint(64557),uint(61081),uint(25611),uint(29131),uint(61125),uint(25633),uint(25721),uint(64425),uint(5597),uint(14115),uint(64447),uint(14137),uint(26632),uint(29153),uint(14071),uint(23222),uint(18532),uint(1105),uint(5188),uint(5276),uint(15866),uint(33513),uint(12003),uint(11805),uint(12025),uint(29452),uint(36113),uint(26522),uint(1237),uint(33623),uint(12113),uint(12157),uint(64196),uint(33733),uint(36333),uint(23033),uint(23011),uint(26412),uint(36311),uint(33711),uint(32853),uint(33821),uint(36223),uint(22021),uint(21933),uint(21911),uint(23231),uint(15426),uint(23121),uint(11255),uint(11233),uint(29012),uint(4066),uint(25752),uint(11585),uint(64306),uint(64526),uint(23253),uint(11453),uint(29122),uint(64416),uint(65516),uint(26623),uint(30552),uint(26711),uint(14722),uint(26821),uint(26953),uint(49752),uint(26931),uint(60628),uint(12817),uint(12795),uint(15272),uint(12575),uint(24652),uint(15184),uint(32633),uint(32611),uint(32831),uint(27151),uint(35352),uint(2007),uint(22131),uint(22153),uint(9636),uint(32721),uint(30222),uint(10032),uint(35022),uint(32413),uint(34934),uint(60386),uint(34912),uint(22351),uint(35132),uint(65186),uint(2161),uint(14766),uint(4726),uint(17375),uint(17397),uint(32612),uint(24512),uint(12197),uint(3767),uint(61105),uint(61127),uint(32722),uint(11845),uint(24622),uint(3525),uint(52807),uint(3657),uint(24732),uint(28111),uint(29013),uint(12021),uint(7872),uint(29123),uint(19703),uint(11405),uint(60665),uint(11317),uint(35551),uint(16016),uint(32832),uint(39612),uint(11581),uint(17622),uint(35353),uint(14762),uint(1136),uint(14696),uint(35133),uint(35221),uint(17886),uint(34913),uint(52125),uint(23214),uint(35111),uint(35023),uint(12835),uint(29211),uint(12791),uint(23632),uint(26351),uint(23852),uint(26712),uint(12637),uint(60357),uint(34385),uint(29321),uint(26822),uint(60335),uint(10226),uint(12725),uint(63745),uint(26021),uint(26932),uint(12571),uint(26153),uint(12417),uint(26131),uint(29431),uint(25933),uint(23522),uint(4075),uint(29453),uint(63547),uint(39533),uint(39511),uint(50321),uint(23113),uint(33813),uint(33835),uint(39621),uint(23311),uint(17393),uint(23333),uint(6847),uint(18722),uint(34187),uint(9557),uint(35912),uint(23223),uint(12826),uint(38851),uint(14102),uint(23751),uint(36022),uint(29114),uint(13926),uint(2126),uint(29422),uint(23531),uint(23553),uint(29532),uint(22013),uint(26052),uint(29312),uint(26813),uint(21903),uint(14212),uint(16667),uint(26923),uint(27121),uint(63956),uint(10635),uint(27011),uint(27231),uint(27253),uint(27033),uint(32251),uint(63736),uint(64176),uint(64066),uint(11075),uint(27451),uint(22123),uint(22211),uint(25612),uint(11251),uint(22233),uint(63846),uint(25722),uint(22321),uint(22431),uint(22453),uint(30412),uint(33131),uint(33153),uint(24952),uint(64506),uint(33021),uint(28023),uint(30522),uint(22783),uint(64308),uint(22673),uint(32911),uint(32713),uint(5637),uint(8356),uint(32933),uint(35322),uint(32823),uint(63837),uint(35212),uint(5426),uint(18726),uint(31151),uint(63947),uint(1255),uint(27112),uint(9355),uint(30953),uint(30821),uint(30931),uint(22787),uint(64057),uint(27332),uint(30733),uint(30711),uint(26452),uint(1211),uint(9707),uint(27222),uint(13922),uint(30623),uint(63815),uint(23623),uint(23513),uint(60326),uint(64585),uint(26122),uint(64387),uint(23711),uint(30513),uint(23733),uint(14076),uint(21907),uint(1805),uint(21951),uint(64475),uint(16663),uint(64167),uint(64145),uint(64365),uint(1585),uint(26012),uint(27706),uint(64255),uint(39652),uint(2795),uint(4106),uint(2817),uint(11071),uint(35723),uint(4216),uint(35811),uint(10631),uint(11335),uint(35921),uint(11225),uint(52816),uint(34156),uint(33232),uint(36053),uint(64761),uint(36031),uint(36251),uint(4766),uint(15585),uint(52596),uint(2113),uint(22413),uint(24912),uint(33452),uint(25022),uint(22677),uint(13526),uint(65135),uint(32352),uint(25713),uint(15035),uint(28357),uint(4005),uint(32132),uint(25911),uint(17855),uint(11238),uint(4687),uint(64576),uint(14727),uint(14683),uint(22312),uint(4907),uint(3477),uint(7626),uint(33012),uint(33122),uint(25031),uint(24921),uint(35621),uint(25053),uint(22422),uint(35511),uint(5237),uint(15277),uint(35423),uint(5127),uint(18537),uint(31032),uint(35313),uint(13473),uint(24151),uint(29523),uint(31252),uint(23931),uint(23953),uint(24613),uint(1902),uint(13847),uint(34851),uint(24833),uint(23821),uint(24811),uint(12162),uint(24723),uint(34345),uint(14155),uint(14133),uint(14067),uint(34235),uint(14001),uint(38011),uint(19351),uint(19395),uint(34477),uint(29413),uint(4115),uint(4137),uint(23395),uint(15185),uint(35622),uint(19356),uint(2826),uint(35512),uint(11256),uint(2672),uint(15427),uint(23131),uint(27412),uint(23153),uint(6953),uint(15075),uint(11234),uint(35314),uint(14767),uint(14745),uint(31121),uint(14723),uint(10596),uint(31011),uint(31033),uint(23351),uint(24121),uint(24033),uint(30813),uint(30923),uint(32221),uint(32331),uint(32353),uint(23923),uint(32111),uint(32133),uint(24011),uint(19708),uint(26532),uint(6667),uint(26422),uint(23813),uint(34852),uint(22053),uint(26312),uint(22031),uint(15273),uint(26114),uint(12576),uint(63806),uint(34236),uint(13843),uint(63586),uint(63916),uint(22251),uint(14107),uint(14063),uint(17398),uint(34346),uint(35753),uint(11806),uint(64466),uint(33532),uint(33752),uint(35951),uint(11586),uint(12026),uint(25652),uint(64356),uint(14217),uint(17627),uint(1075),uint(14195),uint(31231),uint(17715),uint(64136),uint(31253),uint(23021),uint(64246),uint(64268),uint(31451),uint(64158),uint(26211),uint(63577),uint(12413),uint(28745),uint(61131),uint(63555),uint(21952),uint(26123),uint(29053),uint(29031),uint(1317),uint(12127),uint(22414),uint(1405),uint(2021),uint(12215),uint(32674),uint(26013),uint(33422),uint(32652),uint(18727),uint(18661),uint(64215),uint(64237),uint(18595),uint(22678),uint(64435),uint(18925),uint(33312),uint(64347),uint(11555),uint(64325),uint(63907),uint(60625),uint(1801),uint(64127),uint(8537),uint(13535),uint(35613),uint(64105),uint(9782),uint(37777),uint(64875),uint(2835),uint(24913),uint(37623),uint(14736),uint(14626),uint(64457),uint(25023),uint(64567),uint(64545),uint(9716),uint(26752),uint(2417),uint(34821),uint(32322),uint(32432),uint(12831),uint(34953),uint(34931),uint(24451),uint(2725),uint(12721),uint(2637),uint(10222),uint(12633),uint(2571),uint(34711),uint(32212),uint(34733),uint(25951),uint(17785),uint(21912),uint(17851),uint(17807),uint(30232),uint(22132),uint(34095),uint(61135),uint(4067),uint(64536),uint(25621),uint(34447),uint(34425),uint(25753),uint(25731),uint(22352),uint(3847),uint(4727),uint(64426),uint(26633),uint(29352),uint(1106),uint(26721),uint(5101),uint(5277),uint(33523),uint(1238),uint(26831),uint(13531),uint(33611),uint(5035),uint(12211),uint(12167),uint(26853),uint(33831),uint(27051),uint(36312),uint(38833),uint(38811),uint(33721),uint(31222),uint(18665),uint(18533),uint(33875),uint(33853),uint(32753),uint(24521),uint(24631),uint(50312),uint(24323),uint(24653),uint(15106),uint(31112),uint(32423),uint(2162),uint(24851),uint(32621),uint(33413),uint(10636),uint(28151),uint(65526),uint(13025),uint(30386),uint(27777),uint(12827),uint(19391),uint(32951),uint(24411),uint(24433),uint(22022),uint(30452),uint(31323),uint(31411),uint(27152),uint(35252),uint(9637),uint(10055),uint(31433),uint(9571),uint(24332),uint(35032),uint(35186),uint(17495),uint(14116),uint(14072),uint(30751),uint(14006),uint(24112),uint(34724),uint(65517),uint(30553),uint(30531),uint(34922),uint(34812),uint(28032),uint(14732),uint(32313),uint(30311),uint(30223),uint(12796),uint(34526),uint(30421),uint(24552),uint(17882),uint(11221),uint(23232),uint(21921),uint(23122),uint(11375),uint(16725),uint(23012),uint(29022),uint(63766),uint(4076),uint(10715),uint(29154),uint(10737),uint(29132),uint(63546),uint(63568),uint(5585),uint(23254),uint(36013),uint(26611),uint(64206),uint(15867),uint(64096),uint(1137),uint(24024),uint(26523),uint(1335),uint(64316),uint(36123),uint(26413),uint(1225),uint(3526),uint(36321),uint(33712),uint(16285),uint(63876),uint(13522),uint(63986),uint(36211),uint(31213),uint(33822),uint(30554),uint(30532),uint(22322),uint(14156),uint(22432),uint(14002),uint(26251),uint(10227),uint(2127),uint(22454),uint(26713),uint(34813),uint(26823),uint(18591),uint(22674),uint(26053),uint(26031),uint(2215),uint(34527),uint(30422),uint(27021),uint(26911),uint(30312),uint(26933),uint(38852),uint(27153),uint(25723),uint(27131),uint(33823),uint(34065),uint(10711),uint(64186),uint(25921),uint(23312),uint(18723),uint(63746),uint(31412),uint(27351),uint(23224),uint(25613),uint(18921),uint(35913),uint(33251),uint(24931),uint(36023),uint(36221),uint(64516),uint(28011),uint(24953),uint(36111),uint(28033),uint(11855),uint(64406),uint(8357),uint(32921),uint(32811),uint(64296),uint(36331),uint(32833),uint(33713),uint(16721),uint(39622),uint(24513),uint(10975),uint(16017),uint(24623),uint(61106),uint(39512),uint(24711),uint(24733),uint(11195),uint(28121),uint(19845),uint(30752),uint(22212),uint(11305),uint(24821),uint(16281),uint(11318),uint(4745),uint(11252),uint(4767),uint(52126),uint(15181),uint(64485),uint(11406),uint(64507),uint(64265),uint(32151),uint(5075),uint(35552),uint(64375),uint(64155),uint(35354),uint(11582),uint(4041),uint(5427),uint(24522),uint(1256),uint(35222),uint(17786),uint(31051),uint(1212),uint(32723),uint(17852),uint(24632),uint(5185),uint(35112),uint(61137),uint(32613),uint(22133),uint(28112),uint(24852),uint(34914),uint(11076),uint(22221),uint(30611),uint(22331),uint(3535),uint(30721),uint(22353),uint(29124),uint(23752),uint(12726),uint(12836),uint(29212),uint(14015),uint(12792),uint(34386),uint(1806),uint(29322),uint(13927),uint(60345),uint(22111),uint(29432),uint(18666),uint(1586),uint(22023),uint(12572),uint(14213),uint(23532),uint(24412),uint(14103),uint(21913),uint(14763),uint(33836),uint(14741),uint(4107),uint(14697),uint(17394),uint(4217),uint(4195),uint(11846),uint(38311),uint(38531),uint(35812),uint(35922),uint(36032),uint(4525),uint(12022),uint(24922),uint(33132),uint(36252),uint(25032),uint(7627),uint(24812),uint(33022),uint(11556),uint(7715),uint(29313),uint(32912),uint(29511),uint(29423),uint(15155),uint(4116),uint(39631),uint(39521),uint(65136),uint(6725),uint(39653),uint(11072),uint(17856),uint(11226),uint(2796),uint(15595),uint(11336),uint(8925),uint(30413),uint(60415),uint(60327),uint(60525),uint(23712),uint(30523),uint(14077),uint(12832),uint(35521),uint(63605),uint(38012),uint(12722),uint(35411),uint(35323),uint(63935),uint(27012),uint(29775),uint(35213),uint(24152),uint(4006),uint(63957),uint(32252),uint(9783),uint(63737),uint(63715),uint(64067),uint(29533),uint(64045),uint(27122),uint(9871),uint(34751),uint(14627),uint(26453),uint(23932),uint(27452),uint(27232),uint(26431),uint(26321),uint(9717),uint(63825),uint(12216),uint(63847),uint(23822),uint(14737),uint(14715),uint(23633),uint(12845),uint(23611),uint(60336),uint(34245),uint(60666),uint(34201),uint(23721),uint(23391),uint(26651),uint(19352),uint(34465),uint(23523),uint(12185),uint(13615),uint(63816),uint(12163),uint(35711),uint(13505),uint(31152),uint(13527),uint(27113),uint(35821),uint(9356),uint(33805),uint(13923),uint(27311),uint(34157),uint(1903),uint(35931),uint(24051),uint(27333),uint(35953),uint(9708),uint(23831),uint(36151),uint(23853),uint(19704),uint(27223),uint(15586),uint(26352),uint(64476),uint(33013),uint(22313),uint(22423),uint(27421),uint(26154),uint(64146),uint(33431),uint(33453),uint(26132),uint(25912),uint(15036),uint(64256),uint(26022),uint(2827),uint(17623),uint(17645),uint(30932),uint(39552),uint(2673),uint(3025),uint(30822),uint(33321),uint(10632),uint(17865),uint(33233),uint(30712),uint(64762),uint(30514),uint(13021),uint(33211),uint(33123),uint(64335),uint(64445),uint(64225),uint(64247),uint(64467),uint(1076),uint(33806),uint(33322),uint(60626),uint(12797),uint(13501),uint(12841),uint(13523),uint(35952),uint(33212),uint(17716),uint(13655),uint(39551),uint(13611),uint(64115),uint(64137),uint(22151),uint(16660),uint(12577),uint(16726),uint(9572),uint(1406),uint(16286),uint(13765),uint(4015),uint(29151),uint(12115),uint(14117),uint(1318),uint(20875),uint(26652),uint(33432),uint(64555),uint(14073),uint(5555),uint(64577),uint(14007),uint(18662),uint(24034),uint(32222),uint(30933),uint(24012),uint(32332),uint(32112),uint(18596),uint(30911),uint(18926),uint(30823),uint(24452),uint(30713),uint(23814),uint(27312),uint(2572),uint(35623),uint(30251),uint(37778),uint(21953),uint(35513),uint(21931),uint(27422),uint(35271),uint(2022),uint(10716),uint(24122),uint(24153),uint(26753),uint(34831),uint(10223),uint(34853),uint(26951),uint(35051),uint(14196),uint(7865),uint(24021),uint(23823),uint(23713),uint(23911),uint(31232),uint(38812),uint(23933),uint(34721),uint(10971),uint(34237),uint(27413),uint(15186),uint(15076),uint(31452),uint(2836),uint(2726),uint(14746),uint(10597),uint(24351),uint(34435),uint(17355),uint(34347),uint(33511),uint(33533),uint(28051),uint(35851),uint(1195),uint(11587),uint(33621),uint(33731),uint(12005),uint(12027),uint(1107),uint(13426),uint(33753),uint(23031),uint(26432),uint(26322),uint(17945),uint(13536),uint(11851),uint(11807),uint(63565),uint(63587),uint(63807),uint(26212),uint(36313),uint(11257),uint(11235),uint(63917),uint(63895),uint(26124),uint(11191),uint(11345),uint(31122),uint(11455),uint(11301),uint(23251),uint(31012),uint(61132),uint(33423),uint(1305),uint(10637),uint(23805),uint(28152),uint(32323),uint(14742),uint(27778),uint(24421),uint(11077),uint(24531),uint(24553),uint(23651),uint(28746),uint(63556),uint(32851),uint(50322),uint(1855),uint(31113),uint(24333),uint(24311),uint(15182),uint(32411),uint(32433),uint(32631),uint(24113),uint(32653),uint(2163),uint(2185),uint(26612),uint(12001),uint(5102),uint(17395),uint(34822),uint(12023),uint(64216),uint(34734),uint(12111),uint(5036),uint(11847),uint(34932),uint(12155),uint(34954),uint(64326),uint(3395),uint(13532),uint(31223),uint(64106),uint(38821),uint(31311),uint(3527),uint(34712),uint(3505),uint(23211),uint(34096),uint(31421),uint(14016),uint(23123),uint(11253),uint(17861),uint(11451),uint(11231),uint(23321),uint(23013),uint(16845),uint(38051),uint(11407),uint(25952),uint(34426),uint(29032),uint(64546),uint(25622),uint(61136),uint(64436),uint(8041),uint(11583),uint(5586),uint(23233),uint(25732),uint(64097),uint(5155),uint(26621),uint(29221),uint(26533),uint(64295),uint(26511),uint(1226),uint(64185),uint(33612),uint(29331),uint(29353),uint(64207),uint(63767),uint(33722),uint(26423),uint(23022),uint(36322),uint(26313),uint(63877),uint(33876),uint(29551),uint(33832),uint(36212),uint(22032),uint(39613),uint(63987),uint(32952),uint(21922),uint(11222),uint(23352),uint(19357),uint(23396),uint(23132),uint(25631),uint(15591),uint(5595),uint(25653),uint(29023),uint(4077),uint(64537),uint(64317),uint(64515),uint(15635),uint(11376),uint(29111),uint(19115),uint(1336),uint(61101),uint(64405),uint(64427),uint(29133),uint(65527),uint(26722),uint(14733),uint(14711),uint(13026),uint(30651),uint(26832),uint(60485),uint(60595),uint(30321),uint(2678),uint(27052),uint(30453),uint(32622),uint(35187),uint(10065),uint(15107),uint(15151),uint(30233),uint(29771),uint(24751),uint(35253),uint(30211),uint(35011),uint(22252),uint(12212),uint(2216),uint(34923),uint(35121),uint(17496),uint(9735),uint(4715),uint(35033)})&.Rotten:== uint(10102)))|(.Rotten:== uint(5041)&.Peel:->contains($uint,[]uint{uint(1459113),uint(1466113),uint(1562112),uint(1388116),uint(1387117),uint(1362113),uint(1318111),uint(1519113),uint(1387113),uint(1318115),uint(1603116),uint(1079123),uint(1955121),uint(1456117),uint(1417115),uint(1078111),uint(1171112),uint(1090123),uint(1998111),uint(1454111),uint(1318116),uint(1568113),uint(1998115),uint(1171117),uint(1568117),uint(1769113),uint(1090128),uint(1603112),uint(1388112),uint(1456113),uint(1562116),uint(1318112),uint(1387116),uint(1090126),uint(1388115),uint(1455115),uint(1568112),uint(1519112),uint(1603117),uint(1562111),uint(1079124),uint(1458111),uint(1171113),uint(1090122),uint(10901212),uint(1603113),uint(1078112),uint(1388111),uint(1318117),uint(1387112),uint(1454112),uint(1519117),uint(1562115),uint(1090127),uint(1455111),uint(1568116),uint(1519115),uint(1458112),uint(1362111),uint(1998113),uint(1466111),uint(1769111),uint(1079121),uint(1417117),uint(1090125),uint(1519111),uint(1466115),uint(1454113),uint(1090121),uint(1459111),uint(1417113),uint(1455116),uint(1568111),uint(1387115),uint(1318113),uint(1455112),uint(1079125),uint(1568115),uint(1078113),uint(1387111),uint(1417112),uint(1456115),uint(1456111),uint(10901211),uint(1519116),uint(1998117),uint(1998112),uint(1388117),uint(1466112),uint(1090124),uint(1417116),uint(1769112),uint(1171115),uint(1458113),uint(1562113),uint(1362112),uint(1079122),uint(1171111),uint(1466116),uint(1459112),uint(1455117),uint(1417111),uint(1455113),uint(1562117),uint(1090129),uint(1079126),uint(1456116),uint(1603115),uint(1466117),uint(1171116),uint(1456112),uint(10901210),uint(1603111),uint(1998116),uint(1388113)})))|(.Peel:->contains($uint,[]uint{uint(21680)})&.Rotten:== uint(7007)))|(.Rotten:== uint(5031)&.Peel:->contains($uint,[]uint{uint(1899125),uint(1349112),uint(1109117),uint(5300113),uint(1791121),uint(1571123),uint(1565113),uint(1899121),uint(1154121),uint(1109113),uint(1457121),uint(1654113),uint(1349116),uint(1109116),uint(1571122),uint(1349113),uint(1565112),uint(5300112),uint(1791122),uint(5300111),uint(1349117),uint(1109112),uint(1717113),uint(1457122),uint(1863113),uint(1023125),uint(1023121),uint(1571121),uint(1717112),uint(1791123),uint(1565111),uint(1570122),uint(1109111),uint(1863112),uint(1654111),uint(1109115),uint(1570121),uint(1349111),uint(1717111),uint(1791124),uint(1863111),uint(1349115),uint(1654112)})))|(.Peel:->contains($uint,[]uint{uint(6522141),uint(479),uint(466),uint(6522142),uint(471),uint(6322143),uint(6326543),uint(467),uint(472),uint(6326542),uint(6522143),uint(477),uint(6322142),uint(473),uint(6326541),uint(478),uint(6322141),uint(465)})&.Rotten:== uint(2051)))|(.Rotten:== uint(40072)&.Peel:->contains($uint,[]uint{uint(13732),uint(15932),uint(15933),uint(17671),uint(13733),uint(17672),uint(15931),uint(13731)})))|(.Peel:->contains($uint,[]uint{uint(1122115),uint(1527113),uint(1518111),uint(1970112),uint(1563112),uint(1211116),uint(1500116),uint(1468112),uint(1559117),uint(1474113),uint(489),uint(1771112),uint(1421111),uint(1279115),uint(1406117),uint(1853111),uint(1392112),uint(1559113),uint(1272115),uint(1185113),uint(1122111),uint(1257111),uint(1107116),uint(1221112),uint(1361111),uint(1407116),uint(1131112),uint(1257112),uint(1407115),uint(1500111),uint(1473115),uint(1559112),uint(1406112),uint(1419113),uint(1107112),uint(1376111),uint(1180111),uint(1672111),uint(1469111),uint(1352113),uint(1361115),uint(1200112),uint(1518112),uint(1407111),uint(1211111),uint(1468113),uint(1939121),uint(1771113),uint(1500117),uint(1107115),uint(1283113),uint(1559116),uint(1563111),uint(1241117),uint(1352115),uint(1473111),uint(1216111),uint(1970111),uint(6110111),uint(1073111),uint(1216115),uint(1406116),uint(1130113),uint(1361112),uint(1211117),uint(1392111),uint(1527112),uint(1202111),uint(1221113),uint(1063115),uint(1559111),uint(1272113),uint(1185115),uint(1212111),uint(1279113),uint(1419112),uint(1283117),uint(1130112),uint(1473116),uint(1523113),uint(1241113),uint(6113111),uint(1361116),uint(1200113),uint(1119113),uint(1406111),uint(306),uint(1180112),uint(1211112),uint(1107111),uint(1500112),uint(1131111),uint(1469112),uint(1474111),uint(1216112),uint(1241116),uint(1352116),uint(1063116),uint(1283112),uint(1185111),uint(6110112),uint(1180113),uint(1283116),uint(1122113),uint(1473112),uint(1216116),uint(1559115),uint(1272117),uint(1202112),uint(1073112),uint(1279117),uint(1406115),uint(1527111),uint(1853113),uint(1361113),uint(1523112),uint(1419111),uint(1130111),uint(1185116),uint(6113112),uint(1212112),uint(1063111),uint(1272112),uint(1241112),uint(1473117),uint(1376113),uint(1407113),uint(307),uint(1211113),uint(1119112),uint(1469113),uint(1361117),uint(1500113),uint(1421113),uint(1122117),uint(1279112),uint(1352111),uint(1672113),uint(6110113),uint(1970113),uint(1211115),uint(1216113),uint(1202113),uint(1563113),uint(1063117),uint(1474112),uint(1200111),uint(1500115),uint(1283111),uint(1221111),uint(1122112),uint(1063113),uint(1185112),uint(1853112),uint(1771111),uint(1279116),uint(1392113),uint(1283115),uint(1241115),uint(1407117),uint(1473113),uint(1107117),uint(1352117),uint(1272116),uint(1241111),uint(6113113),uint(1073113),uint(1257113),uint(1406113),uint(1131113),uint(1376112),uint(308),uint(1063112),uint(1216117),uint(1185117),uint(1421112),uint(1468111),uint(1672112),uint(1407112),uint(1107113),uint(1518113),uint(1523111),uint(1279111),uint(1352112),uint(1122116),uint(1272111),uint(1119111),uint(1212113)})&.Rotten:== uint(1181)))|(.Peel:->contains($uint,[]uint{uint(3429113),uint(3429112),uint(3429111)})&.Rotten:== uint(2042)))|(.Peel:->contains($uint,[]uint{uint(53751),uint(13075),uint(17972),uint(16256),uint(61367),uint(61345),uint(54323),uint(54411),uint(54213),uint(61235),uint(11755),uint(52651),uint(52607),uint(15772),uint(55423),uint(18456),uint(52211),uint(55753),uint(12195),uint(52123),uint(52013),uint(51551),uint(1706),uint(15266),uint(15178),uint(15222),uint(10215),uint(51221),uint(3686),uint(51023),uint(51111),uint(10567),uint(53012),uint(51353),uint(53122),uint(53452),uint(6625),uint(50913),uint(54112),uint(64812),uint(64746),uint(54222),uint(59792),uint(6405),uint(5855),uint(16071),uint(52576),uint(64715),uint(64737),uint(10563),uint(51613),uint(19802),uint(50711),uint(1517),uint(5776),uint(55713),uint(3277),uint(51151),uint(50953),uint(53522),uint(53412),uint(10211),uint(53852),uint(7976),uint(11707),uint(50513),uint(50623),uint(54622),uint(2617),uint(5226),uint(5138),uint(15825),uint(15847),uint(15781),uint(52572),uint(59783),uint(52022),uint(11126),uint(14967),uint(5345),uint(8517),uint(18513),uint(51252),uint(19657),uint(4025),uint(53113),uint(61336),uint(53311),uint(53223),uint(61358),uint(1526),uint(55722),uint(61226),uint(50922),uint(53553),uint(53421),uint(55022),uint(54824),uint(51313),uint(15777),uint(50323),uint(50521),uint(15227),uint(50653),uint(9217),uint(64706),uint(52853),uint(64816),uint(64838),uint(5785),uint(53051),uint(9657),uint(17977),uint(53711),uint(18835),uint(2613),uint(53821),uint(53623),uint(52052),uint(13071),uint(53513),uint(53953),uint(64785),uint(64851),uint(64675),uint(61327),uint(18461),uint(64697),uint(61195),uint(16626),uint(61305),uint(1755),uint(51612),uint(51414),uint(16406),uint(51722),uint(6256),uint(54151),uint(13687),uint(15856),uint(5178),uint(50952),uint(16076),uint(55251),uint(12191),uint(54833),uint(54811),uint(54613),uint(3075),uint(50512),uint(19781),uint(50622),uint(19803),uint(19825),uint(55031),uint(5266),uint(55053),uint(53451),uint(13705),uint(18465),uint(4967),uint(61287),uint(5847),uint(54111),uint(54221),uint(51454),uint(53913),uint(51652),uint(1126),uint(54023),uint(55013),uint(16072),uint(19785),uint(19807),uint(55211),uint(15786),uint(51322),uint(54353),uint(51212),uint(12605),uint(50552),uint(15346),uint(10216),uint(19653),uint(59791),uint(10911),uint(52822),uint(55453),uint(52611),uint(53152),uint(53812),uint(1707),uint(18452),uint(64666),uint(64776),uint(8456),uint(11703),uint(51621),uint(54252),uint(51511),uint(11527),uint(51753),uint(51423),uint(14026),uint(53922),uint(19315),uint(11127),uint(52023),uint(18831),uint(6626),uint(51253),uint(51121),uint(53013),uint(59793),uint(3687),uint(51451),uint(6406),uint(53123),uint(53321),uint(53211),uint(50351),uint(53651),uint(51011),uint(53453),uint(5856),uint(50923),uint(54113),uint(64822),uint(54223),uint(64756),uint(5777),uint(16257),uint(16235),uint(5227),uint(54421),uint(8465),uint(54311),uint(52652),uint(55213),uint(11756),uint(64813),uint(64747),uint(64835),uint(15773),uint(64725),uint(18466),uint(15355),uint(52212),uint(13076),uint(9565),uint(61355),uint(51552),uint(15223),uint(15267),uint(15135),uint(55411),uint(51112),uint(52912),uint(53022),uint(51222),uint(12196),uint(16407),uint(16231),uint(15857),uint(13072),uint(54821),uint(54623),uint(54711),uint(52252),uint(15175),uint(61315),uint(61337),uint(55723),uint(1527),uint(61227),uint(15351),uint(51812),uint(51152),uint(12192),uint(4026),uint(14955),uint(61346),uint(50712),uint(53312),uint(61236),uint(10212),uint(2605),uint(53422),uint(53752),uint(3705),uint(5786),uint(17973),uint(5346),uint(54412),uint(18457),uint(15826),uint(52573),uint(64716),uint(15782),uint(15848),uint(7977),uint(52111),uint(52221),uint(1756),uint(14027),uint(61196),uint(53052),uint(52612),uint(6235),uint(6257),uint(5355),uint(5267),uint(53822),uint(18462),uint(64817),uint(64707),uint(64685),uint(64795),uint(53712),uint(51512),uint(51622),uint(3076),uint(51424),uint(19804),uint(19826),uint(19782),uint(55032),uint(54152),uint(5135),uint(54834),uint(54812),uint(50522),uint(55252),uint(52951),uint(53413),uint(1127),uint(53853),uint(52053),uint(53721),uint(52251),uint(53611),uint(53523),uint(54051),uint(51723),uint(51811),uint(61306),uint(18515),uint(16627),uint(59801),uint(15356),uint(11515),uint(10811),uint(19808),uint(19786),uint(55212),uint(8466),uint(10921),uint(15136),uint(12615),uint(52823),uint(52911),uint(5848),uint(53021),uint(64852),uint(53153),uint(52621),uint(13706),uint(52577),uint(9566),uint(53351),uint(53813),uint(18453),uint(61288),uint(64786),uint(64676),uint(11757),uint(51653),uint(54253),uint(51521),uint(51851),uint(64821),uint(64777),uint(8457),uint(64755),uint(51411),uint(53923),uint(19795),uint(6407),uint(54011),uint(54121),uint(9315),uint(51323),uint(15787),uint(64667),uint(51213),uint(5857),uint(61275),uint(15347),uint(50553),uint(10217),uint(50751),uint(55023),uint(5175),uint(55221),uint(12606),uint(4955),uint(50311),uint(61356),uint(54312),uint(54422),uint(18511),uint(15783),uint(15827),uint(18467),uint(55412),uint(52222),uint(52112),uint(10565),uint(6627),uint(10213),uint(51122),uint(51012),uint(19787),uint(52913),uint(51452),uint(53023),uint(53221),uint(53111),uint(4027),uint(53353),uint(19655),uint(53551),uint(54123),uint(64823),uint(64757),uint(64735),uint(54211),uint(59781),uint(59803),uint(13077),uint(54013),uint(16236),uint(50352),uint(13275),uint(54321),uint(52653),uint(64726),uint(51712),uint(14965),uint(52851),uint(64814),uint(64836),uint(19791),uint(50722),uint(5787),uint(51052),uint(53511),uint(53313),uint(53423),uint(53753),uint(13073),uint(53951),uint(53621),uint(50612),uint(8515),uint(54611),uint(5347),uint(2606),uint(16232),uint(15858),uint(5136),uint(52605),uint(18458),uint(54831),uint(55711),uint(54721),uint(52253),uint(52011),uint(15176),uint(14956),uint(52121),uint(5356),uint(51813),uint(55051),uint(15352),uint(3706),uint(51351),uint(51153),uint(61325),uint(61347),uint(53322),uint(1757),uint(53212),uint(1515),uint(50713),uint(61237),uint(53652),uint(50911),uint(51021),uint(19316),uint(53454),uint(55011),uint(55033),uint(54813),uint(55253),uint(11705),uint(55451),uint(50312),uint(3077),uint(12607),uint(8458),uint(19827),uint(19783),uint(19805),uint(19651),uint(50752),uint(2615),uint(64695),uint(6236),uint(9316),uint(61285),uint(64717),uint(61307),uint(52952),uint(61197),uint(3275),uint(52613),uint(53414),uint(53722),uint(53612),uint(52151),uint(51821),uint(18516),uint(64796),uint(64686),uint(61316),uint(51623),uint(51711),uint(54052),uint(51513),uint(10561),uint(50721),uint(54822),uint(15845),uint(51051),uint(50523),uint(50611),uint(19792),uint(5176),uint(18454),uint(53352),uint(4956),uint(61276),uint(13276),uint(52213),uint(5858),uint(9215),uint(51751),uint(54122),uint(51553),uint(64787),uint(64853),uint(54012),uint(9655),uint(9567),uint(16237),uint(10821),uint(51113),uint(19796),uint(2611),uint(51421),uint(51311),uint(55222),uint(51223),uint(12616),uint(15357),uint(15775),uint(50651),uint(13078),uint(59802),uint(15137),uint(15225),uint(10812),uint(52811),uint(50321),uint(52921),uint(53053),uint(53251),uint(52622),uint(53823),uint(53911),uint(18463),uint(64677),uint(64765),uint(53713),uint(51522),uint(51412),uint(51852),uint(8467),uint(11516),uint(54351),uint(13707),uint(54021),uint(13685),uint(54153),uint(14957),uint(52012),uint(15353),uint(15221),uint(15265),uint(15177),uint(55413),uint(59782),uint(59804),uint(55721),uint(53112),uint(10566),uint(51352),uint(53222),uint(5845),uint(51022),uint(4965),uint(53552),uint(50912),uint(64745),uint(54212),uint(64811),uint(19656),uint(17971),uint(54322),uint(11701),uint(1705),uint(52575),uint(11525),uint(64824),uint(64736),uint(18455),uint(52113),uint(52223),uint(61366),uint(2607),uint(51651),uint(51123),uint(55422),uint(52813),uint(52923),uint(51013),uint(53121),uint(51453),uint(55752),uint(53011),uint(53253),uint(51321),uint(51211),uint(55052),uint(8516),uint(15846),uint(52571),uint(17975),uint(54832),uint(54612),uint(52021),uint(52153),uint(61348),uint(61326),uint(55712),uint(1516),uint(51713),uint(19317),uint(51823),uint(3707),uint(3685),uint(51251),uint(14966),uint(52905),uint(53213),uint(61357),uint(50613),uint(50723),uint(53323),uint(61225),uint(61335),uint(3276),uint(53521),uint(51053),uint(50921),uint(53411),uint(2616),uint(19801),uint(53653),uint(6237),uint(53851),uint(54621),uint(11125),uint(16255),uint(5775),uint(5357),uint(16233),uint(5225),uint(54313),uint(5137),uint(15771),uint(13074),uint(18468),uint(52606),uint(64705),uint(64727),uint(18512),uint(52122),uint(64837),uint(3078),uint(64815),uint(52953),uint(53151),uint(52623),uint(13686),uint(53613),uint(53921),uint(18517),uint(18451),uint(51853),uint(1525),uint(52051),uint(53811),uint(64696),uint(53723),uint(51523),uint(51611),uint(16625),uint(54251),uint(51721),uint(11517),uint(51413),uint(16405),uint(19793),uint(54053),uint(55021),uint(50753),uint(50951),uint(54823),uint(16075),uint(15855),uint(50511),uint(50621),uint(5265),uint(10562),uint(5177),uint(7975),uint(4957),uint(50313),uint(52852),uint(53424),uint(53512),uint(17976),uint(52152),uint(53952),uint(53622),uint(9317),uint(51822),uint(11706),uint(61317),uint(50353),uint(55421),uint(50551),uint(11526),uint(15345),uint(15785),uint(55751),uint(10822),uint(2612),uint(19797),uint(55223),uint(8455),uint(52812),uint(52922),uint(14025),uint(53252),uint(6255),uint(1125),uint(61365),uint(61277),uint(64797),uint(18464),uint(64775),uint(11702),uint(64687),uint(64665),uint(51752),uint(12617),uint(8468),uint(64854),uint(54352),uint(51422),uint(19806),uint(53912),uint(54022),uint(19652),uint(54814),uint(51312),uint(15776),uint(64678),uint(13277),uint(9216),uint(61198),uint(61286),uint(5846),uint(15226),uint(9656),uint(50652),uint(55012),uint(15138),uint(55452),uint(52821),uint(4966),uint(50322)})&.Rotten:== uint(40101)))|(.Peel:->contains($uint,[]uint{uint(54512),uint(54513),uint(54511)})&.Rotten:== uint(3123)))|(.Rotten:== uint(5007)&.Peel:->contains($uint,[]uint{uint(12852),uint(18501),uint(14612),uint(11101),uint(17173),uint(15303),uint(18502),uint(12672),uint(14643),uint(15981),uint(14793),uint(12351),uint(13491),uint(12853),uint(11102),uint(16901),uint(14613),uint(12352),uint(18503),uint(12673),uint(15982),uint(11103),uint(13492),uint(14641),uint(12353),uint(17171),uint(15983),uint(15301),uint(14791),uint(13493),uint(14611),uint(12851),uint(12671),uint(15302),uint(14642),uint(14792),uint(18241),uint(17172)})))|(.Peel:->contains($uint,[]uint{uint(13691),uint(13801),uint(12811),uint(12833),uint(12723),uint(11192),uint(11302),uint(10743),uint(10633),uint(15442),uint(11073),uint(17721),uint(12371),uint(13924),uint(11931),uint(11843),uint(11223),uint(11003),uint(11311),uint(15152),uint(11443),uint(13942),uint(17783),uint(17541),uint(12213),uint(11773),uint(14712),uint(15803),uint(13612),uint(11852),uint(15033),uint(14681),uint(15473),uint(15231),uint(16723),uint(12002),uint(16151),uint(13652),uint(13762),uint(15271),uint(10691),uint(10713),uint(12882),uint(14061),uint(14743),uint(13991),uint(10744),uint(14761),uint(13023),uint(11932),uint(16512),uint(11351),uint(15632),uint(11721),uint(11853),uint(15232),uint(19491),uint(11193),uint(11303),uint(17621),uint(12161),uint(14682),uint(12812),uint(13802),uint(13692),uint(15531),uint(15443),uint(15861),uint(15971),uint(14062),uint(16011),uint(14713),uint(14691),uint(13613),uint(11312),uint(13811),uint(11444),uint(13921),uint(13943),uint(10692),uint(13521),uint(13653),uint(13763),uint(11352),uint(14071),uint(13961),uint(12003),uint(18251),uint(18141),uint(13301),uint(19021),uint(15272),uint(19241),uint(17551),uint(11801),uint(15862),uint(18211),uint(15972),uint(14762),uint(15532),uint(12813),uint(12571),uint(17481),uint(19861),uint(16711),uint(13992),uint(16513),uint(15633),uint(13812),uint(17521),uint(13922),uint(16751),uint(19391),uint(10631),uint(11313),uint(10741),uint(15651),uint(11071),uint(15101),uint(14683),uint(14771),uint(15233),uint(12162),uint(17622),uint(13693),uint(18212),uint(13803),uint(15273),uint(15031),uint(15801),uint(15471),uint(14063),uint(11841),uint(14692),uint(13051),uint(12721),uint(12831),uint(16712),uint(12013),uint(11771),uint(12211),uint(15634),uint(19022),uint(17781),uint(14072),uint(17451),uint(11221),uint(11441),uint(11353),uint(11001),uint(10693),uint(13522),uint(13654),uint(18151),uint(10161),uint(17623),uint(10711),uint(14772),uint(16721),uint(16281),uint(15863),uint(11802),uint(15973),uint(15533),uint(13993),uint(12572),uint(14741),uint(14763),uint(15441),uint(11072),uint(11842),uint(12832),uint(12722),uint(12414),uint(14693),uint(12163),uint(13813),uint(13923),uint(15652),uint(19621),uint(15102),uint(10742),uint(13241),uint(10632),uint(13021),uint(13523),uint(13611),uint(13941),uint(14073),uint(15802),uint(15472),uint(11002),uint(10694),uint(15032),uint(17531),uint(11851),uint(11191),uint(11301),uint(14742),uint(19001),uint(19221),uint(12001),uint(11803),uint(16713),uint(11772),uint(12212),uint(11222),uint(11442),uint(14711),uint(17782),uint(15151),uint(17452),uint(16291),uint(16511),uint(15631),uint(15653),uint(14773),uint(13022),uint(15081),uint(15103),uint(13431),uint(13321),uint(13211),uint(13651),uint(13761),uint(12881),uint(10162),uint(12573),uint(16722),uint(10712),uint(18121)})&.Rotten:== uint(3001)))|(.Rotten:== uint(10119)&.Peel:->contains($uint,[]uint{uint(18486),uint(18485)})))|(.Rotten:== uint(1031)&.Peel:->contains($uint,[]uint{uint(410),uint(388),uint(454),uint(278),uint(498),uint(1536111),uint(1581112),uint(1351111),uint(1441113),uint(1642113),uint(89),uint(199),uint(133),uint(1528112),uint(441),uint(1256113),uint(1197112),uint(1132112),uint(1506113),uint(1217122),uint(54),uint(32),uint(164),uint(98),uint(186),uint(318),uint(274),uint(406),uint(340),uint(1531113),uint(1567112),uint(1138113),uint(1113113),uint(1198111),uint(1296111),uint(1120113),uint(261),uint(173),uint(393),uint(1251111),uint(1208111),uint(1207112),uint(6116111),uint(1451112),uint(1828121),uint(1274112),uint(1372112),uint(72),uint(1525112),uint(138),uint(248),uint(182),uint(336),uint(1132111),uint(402),uint(446),uint(1121112),uint(1103113),uint(1642112),uint(1153111),uint(1528113),uint(1404111),uint(81),uint(169),uint(235),uint(455),uint(389),uint(1638113),uint(1275111),uint(1581111),uint(1214112),uint(1441112),uint(1299111),uint(1196113),uint(1128112),uint(1612111),uint(1428111),uint(1197113),uint(90),uint(134),uint(200),uint(222),uint(442),uint(486),uint(1138112),uint(1256112),uint(1433113),uint(1351112),uint(1528111),uint(1102113),uint(1160111),uint(1440113),uint(1120117),uint(1491111),uint(1209111),uint(55),uint(99),uint(231),uint(275),uint(165),uint(187),uint(407),uint(341),uint(319),uint(1531112),uint(1451113),uint(1997113),uint(1567111),uint(1198112),uint(1255113),uint(1996123),uint(1113112),uint(108),uint(262),uint(438),uint(394),uint(1711113),uint(1208112),uint(1525111),uint(1274111),uint(73),uint(139),uint(183),uint(337),uint(491),uint(403),uint(447),uint(1120112),uint(1207113),uint(6116112),uint(1128111),uint(1214113),uint(82),uint(170),uint(1103112),uint(192),uint(236),uint(390),uint(1269113),uint(1612112),uint(1372111),uint(1299112),uint(1436113),uint(1441111),uint(1164111),uint(1121111),uint(1637111),uint(1828124),uint(1195111),uint(69),uint(91),uint(223),uint(487),uint(443),uint(1160112),uint(1196111),uint(1404113),uint(1440112),uint(1255112),uint(1138111),uint(100),uint(56),uint(188),uint(210),uint(232),uint(1198113),uint(166),uint(1612113),uint(320),uint(276),uint(408),uint(1433112),uint(1506111),uint(1351113),uint(1638111),uint(1102112),uint(1120116),uint(1113111),uint(1997112),uint(1536113),uint(109),uint(87),uint(1996122),uint(263),uint(439),uint(395),uint(483),uint(30),uint(96),uint(74),uint(6116113),uint(162),uint(140),uint(184),uint(448),uint(404),uint(338),uint(1164112),uint(1275113),uint(1828123),uint(1997111),uint(1436112),uint(1209112),uint(1296113),uint(1996121),uint(1531111),uint(1120111),uint(83),uint(171),uint(193),uint(391),uint(1251113),uint(1195112),uint(1299113),uint(1220111),uint(1428113),uint(1491112),uint(70),uint(92),uint(180),uint(224),uint(246),uint(444),uint(1256111),uint(1711112),uint(1208113),uint(1637112),uint(1103111),uint(1269112),uint(1567113),uint(1440111),uint(1153113),uint(1255111),uint(1433111),uint(101),uint(167),uint(277),uint(1220113),uint(211),uint(233),uint(409),uint(387),uint(453),uint(1160113),uint(1197111),uint(1217121),uint(1581113),uint(88),uint(132),uint(110),uint(198),uint(440),uint(484),uint(1525113),uint(1506112),uint(1120115),uint(1132113),uint(31),uint(97),uint(163),uint(185),uint(339),uint(449),uint(273),uint(405),uint(1536112),uint(1828122),uint(1207111),uint(1436111),uint(1209113),uint(1637113),uint(1214111),uint(1296112),uint(172),uint(194),uint(1274113),uint(392),uint(1195113),uint(1372113),uint(1121113),uint(1164113),uint(1451111),uint(1102111),uint(1428112),uint(1491113),uint(71),uint(181),uint(247),uint(445),uint(1638112),uint(1642111),uint(489),uint(1711111),uint(1196112),uint(1128113),uint(1251112),uint(1269111),uint(1153112),uint(1275112),uint(1220112),uint(212),uint(234),uint(1404112),uint(168)})))|(.Peel:->contains($uint,[]uint{uint(2111112),uint(2149113),uint(20861122),uint(2117113),uint(2128113),uint(2104112),uint(1287111),uint(2131113),uint(2105111),uint(2108112),uint(2101112),uint(20861121),uint(2149112),uint(2111111),uint(2128112),uint(4674001),uint(2104111),uint(2117112),uint(2149111),uint(2108111),uint(2101111),uint(2113113),uint(2131112),uint(2117111),uint(4674002),uint(2105113),uint(2128111),uint(1287113),uint(2113112),uint(2131111),uint(2104113),uint(20861123),uint(2105112),uint(4674003),uint(2111113),uint(2101113),uint(1287112),uint(2113111),uint(2108113)})&.Rotten:== uint(4111)))|(.Peel:->contains($uint,[]uint{uint(11761),uint(19012),uint(14251),uint(15391),uint(13543),uint(19932),uint(12241),uint(16821),uint(19892),uint(14252),uint(15871),uint(16021),uint(11762),uint(19893),uint(16822),uint(15392),uint(17011),uint(15872),uint(19361),uint(19933),uint(16831),uint(12242),uint(16651),uint(15881),uint(15661),uint(14253),uint(14671),uint(13901),uint(15393),uint(17012),uint(13831),uint(11763),uint(16022),uint(12243),uint(16823),uint(13902),uint(15873),uint(13541),uint(16832),uint(16652),uint(15882),uint(19362),uint(14672),uint(15662),uint(13832),uint(17013),uint(16023),uint(16833),uint(13542),uint(15663),uint(15883),uint(14673),uint(13903),uint(19931),uint(13833),uint(19011),uint(19891),uint(16653)})&.Rotten:== uint(5002)))|(.Peel:->contains($uint,[]uint{uint(14782),uint(11051),uint(12503),uint(12151),uint(13792),uint(14122),uint(16731),uint(14751),uint(10303),uint(15521),uint(12934),uint(12582),uint(14813),uint(12952),uint(13823),uint(14241),uint(11412),uint(10752),uint(16212),uint(13713),uint(11082),uint(17792),uint(17682),uint(14303),uint(14831),uint(14853),uint(13643),uint(16362),uint(11421),uint(14932),uint(15482),uint(14052),uint(12323),uint(17431),uint(14822),uint(12103),uint(15522),uint(12583),uint(17361),uint(14752),uint(19851),uint(13982),uint(15513),uint(15491),uint(15601),uint(15161),uint(17291),uint(12152),uint(12504),uint(16213),uint(11083),uint(10753),uint(14123),uint(19601),uint(14981),uint(14783),uint(16732),uint(11052),uint(13661),uint(13793),uint(13771),uint(14823),uint(13481),uint(11422),uint(14053),uint(11831),uint(11413),uint(14242),uint(12953),uint(12931),uint(17731),uint(12311),uint(15492),uint(15602),uint(11431),uint(14832),uint(17793),uint(17683),uint(15162),uint(17001),uint(13644),uint(15461),uint(15483),uint(13662),uint(13772),uint(10151),uint(16733),uint(15611),uint(11053),uint(14841),uint(14753),uint(15523),uint(19641),uint(13983),uint(14291),uint(10754),uint(17732),uint(13781),uint(11832),uint(14243),uint(12153),uint(18071),uint(14982),uint(19611),uint(12501),uint(18031),uint(13821),uint(13711),uint(15462),uint(12932),uint(10301),uint(11423),uint(13482),uint(14292),uint(14842),uint(15603),uint(11432),uint(15163),uint(15493),uint(18230),uint(14811),uint(14833),uint(12312),uint(15511),uint(14301),uint(14851),uint(14983),uint(16734),uint(12101),uint(12321),uint(13641),uint(13663),uint(13773),uint(10152),uint(15612),uint(12933),uint(13483),uint(13791),uint(12581),uint(14121),uint(10302),uint(17733),uint(10623),uint(11833),uint(18081),uint(13782),uint(14812),uint(11081),uint(10751),uint(13712),uint(13822),uint(11411),uint(11433),uint(15463),uint(16211),uint(19251),uint(12502),uint(14781),uint(12322),uint(12102),uint(16361),uint(15613),uint(14931),uint(14843),uint(14821),uint(15481),uint(10153),uint(12951),uint(14051),uint(19771),uint(12313),uint(14293),uint(13783),uint(13981),uint(19291),uint(14852),uint(15512),uint(17791),uint(17681),uint(13642),uint(13664),uint(14302)})&.Rotten:== uint(3005)))|(.Rotten:== uint(4031)&.Peel:->contains($uint,[]uint{uint(2572113),uint(2556111),uint(2580112),uint(331),uint(2570111),uint(5310141),uint(252),uint(2903111),uint(2568113),uint(2575113),uint(292),uint(2909113),uint(2924111),uint(2589113),uint(2580111),uint(2576112),uint(332),uint(288),uint(2572112),uint(2904111),uint(2942112),uint(297),uint(253),uint(2903112),uint(42),uint(2568112),uint(5352141),uint(2915111),uint(2575112),uint(315),uint(293),uint(2589112),uint(2924112),uint(192),uint(2942111),uint(2571113),uint(2576111),uint(5356941),uint(2564113),uint(289),uint(2942113),uint(2904112),uint(2564112),uint(254),uint(298),uint(2556113),uint(2571112),uint(2903113),uint(43),uint(2572111),uint(316),uint(294),uint(2915112),uint(2568111),uint(2589111),uint(2924113),uint(193),uint(5356942),uint(290),uint(5352142),uint(2575111),uint(5310143),uint(2570113),uint(2571111),uint(299),uint(2580113),uint(2556112),uint(2564111),uint(330),uint(2909111),uint(317),uint(295),uint(2576113),uint(194),uint(2909112),uint(5310142),uint(2570112),uint(291),uint(5356943),uint(5352143)})))|(.Rotten:== uint(3182)&.Peel:->contains($uint,[]uint{uint(32151),uint(43582),uint(40453),uint(44083),uint(32152),uint(43583),uint(44081),uint(32153),uint(40451),uint(43581),uint(40452),uint(44082)})))|(.Rotten:== uint(2008)&.Peel:->contains($uint,[]uint{uint(32312),uint(32752),uint(48002),uint(32083),uint(32061),uint(32611),uint(32800),uint(32251),uint(32581),uint(46171),uint(32801),uint(30601),uint(30513),uint(32141),uint(30271),uint(32330),uint(32242),uint(32132),uint(32550),uint(32233),uint(32211),uint(32871),uint(32651),uint(32872),uint(32652),uint(32212),uint(32753),uint(30650),uint(32071),uint(32291),uint(48122),uint(32612),uint(32810),uint(48003),uint(32040),uint(32062),uint(32084),uint(46172),uint(32151),uint(32063),uint(32481),uint(32591),uint(32613),uint(32802),uint(32340),uint(48121),uint(32142),uint(32252),uint(32582),uint(30272),uint(32661),uint(30602),uint(32243),uint(48004),uint(32081),uint(32213),uint(32191),uint(32851),uint(32873),uint(32653),uint(32292),uint(32072),uint(32592),uint(32482),uint(30511),uint(32900),uint(32152),uint(32020),uint(32231),uint(32143),uint(32561),uint(38091),uint(32891),uint(32803),uint(29380),uint(30603),uint(30273),uint(32662),uint(32751),uint(32311),uint(32742),uint(32852),uint(32082),uint(32192),uint(48001),uint(32491),uint(32381),uint(32711),uint(32492),uint(32382),uint(32360),uint(32712),uint(30512),uint(48110),uint(32131),uint(32241),uint(32153),uint(29830),uint(32483),uint(38092),uint(32892),uint(32232),uint(32562),uint(46720)})))|(.Rotten:== uint(6002)&.Peel:->contains($uint,[]uint{uint(13471),uint(17862),uint(14153),uint(18192),uint(14131),uint(10092),uint(12041),uint(17391),uint(17871),uint(14012),uint(11403),uint(11333),uint(12301),uint(13502),uint(17321),uint(18161),uint(11553),uint(18183),uint(16661),uint(12182),uint(15583),uint(14901),uint(12842),uint(12512),uint(10013),uint(15121),uint(15143),uint(16503),uint(17801),uint(15073),uint(18131),uint(10031),uint(14721),uint(19231),uint(13841),uint(12631),uint(10022),uint(11254),uint(11232),uint(11342),uint(16582),uint(11452),uint(13533),uint(14013),uint(10062),uint(14101),uint(15962),uint(11131),uint(11373),uint(17471),uint(15122),uint(11061),uint(12821),uint(12843),uint(14132),uint(12513),uint(17511),uint(12183),uint(14902),uint(17872),uint(17401),uint(13472),uint(10093),uint(10071),uint(15421),uint(12632),uint(16583),uint(13842),uint(10023),uint(18171),uint(16662),uint(13503),uint(14621),uint(19232),uint(11132),uint(11233),uint(11453),uint(19351),uint(14722),uint(15422),uint(11251),uint(17881),uint(11581),uint(10072),uint(17371),uint(10041),uint(14102),uint(15963),uint(17802),uint(17851),uint(17411),uint(12844),uint(18181),uint(10081),uint(12822),uint(16663),uint(14903),uint(11062),uint(15123),uint(13473),uint(17882),uint(13451),uint(14001),uint(14111),uint(14133),uint(15581),uint(14723),uint(15141),uint(13843),uint(14151),uint(18172),uint(11401),uint(11731),uint(12633),uint(11551),uint(13421),uint(13531),uint(19352),uint(14622),uint(10011),uint(11133),uint(11331),uint(14002),uint(10051),uint(14112),uint(17381),uint(10601),uint(16501),uint(11371),uint(11063),uint(17803),uint(15071),uint(11252),uint(11582),uint(19321),uint(14103),uint(11402),uint(14011),uint(17861),uint(18191),uint(11921),uint(10082),uint(12823),uint(18173),uint(12841),uint(12511),uint(13501),uint(12401),uint(16660),uint(12181),uint(10012),uint(15142),uint(15582),uint(10091),uint(14152),uint(17421),uint(17852),uint(18182),uint(10021),uint(19353),uint(15072),uint(17351),uint(13422),uint(13532),uint(11253),uint(11231),uint(11451),uint(11341),uint(11583),uint(16581),uint(11552),uint(11332),uint(14623),uint(15961),uint(11372),uint(10061),uint(10083),uint(16502),uint(14003),uint(14113),uint(10602)})))|(.Rotten:== uint(50103)&.Peel:->contains($uint,[]uint{uint(15753),uint(19858),uint(16545),uint(19132),uint(15335),uint(10856),uint(19462),uint(14895),uint(62976),uint(62646),uint(12915),uint(62967),uint(62637),uint(62725),uint(18635),uint(62747),uint(10416),uint(15656),uint(15436),uint(18683),uint(18991),uint(18903),uint(10896),uint(10412),uint(10852),uint(19035),uint(12647),uint(15432),uint(12911),uint(10491),uint(18472),uint(18736),uint(62826),uint(62716),uint(13496),uint(16061),uint(18477),uint(62685),uint(62817),uint(18631),uint(13492),uint(63015),uint(19467),uint(15705),uint(63006),uint(17914),uint(31113),uint(14187),uint(12916),uint(15657),uint(15745),uint(17918),uint(62016),uint(62676),uint(18732),uint(18688),uint(61743),uint(19854),uint(16541),uint(14183),uint(62667),uint(62645),uint(10892),uint(62997),uint(62975),uint(16066),uint(12643),uint(10496),uint(62955),uint(62735),uint(13497),uint(16062),uint(18636),uint(18680),uint(10492),uint(10945),uint(14896),uint(15336),uint(10857),uint(61116),uint(10417),uint(60412),uint(10897),uint(10853),uint(10941),uint(11095),uint(10413),uint(10765),uint(17175),uint(62726),uint(18473),uint(62695),uint(62915),uint(62805),uint(62827),uint(19463),uint(12912),uint(18737),uint(15741),uint(16546),uint(19859),uint(16067),uint(15715),uint(10497),uint(18685),uint(17915),uint(15055),uint(19851),uint(18905),uint(19081),uint(62686),uint(17176),uint(13493),uint(15706),uint(63016),uint(62655),uint(62677),uint(18733),uint(63007),uint(19085),uint(62985),uint(16542),uint(62875),uint(12917),uint(61115),uint(60411),uint(19855),uint(10858),uint(15746),uint(18632),uint(11091),uint(10893),uint(10761),uint(15742),uint(60413),uint(62635),uint(62965),uint(62657),uint(62745),uint(62877),uint(19086),uint(62956),uint(16063),uint(15755),uint(10625),uint(19856),uint(10493),uint(16543),uint(15337),uint(14897),uint(61117),uint(10775),uint(15751),uint(16547),uint(10766),uint(17911),uint(18637),uint(18681),uint(12913),uint(18901),uint(62815),uint(62727),uint(11096),uint(62925),uint(10854),uint(10762),uint(18906),uint(19082),uint(31111),uint(14185),uint(62696),uint(62806),uint(18686),uint(62916),uint(19852),uint(11092),uint(17177),uint(15716),uint(11545),uint(63017),uint(62995),uint(12645),uint(19135),uint(19465),uint(15056),uint(18475),uint(12641),uint(17995),uint(11541),uint(15756),uint(61741),uint(62687),uint(62665),uint(18633),uint(62656),uint(10859),uint(15747),uint(62876),uint(17916),uint(62966),uint(62636),uint(62746),uint(18471),uint(11097),uint(10767),uint(10855),uint(19461),uint(15743),uint(18735),uint(10415),uint(15435),uint(19131),uint(15655),uint(19087),uint(10626),uint(19857),uint(17996),uint(14181),uint(15431),uint(15057),uint(10776),uint(62825),uint(17912),uint(62957),uint(13495),uint(62715),uint(11546),uint(62926),uint(62816),uint(18682),uint(18902),uint(15752),uint(13491),uint(18476),uint(14186),uint(19466),uint(10411),uint(62015),uint(19136),uint(31112),uint(12646),uint(62675),uint(62807),uint(11093),uint(10763),uint(10851),uint(17913),uint(10895),uint(62917),uint(63005),uint(15717),uint(62666),uint(10495),uint(52305),uint(62996),uint(14182),uint(10891),uint(16065),uint(11542),uint(15757),uint(18687),uint(18731),uint(17917),uint(12642),uint(19853),uint(61742),uint(18907),uint(18995),uint(19083)})))|(.Rotten:== uint(4011)&.Peel:->contains($uint,[]uint{uint(1585112),uint(72),uint(15851123),uint(1526111),uint(1170111),uint(1260113),uint(1577113),uint(15261112),uint(1846112),uint(1625113),uint(1496113),uint(13701111),uint(103),uint(169),uint(1797111),uint(1584113),uint(15841122),uint(1368112),uint(14021112),uint(14021111),uint(1522112),uint(16401122),uint(1931113),uint(165),uint(275),uint(451),uint(1979111),uint(15261111),uint(1152113),uint(262),uint(15851122),uint(1500112),uint(1261112),uint(1370111),uint(1327111),uint(14961121),uint(11521122),uint(1640111),uint(1978112),uint(1585111),uint(73),uint(1327112),uint(315),uint(1260112),uint(1495111),uint(104),uint(1584112),uint(390),uint(23381121),uint(1170112),uint(13701112),uint(1577112),uint(135),uint(14021113),uint(1797112),uint(15841121),uint(6484003),uint(1846111),uint(13701121),uint(1534113),uint(1522111),uint(1368113),uint(13681123),uint(210),uint(166),uint(452),uint(1219121),uint(1175111),uint(1517113),uint(14021121),uint(1307111),uint(1152112),uint(16401121),uint(15851121),uint(263),uint(1980113),uint(1978111),uint(1261111),uint(1170113),uint(1640112),uint(11521121),uint(1151113),uint(74),uint(316),uint(1402113),uint(1500113),uint(1534112),uint(23381122),uint(1584111),uint(391),uint(1526113),uint(1577111),uint(1206121),uint(13701113),uint(1327113),uint(15261123),uint(6484002),uint(13701122),uint(136),uint(1307112),uint(1931111),uint(1625111),uint(1496111),uint(211),uint(167),uint(14021123),uint(1219122),uint(1175112),uint(1152111),uint(14021122),uint(13681122),uint(1797113),uint(15841124),uint(1980112),uint(14961123),uint(15261122),uint(1370113),uint(1495112),uint(1640113),uint(1517112),uint(1151112),uint(273),uint(317),uint(1979113),uint(1402112),uint(1260111),uint(1978113),uint(1261113),uint(392),uint(1534111),uint(1585113),uint(1526112),uint(6484001),uint(137),uint(1931112),uint(13701123),uint(1368111),uint(1846113),uint(1496112),uint(23381123),uint(102),uint(212),uint(15261113),uint(1625112),uint(1584114),uint(1522113),uint(1307113),uint(1500111),uint(16401123),uint(15261121),uint(1980111),uint(15841123),uint(13681121),uint(1151111),uint(1402111),uint(14961122),uint(274),uint(11521123),uint(450),uint(1206122),uint(1370112),uint(1517111),uint(1979112),uint(1495113),uint(1175113),uint(261)})))|(.Peel:->contains($uint,[]uint{uint(9626912),uint(9625711),uint(9626811),uint(9629112),uint(6326442),uint(9629011),uint(6323041),uint(6325742),uint(6327942),uint(6610443),uint(9627413),uint(9626212),uint(6320981),uint(9629261),uint(9629811),uint(9660613),uint(6320141),uint(9629512),uint(6321043),uint(6326243),uint(6321241),uint(9628412),uint(6326441),uint(6401442),uint(6327541),uint(6324743),uint(9625812),uint(6387042),uint(9628311),uint(9628113),uint(6394341),uint(6327941),uint(9625811),uint(6320743),uint(9626911),uint(9628112),uint(6321042),uint(9661511),uint(6324443),uint(9628913),uint(6386841),uint(6325143),uint(9629111),uint(6325741),uint(9626313),uint(9626312),uint(9630813),uint(6394342),uint(9627412),uint(6610543),uint(6325142),uint(9631913),uint(9626211),uint(6322243),uint(6387043),uint(9627113),uint(9628411),uint(6324742),uint(6401443),uint(6610442),uint(6326242),uint(6320043),uint(9629511),uint(9626813),uint(9628111),uint(6386842),uint(9661512),uint(6324442),uint(6321041),uint(6325243),uint(9629013),uint(6326343),uint(6324741),uint(6322242),uint(9628912),uint(9626413),uint(6320742),uint(9628613),uint(6323043),uint(9628612),uint(6320143),uint(6325141),uint(9626311),uint(6394343),uint(9630812),uint(9627411),uint(6320042),uint(6326342),uint(9628313),uint(9627112),uint(6610441),uint(9631912),uint(6610542),uint(9660611),uint(6326241),uint(6321243),uint(9625713),uint(9629113),uint(9625712),uint(9661513),uint(9626812),uint(6322241),uint(6387041),uint(6326443),uint(9629012),uint(6320041),uint(6327543),uint(6325242),uint(6327943),uint(6320741),uint(6320983),uint(6323042),uint(9629263),uint(9629813),uint(9628911),uint(9626412),uint(6324441),uint(9626213),uint(9629812),uint(9626411),uint(6401441),uint(9629262),uint(9629513),uint(6320982),uint(6325743),uint(9628413),uint(9628611),uint(6327542),uint(9631911),uint(9628312),uint(6325241),uint(9630811),uint(6321242),uint(9660612),uint(6326341),uint(6610541),uint(6386843),uint(9625813),uint(9627111),uint(6320142),uint(9626913)})&.Rotten:== uint(6051)))|(.Peel:->contains($uint,[]uint{uint(12736),uint(53852),uint(45532),uint(8873),uint(20792),uint(41251),uint(53522),uint(37322),uint(12692),uint(45422),uint(50011),uint(16555),uint(50033),uint(53412),uint(61622),uint(12362),uint(9005),uint(49813),uint(37212),uint(16687),uint(49923),uint(53324),uint(12516),uint(9115),uint(49021),uint(3976),uint(58551),uint(12076),uint(54512),uint(3932),uint(50451),uint(62722),uint(50253),uint(11966),uint(48911),uint(50231),uint(12142),uint(46412),uint(17743),uint(54314),uint(17831),uint(50121),uint(61512),uint(52752),uint(16423),uint(48713),uint(3426),uint(13726),uint(22266),uint(7773),uint(1015),uint(16291),uint(10083),uint(60566),uint(10127),uint(10017),uint(40151),uint(1785),uint(30476),uint(30696),uint(38752),uint(7113),uint(60676),uint(15675),uint(15257),uint(9753),uint(46632),uint(60896),uint(2291),uint(60236),uint(60126),uint(18623),uint(9797),uint(60786),uint(18601),uint(15961),uint(9863),uint(60016),uint(1367),uint(40613),uint(46522),uint(15015),uint(9973),uint(9951),uint(6585),uint(40811),uint(18953),uint(43332),uint(43552),uint(6607),uint(51652),uint(43222),uint(55612),uint(55722),uint(35166),uint(40723),uint(38422),uint(41031),uint(18755),uint(18777),uint(41053),uint(4416),uint(40921),uint(15367),uint(60456),uint(18931),uint(23973),uint(18887),uint(14047),uint(30467),uint(60707),uint(63351),uint(60685),uint(51014),uint(60817),uint(14333),uint(19965),uint(14377),uint(60377),uint(46623),uint(60795),uint(13937),uint(14355),uint(10096),uint(61015),uint(46513),uint(40512),uint(43913),uint(50552),uint(19437),uint(60927),uint(60267),uint(51432),uint(60905),uint(60245),uint(14223),uint(60157),uint(56712),uint(30225),uint(40622),uint(60135),uint(14707),uint(40952),uint(40732),uint(36583),uint(51322),uint(14421),uint(2951),uint(4337),uint(12991),uint(51212),uint(60465),uint(53751),uint(60575),uint(2731),uint(29851),uint(48251),uint(64627),uint(53623),uint(64605),uint(59211),uint(59321),uint(42813),uint(11262),uint(53513),uint(43011),uint(37331),uint(59453),uint(37353),uint(59123),uint(37375),uint(59013),uint(64935),uint(42923),uint(11394),uint(54213),uint(43253),uint(54191),uint(22794),uint(54323),uint(16502),uint(22618),uint(43231),uint(42351),uint(43033),uint(38123),uint(5736),uint(37221),uint(43121),uint(50222),uint(60047),uint(54521),uint(50112),uint(1398),uint(52853),uint(47613),uint(60025),uint(54411),uint(53051),uint(23366),uint(54433),uint(15996),uint(3677),uint(47921),uint(11042),uint(52611),uint(30775),uint(1046),uint(47811),uint(52633),uint(45312),uint(47723),uint(52721),uint(57152),uint(30687),uint(6141),uint(14329),uint(60425),uint(27651),uint(14373),uint(60447),uint(14351),uint(42932),uint(14417),uint(60315),uint(64596),uint(60535),uint(14395),uint(60227),uint(56452),uint(60557),uint(1816),uint(39113),uint(14043),uint(47213),uint(60205),uint(60645),uint(51054),uint(60051),uint(60755),uint(60777),uint(1662),uint(50812),uint(5811),uint(47411),uint(64926),uint(47521),uint(60117),uint(50922),uint(60095),uint(46553),uint(43152),uint(9982),uint(46531),uint(10092),uint(60865),uint(60007),uint(14285),uint(10026),uint(15011),uint(38211),uint(14945),uint(55924),uint(14703),uint(56012),uint(42712),uint(30766),uint(56122),uint(28201),uint(38453),uint(42822),uint(51252),uint(40213),uint(41612),uint(48511),uint(49822),uint(58951),uint(48423),uint(53711),uint(20761),uint(53733),uint(48621),uint(53821),uint(50152),uint(53553),uint(11962),uint(36592),uint(11896),uint(25825),uint(16696),uint(53333),uint(44912),uint(54151),uint(53311),uint(39751),uint(49932),uint(53421),uint(4975),uint(11786),uint(2762),uint(45132),uint(53223),uint(62352),uint(45022),uint(59611),uint(13515),uint(2696),uint(13757),uint(11016),uint(47631),uint(47653),uint(57222),uint(62713),uint(2982),uint(16586),uint(53113),uint(62823),uint(22798),uint(8605),uint(17822),uint(13977),uint(39223),uint(13933),uint(39311),uint(62022),uint(8693),uint(59413),uint(62911),uint(13955),uint(8781),uint(17932),uint(63021),uint(45352),uint(11535),uint(11601),uint(41621),uint(52651),uint(59312),uint(15816),uint(37912),uint(59422),uint(11865),uint(37252),uint(15992),uint(11821),uint(41533),uint(38132),uint(11667),uint(15046),uint(41511),uint(11645),uint(8363),uint(42413),uint(18856),uint(55713),uint(45013),uint(1451),uint(59752),uint(18944),uint(47732),uint(3972),uint(47512),uint(45123),uint(1385),uint(47622),uint(22851),uint(11161),uint(45321),uint(11205),uint(62251),uint(1275),uint(45211),uint(11293),uint(45233),uint(1165),uint(61811),uint(40323),uint(12965),uint(51023),uint(8882),uint(45651),uint(51133),uint(39122),uint(56351),uint(14276),uint(63012),uint(51111),uint(2133),uint(12745),uint(14386),uint(9036),uint(50913),uint(40411),uint(40521),uint(2243),uint(40433),uint(39232),uint(12767),uint(61921),uint(1825),uint(63452),uint(56813),uint(2551),uint(9146),uint(40653),uint(40631),uint(12525),uint(2617),uint(61613),uint(30128),uint(61723),uint(2463),uint(39012),uint(12547),uint(6801),uint(46421),uint(49052),uint(46311),uint(55911),uint(9366),uint(60975),uint(43922),uint(11975),uint(9762),uint(32451),uint(11953),uint(43812),uint(46333),uint(41313),uint(56021),uint(48722),uint(58652),uint(11997),uint(46223),uint(51221),uint(17105),uint(12085),uint(12063),uint(48612),uint(46113),uint(38572),uint(19692),uint(11817),uint(15812),uint(42522),uint(11795),uint(15966),uint(50622),uint(58722),uint(46451),uint(11993),uint(42632),uint(19697),uint(23978),uint(11641),uint(62651),uint(54551),uint(32452),uint(12081),uint(7822),uint(46253),uint(42852),uint(62541),uint(38571),uint(19433),uint(59052),uint(62453),uint(50512),uint(37823),uint(11025),uint(11135),uint(2991),uint(62321),uint(11245),uint(62123),uint(37911),uint(59712),uint(37933),uint(63553),uint(4377),uint(62211),uint(11201),uint(38131),uint(4707),uint(11531),uint(38153),uint(50952),uint(42412),uint(63751),uint(53451),uint(9076),uint(22614),uint(56223),uint(14426),uint(13005),uint(53231),uint(12961),uint(41312),uint(39693),uint(48211),uint(53253),uint(56311),uint(48233),uint(53011),uint(56553),uint(12763),uint(52923),uint(53121),uint(56421),uint(64917),uint(22856),uint(12697),uint(61551),uint(17836),uint(60825),uint(39121),uint(12543),uint(60847),uint(23362),uint(12565),uint(9692),uint(47221),uint(44722),uint(38923),uint(9956),uint(52835),uint(14976),uint(39253),uint(39231),uint(10022),uint(4047),uint(60957),uint(60935),uint(47331),uint(49852),uint(12521),uint(52813),uint(12147),uint(41422),uint(41532),uint(39011),uint(47551),uint(58612),uint(39033),uint(20775),uint(20797),uint(1262),uint(45052),uint(41211),uint(12996),uint(6423),uint(41123),uint(18606),uint(41321),uint(18782),uint(61912),uint(47652),uint(9045),uint(18936),uint(2362),uint(9067),uint(41013),uint(53812),uint(57213),uint(12732),uint(6687),uint(54032),uint(12556),uint(2516),uint(9221),uint(9265),uint(18716),uint(41233),uint(37832),uint(60966),uint(16485),uint(47212),uint(54252),uint(16507),uint(37722),uint(61076),uint(16375),uint(60856),uint(9793),uint(16265),uint(12512),uint(16595),uint(58423),uint(44713),uint(47322),uint(58511),uint(9881),uint(13722),uint(40133),uint(25826),uint(40111),uint(58621),uint(47432),uint(44911),uint(40023),uint(45021),uint(41651),uint(44933),uint(39913),uint(51713),uint(15737),uint(60306),uint(45153),uint(3726),uint(45131),uint(50613),uint(60196),uint(50723),uint(60086),uint(60152),uint(5257),uint(43952),uint(30736),uint(10013),uint(60636),uint(40221),uint(43622),uint(15253),uint(40331),uint(43732),uint(48752),uint(45351),uint(60746),uint(38712),uint(51251),uint(5675),uint(46033),uint(46011),uint(51053),uint(46121),uint(65106),uint(15363),uint(15385),uint(50921),uint(15407),uint(5367),uint(43512),uint(53552),uint(50833),uint(7932),uint(50811),uint(53354),uint(48422),uint(48312),uint(22491),uint(39922),uint(22495),uint(30793),uint(9107),uint(9085),uint(1161),uint(47912),uint(5002),uint(39812),uint(12992),uint(30375),uint(43653),uint(40252),uint(43851),uint(57151),uint(48022),uint(43323),uint(51511),uint(44753),uint(51533),uint(56623),uint(1623),uint(51621),uint(56711),uint(60706),uint(10097),uint(43521),uint(44951),uint(56513),uint(60816),uint(43213),uint(43631),uint(38932),uint(18786),uint(41022),uint(54322),uint(54212),uint(18852),uint(16503),uint(60926),uint(9745),uint(65383),uint(43411),uint(62752),uint(39152),uint(40912),uint(16591),uint(15997),uint(54652),uint(60046),uint(50851),uint(45413),uint(2547),uint(28206),uint(54432),uint(37313),uint(42333),uint(10515),uint(42311),uint(42751),uint(10955),uint(16371),uint(45721),uint(16261),uint(10185),uint(50521),uint(42223),uint(11021),uint(16305),uint(2745),uint(45611),uint(49012),uint(11131),uint(45633),uint(50631),uint(50653),uint(45523),uint(51423),uint(15315),uint(15381),uint(15403),uint(4386),uint(37731),uint(1975),uint(1997),uint(1953),uint(63852),uint(2085),uint(60376),uint(37533),uint(60266),uint(42421),uint(37423),uint(30837),uint(30925),uint(42531),uint(15733),uint(37511),uint(42553),uint(40032),uint(60156),uint(60165),uint(62721),uint(60187),uint(38721),uint(60011),uint(62853),uint(60055),uint(60077),uint(60451),uint(56412),uint(60517),uint(43112),uint(60495),uint(14281),uint(60605),uint(10088),uint(14413),uint(11012),uint(4395),uint(60715),uint(14391),uint(4417),uint(42232),uint(60737),uint(3515),uint(52822),uint(37951),uint(2965),uint(2921),uint(17937),uint(48651),uint(50411),uint(45712),uint(46152),uint(15095),uint(14941),uint(22262),uint(4945),uint(42452),uint(32456),uint(48321),uint(32522),uint(45822),uint(60297),uint(38413),uint(20766),uint(52712),uint(63513),uint(48431),uint(50213),uint(60275),uint(41352),uint(58713),uint(34647),uint(18575),uint(6586),uint(58823),uint(39953),uint(11826),uint(18751),uint(39931),uint(11782),uint(41132),uint(18773),uint(39821),uint(39733),uint(39711),uint(59021),uint(58911),uint(63953),uint(18707),uint(62312),uint(1016),uint(16582),uint(13951),uint(1786),uint(54221),uint(11166),uint(54023),uint(64657),uint(13753),uint(16296),uint(51612),uint(54111),uint(64635),uint(8755),uint(11276),uint(39051),uint(18883),uint(51722),uint(11386),uint(11606),uint(3977),uint(13973),uint(8953),uint(59351),uint(8931),uint(54331),uint(56852),uint(3955),uint(54353),uint(3933),uint(18932),uint(47623),uint(55811),uint(6595),uint(55723),uint(14915),uint(55921),uint(47513),uint(14805),uint(11162),uint(47931),uint(7101),uint(30697),uint(18756),uint(2732),uint(30675),uint(51222),uint(60466),uint(47733),uint(51112),uint(47821),uint(47711),uint(30785),uint(11206),uint(56251),uint(38753),uint(30477),uint(64637),uint(38621),uint(64615),uint(60246),uint(23367),uint(40513),uint(43122),uint(43232),uint(30235),uint(38951),uint(15025),uint(43012),uint(60026),uint(60136),uint(40623),uint(2292),uint(50232),uint(48921),uint(50122),uint(11976),uint(48811),uint(50452),uint(58552),uint(11866),uint(5011),uint(45322),uint(48723),uint(22245),uint(17106),uint(45212),uint(22267),uint(57153),uint(13727),uint(53752),uint(12086),uint(51024),uint(59212),uint(45652),uint(11536),uint(53611),uint(61821),uint(59322),uint(53523),uint(37332),uint(64945),uint(50914),uint(8883),uint(14365),uint(2952),uint(37376),uint(14387),uint(9125),uint(53413),uint(11822),uint(61623),uint(9015),uint(9037),uint(16556),uint(39831),uint(42352),uint(22795),uint(61711),uint(37222),uint(5737),uint(11602),uint(65165),uint(39721),uint(9147),uint(54192),uint(11646),uint(54522),uint(42251),uint(48912),uint(17665),uint(52951),uint(12077),uint(11967),uint(11945),uint(1201),uint(12143),uint(17775),uint(54324),uint(15962),uint(38212),uint(54412),uint(52621),uint(58913),uint(59023),uint(52731),uint(16292),uint(18171),uint(52753),uint(42713),uint(18061),uint(45511),uint(22496),uint(11285),uint(45533),uint(59353),uint(48252),uint(1817),uint(1795),uint(8575),uint(45313),uint(47922),uint(11395),uint(45423),uint(59551),uint(59111),uint(8421),uint(64936),uint(1641),uint(1663),uint(50012),uint(9006),uint(15676),uint(5812),uint(9116),uint(45621),uint(40821),uint(2697),uint(35167),uint(62723),uint(40711),uint(40733),uint(62811),uint(30125),uint(2565),uint(3005),uint(14356),uint(62921),uint(51213),uint(18765),uint(41151),uint(2961),uint(51851),uint(18787),uint(55622),uint(61522),uint(18853),uint(14422),uint(2851),uint(18875),uint(40953),uint(40931),uint(55512),uint(61412),uint(2763),uint(39312),uint(18941),uint(10084),uint(12693),uint(60576),uint(60686),uint(60796),uint(41613),uint(63251),uint(46633),uint(15016),uint(60906),uint(61016),uint(46523),uint(46611),uint(4976),uint(51411),uint(58451),uint(51433),uint(49022),uint(12517),uint(46413),uint(9952),uint(51521),uint(16376),uint(45023),uint(53211),uint(53233),uint(16486),uint(53321),uint(58411),uint(3973),uint(54152),uint(45221),uint(58521),uint(16596),uint(62252),uint(16266),uint(53123),uint(45133),uint(11963),uint(45111),uint(11985),uint(8606),uint(58653),uint(52837),uint(17933),uint(48622),uint(12095),uint(29852),uint(53013),uint(62912),uint(63022),uint(12205),uint(48732),uint(45353),uint(8782),uint(45331),uint(49832),uint(18065),uint(18175),uint(61812),uint(11655),uint(41622),uint(20762),uint(61922),uint(58851),uint(9046),uint(59313),uint(46013),uint(48512),uint(37451),uint(45551),uint(11941),uint(37231),uint(11875),uint(9266),uint(5095),uint(43923),uint(57311),uint(18285),uint(39752),uint(50052),uint(11787),uint(63352),uint(9222),uint(41512),uint(37253),uint(46453),uint(1386),uint(6802),uint(18857),uint(14946),uint(32461),uint(1276),uint(15012),uint(46321),uint(38221),uint(1452),uint(9794),uint(55912),uint(18945),uint(60976),uint(9882),uint(43351),uint(18571),uint(46123),uint(56022),uint(15386),uint(30776),uint(6142),uint(46211),uint(1166),uint(38573),uint(51253),uint(51231),uint(42933),uint(42911),uint(60426),uint(43021),uint(64606),uint(42823),uint(40412),uint(12755),uint(60536),uint(1826),uint(51451),uint(37913),uint(60756),uint(60646),uint(12535),uint(40522),uint(12513),uint(60866),uint(30226),uint(46651),uint(12557),uint(43153),uint(38133),uint(38111),uint(40632),uint(46312),uint(43712),uint(43822),uint(63651),uint(46422),uint(6811),uint(13516),uint(2992),uint(2618),uint(30767),uint(61095),uint(50131),uint(9763),uint(50153),uint(39321),uint(23974),uint(13956),uint(19693),uint(9631),uint(17115),uint(40223),uint(6305),uint(12966),uint(40311),uint(39431),uint(6261),uint(10181),uint(14286),uint(43052),uint(39013),uint(40421),uint(40333),uint(53721),uint(56352),uint(14352),uint(60567),uint(10093),uint(60545),uint(51121),uint(60655),uint(53853),uint(39123),uint(40531),uint(14396),uint(53831),uint(60611),uint(39233),uint(39211),uint(12746),uint(60677),uint(51011),uint(40751),uint(16587),uint(54051),uint(16697),uint(2552),uint(53422),uint(60787),uint(50923),uint(60765),uint(60985),uint(9983),uint(10027),uint(9961),uint(27652),uint(60897),uint(53334),uint(60875),uint(49053),uint(50813),uint(46532),uint(53312),uint(12526),uint(53114),uint(10885),uint(22852),uint(59753),uint(28202),uint(10951),uint(10995),uint(11017),uint(42612),uint(47632),uint(16125),uint(10511),uint(11215),uint(42722),uint(17832),uint(59423),uint(59511),uint(11391),uint(59621),uint(16345),uint(10445),uint(11325),uint(54513),uint(42832),uint(11281),uint(60435),uint(60457),uint(49823),uint(20793),uint(20771),uint(40113),uint(60215),uint(52652),uint(60237),uint(18602),uint(60105),uint(37372),uint(15817),uint(15993),uint(50021),uint(64927),uint(15795),uint(60127),uint(47522),uint(59951),uint(49911),uint(44913),uint(49933),uint(47412),uint(60017),uint(48652),uint(9693),uint(52713),uint(60835),uint(60857),uint(44723),uint(52911),uint(1395),uint(52823),uint(44811),uint(60967),uint(5676),uint(9957),uint(40112),uint(60945),uint(48322),uint(1285),uint(1945),uint(18365),uint(44921),uint(60395),uint(45053),uint(61077),uint(48432),uint(2055),uint(60351),uint(60307),uint(25827),uint(22492),uint(13952),uint(45031),uint(60285),uint(61165),uint(10441),uint(18607),uint(18761),uint(13006),uint(43821),uint(41322),uint(18783),uint(12962),uint(56312),uint(17111),uint(18871),uint(48212),uint(43953),uint(43513),uint(60505),uint(53813),uint(56422),uint(60637),uint(14282),uint(10023),uint(60615),uint(43623),uint(60747),uint(54011),uint(18717),uint(41212),uint(43733),uint(18695),uint(14392),uint(60725),uint(43711),uint(11145),uint(37723),uint(11167),uint(45911),uint(54121),uint(54231),uint(54253),uint(46021),uint(16583),uint(54033),uint(16385),uint(16605),uint(37921),uint(46131),uint(59713),uint(11321),uint(8175),uint(16341),uint(46153),uint(59251),uint(43051),uint(50953),uint(51723),uint(54451),uint(18937),uint(7933),uint(11387),uint(11365),uint(50821),uint(8021),uint(19971),uint(38251),uint(16495),uint(37371),uint(15813),uint(60175),uint(15945),uint(60197),uint(42523),uint(42611),uint(2363),uint(60021),uint(62652),uint(60087),uint(15835),uint(60065),uint(42633),uint(27851),uint(46351),uint(62542),uint(10881),uint(40222),uint(42721),uint(15967),uint(10991),uint(62322),uint(11035),uint(37833),uint(11013),uint(42831),uint(40332),uint(42853),uint(37811),uint(2517),uint(20741),uint(15065),uint(55551),uint(11026),uint(39131),uint(4387),uint(20763),uint(39153),uint(4365),uint(59612),uint(14911),uint(39351),uint(38933),uint(11202),uint(43522),uint(49831),uint(15021),uint(49853),uint(38911),uint(11136),uint(46012),uint(14977),uint(11246),uint(39021),uint(43412),uint(53452),uint(50051),uint(50623),uint(30737),uint(42532),uint(60316),uint(3727),uint(53122),uint(1162),uint(42752),uint(60096),uint(60206),uint(50711),uint(53232),uint(30715),uint(46452),uint(40231),uint(40253),uint(62551),uint(60052),uint(46122),uint(15285),uint(40451),uint(38713),uint(30495),uint(38691),uint(50513),uint(48731),uint(53012),uint(48753),uint(47222),uint(18066),uint(13635),uint(13723),uint(13745),uint(18176),uint(62353),uint(12566),uint(12522),uint(52836),uint(57223),uint(62221),uint(47332),uint(47552),uint(1976),uint(12082),uint(40121),uint(58512),uint(2086),uint(62111),uint(61913),uint(40033),uint(41652),uint(42422),uint(63752),uint(40011),uint(18286),uint(58622),uint(14405),uint(58952),uint(14361),uint(11642),uint(39923),uint(39813),uint(14427),uint(56211),uint(18858),uint(53712),uint(11532),uint(18572),uint(53822),uint(56321),uint(42312),uint(14515),uint(9055),uint(18946),uint(9077),uint(56651),uint(56453),uint(9231),uint(11796),uint(11286),uint(2966),uint(37952),uint(50113),uint(2922),uint(11396),uint(37732),uint(50421),uint(37512),uint(20745),uint(41551),uint(42453),uint(20767),uint(15677),uint(15831),uint(63611),uint(50223),uint(59352),uint(60166),uint(60056),uint(6587),uint(19975),uint(60012),uint(55621),uint(63853),uint(42321),uint(2746),uint(10956),uint(42233),uint(42211),uint(11022),uint(50553),uint(53052),uint(49013),uint(50531),uint(11132),uint(55511),uint(62313),uint(5795),uint(56721),uint(8765),uint(56611),uint(64645),uint(65107),uint(30275),uint(47812),uint(40913),uint(14225),uint(39052),uint(52612),uint(3956),uint(56853),uint(9095),uint(9007),uint(52722),uint(11946),uint(41331),uint(41221),uint(1017),uint(41353),uint(9117),uint(41133),uint(41111),uint(18752),uint(41023),uint(6125),uint(14335),uint(43632),uint(14357),uint(18708),uint(59022),uint(61521),uint(38722),uint(14423),uint(43852),uint(3516),uint(18576),uint(56413),uint(34635),uint(61411),uint(14511),uint(58912),uint(1787),uint(62212),uint(23363),uint(12465),uint(51512),uint(40812),uint(1611),uint(51622),uint(1655),uint(64636),uint(47451),uint(64658),uint(16372),uint(54112),uint(54354),uint(54332),uint(8756),uint(41032),uint(54222),uint(58613),uint(1325),uint(16592),uint(40922),uint(8932),uint(58811),uint(37323),uint(61552),uint(9086),uint(37213),uint(58921),uint(11981),uint(41252),uint(37411),uint(39932),uint(11783),uint(39822),uint(54552),uint(11607),uint(58723),uint(12091),uint(12135),uint(57051),uint(43751),uint(13675),uint(16306),uint(39712),uint(16262),uint(59053),uint(11871),uint(60826),uint(4396),uint(60716),uint(43311),uint(15382),uint(43333),uint(37851),uint(43553),uint(15096),uint(60936),uint(2931),uint(43223),uint(8215),uint(22263),uint(22241),uint(30926),uint(44952),uint(14942),uint(20776),uint(60276),uint(9746),uint(32523),uint(38423),uint(37521),uint(43421),uint(2491),uint(62753),uint(42651),uint(2535),uint(48111),uint(50852),uint(40152),uint(5012),uint(48221),uint(47913),uint(13015),uint(53351),uint(4946),uint(22615),uint(62951),uint(45722),uint(60452),uint(53131),uint(60496),uint(50412),uint(53021),uint(45612),uint(43113),uint(22945),uint(60606),uint(17771),uint(50522),uint(50632),uint(7665),uint(22791),uint(22857),uint(15316),uint(30376),uint(12751),uint(53753),uint(53731),uint(37377),uint(12747),uint(37421),uint(37311),uint(8576),uint(45521),uint(53621),uint(4515),uint(29365),uint(8422),uint(41152),uint(37333),uint(45411),uint(53511),uint(45851),uint(50022),uint(61611),uint(4977),uint(53423),uint(12461),uint(9016),uint(37223),uint(61721),uint(58452),uint(45653),uint(53313),uint(54193),uint(12527),uint(49912),uint(9126),uint(45631),uint(1202),uint(12087),uint(12065),uint(54413),uint(16126),uint(54523),uint(13517),uint(62711),uint(12175),uint(17666),uint(11977),uint(11955),uint(48922),uint(5131),uint(17776),uint(62821),uint(5021),uint(46313),uint(50132),uint(3745),uint(5065),uint(13935),uint(3635),uint(9632),uint(37531),uint(63151),uint(16346),uint(61413),uint(18062),uint(5285),uint(52851),uint(60555),uint(60621),uint(1796),uint(18172),uint(60577),uint(30465),uint(30685),uint(7102),uint(60687),uint(60775),uint(60247),uint(1642),uint(52653),uint(52631),uint(46621),uint(60885),uint(60225),uint(15796),uint(60115),uint(63613),uint(60995),uint(60137),uint(61017),uint(46423),uint(14916),uint(60027),uint(60005),uint(46533),uint(15026),uint(30377),uint(46511),uint(9962),uint(55821),uint(18942),uint(40822),uint(6596),uint(43233),uint(43321),uint(43651),uint(55711),uint(43211),uint(29651),uint(29761),uint(40712),uint(18700),uint(55513),uint(38411),uint(10446),uint(18766),uint(40932),uint(18854),uint(12967),uint(60445),uint(60467),uint(18876),uint(4405),uint(9953),uint(60696),uint(60652),uint(63252),uint(56613),uint(46612),uint(19976),uint(10085),uint(40413),uint(60806),uint(14366),uint(60366),uint(39951),uint(40523),uint(3006),uint(30126),uint(60916),uint(51421),uint(60256),uint(30236),uint(56811),uint(39753),uint(40633),uint(40611),uint(50651),uint(51531),uint(9865),uint(39731),uint(40721),uint(2566),uint(43352),uint(17107),uint(2962),uint(51311),uint(7111),uint(51223),uint(2852),uint(51113),uint(23971),uint(60476),uint(41051),uint(39313),uint(60586),uint(64616),uint(53612),uint(11295),uint(43022),uint(5835),uint(59112),uint(37452),uint(42912),uint(47932),uint(64946),uint(22497),uint(54202),uint(54312),uint(16557),uint(5813),uint(54334),uint(65166),uint(11537),uint(6495),uint(37232),uint(38112),uint(11647),uint(6605),uint(44751),uint(11603),uint(42252),uint(50233),uint(50211),uint(52952),uint(1387),uint(1365),uint(17741),uint(60036),uint(50123),uint(3974),uint(1453),uint(54532),uint(54422),uint(15941),uint(15963),uint(50013),uint(50453),uint(45213),uint(16425),uint(30786),uint(52622),uint(59552),uint(16381),uint(47822),uint(20746),uint(45323),uint(52732),uint(47712),uint(54752),uint(1167),uint(11207),uint(30676),uint(11141),uint(11163),uint(60436),uint(14362),uint(43053),uint(43031),uint(56221),uint(42921),uint(10125),uint(51131),uint(14406),uint(51021),uint(14516),uint(60216),uint(60546),uint(47312),uint(60656),uint(56353),uint(60612),uint(60766),uint(9883),uint(9861),uint(50823),uint(47422),uint(64937),uint(46652),uint(9971),uint(50911),uint(47532),uint(50713),uint(60106),uint(56551),uint(10081),uint(43251),uint(60876),uint(59952),uint(10015),uint(38222),uint(15022),uint(15066),uint(30865),uint(64915),uint(14912),uint(55913),uint(42613),uint(30777),uint(30755),uint(23975),uint(6306),uint(42811),uint(42833),uint(51351),uint(6262),uint(56111),uint(42723),uint(30645),uint(11643),uint(48522),uint(49833),uint(41623),uint(49811),uint(48412),uint(53722),uint(20772),uint(48632),uint(11665),uint(53832),uint(53652),uint(58852),uint(11533),uint(36581),uint(5096),uint(16685),uint(11951),uint(50053),uint(53432),uint(57321),uint(44923),uint(11797),uint(53322),uint(50031),uint(22611),uint(49921),uint(41513),uint(54052),uint(22853),uint(45121),uint(53212),uint(62451),uint(59622),uint(45033),uint(11027),uint(45011),uint(47752),uint(45231),uint(16267),uint(13746),uint(11137),uint(62253),uint(57211),uint(2553),uint(50251),uint(3015),uint(62812),uint(53124),uint(17745),uint(13636),uint(7771),uint(11291),uint(39212),uint(39322),uint(62121),uint(62011),uint(61923),uint(11203),uint(62922),uint(39432),uint(16465),uint(59512),uint(16421),uint(16377),uint(22246),uint(41632),uint(11392),uint(59323),uint(48513),uint(37923),uint(59411),uint(15255),uint(11876),uint(37351),uint(37373),uint(41412),uint(41522),uint(18361),uint(38121),uint(11656),uint(59213),uint(47633),uint(10886),uint(18955),uint(47721),uint(10952),uint(18933),uint(18691),uint(22796),uint(10996),uint(19065),uint(45112),uint(47523),uint(47611),uint(18625),uint(5677),uint(1396),uint(8176),uint(18603),uint(45332),uint(11216),uint(15365),uint(15387),uint(8607),uint(1286),uint(11326),uint(5391),uint(47831),uint(37813),uint(18757),uint(8022),uint(45222),uint(11282),uint(3675),uint(40312),uint(61822),uint(63111),uint(8783),uint(51012),uint(51122),uint(14287),uint(39111),uint(14331),uint(8871),uint(38913),uint(39133),uint(30315),uint(12756),uint(14353),uint(14397),uint(39221),uint(40532),uint(45552),uint(14045),uint(14375),uint(50924),uint(13957),uint(40422),uint(19505),uint(12536),uint(9223),uint(51452),uint(40752),uint(9267),uint(9047),uint(63353),uint(55812),uint(30227),uint(14221),uint(39023),uint(61712),uint(58421),uint(61096),uint(12206),uint(43713),uint(46322),uint(14925),uint(6812),uint(38451),uint(55922),uint(4335),uint(9751),uint(32462),uint(43911),uint(11942),uint(63551),uint(9795),uint(48733),uint(38693),uint(48711),uint(48821),uint(11986),uint(1946),uint(46212),uint(56252),uint(51232),uint(14705),uint(17116),uint(12096),uint(29765),uint(2056),uint(42533),uint(42511),uint(19972),uint(50611),uint(58953),uint(58711),uint(50633),uint(50853),uint(42313),uint(50831),uint(11982),uint(42621),uint(42731),uint(50721),uint(32463),uint(58821),uint(16263),uint(38692),uint(27852),uint(42753),uint(50413),uint(62552),uint(46132),uint(46352),uint(15317),uint(15295),uint(37812),uint(42951),uint(15251),uint(11872),uint(50523),uint(59613),uint(63652),uint(11036),uint(11146),uint(4366),uint(55552),uint(62112),uint(15361),uint(15383),uint(15405),uint(37922),uint(62222),uint(8691),uint(51051),uint(8757),uint(11366),uint(11322),uint(8933),uint(15735),uint(38252),uint(42423),uint(53352),uint(9087),uint(56212),uint(14415),uint(9065),uint(48112),uint(13016),uint(56322),uint(41323),uint(48222),uint(53022),uint(39352),uint(53132),uint(56652),uint(52912),uint(14283),uint(29766),uint(41213),uint(14393),uint(12752),uint(17825),uint(14371),uint(12466),uint(49951),uint(9791),uint(39132),uint(60836),uint(20742),uint(15097),uint(44711),uint(17935),uint(47452),uint(38912),uint(10011),uint(44821),uint(44953),uint(12136),uint(12092),uint(61166),uint(41411),uint(41521),uint(1163),uint(14701),uint(44931),uint(18177),uint(41653),uint(41631),uint(39022),uint(58623),uint(18287),uint(9747),uint(25828),uint(41222),uint(41112),uint(18771),uint(18573),uint(41332),uint(2241),uint(12963),uint(18881),uint(53713),uint(61813),uint(47751),uint(6126),uint(9056),uint(18947),uint(17112),uint(13425),uint(53823),uint(2615),uint(57312),uint(12765),uint(63951),uint(2461),uint(12545),uint(54021),uint(12567),uint(18705),uint(37821),uint(13755),uint(60955),uint(19431),uint(16386),uint(16496),uint(47223),uint(37733),uint(16342),uint(19475),uint(37711),uint(54131),uint(12523),uint(16606),uint(47311),uint(58522),uint(58412),uint(60977),uint(11995),uint(47531),uint(40122),uint(47553),uint(1977),uint(64655),uint(44812),uint(47421),uint(12083),uint(12061),uint(37513),uint(14041),uint(41552),uint(13931),uint(2131),uint(13953),uint(54351),uint(40012),uint(13975),uint(2087),uint(45032),uint(44922),uint(30835),uint(60295),uint(60251),uint(30791),uint(60185),uint(60207),uint(60427),uint(10442),uint(60097),uint(60053),uint(60075),uint(50712),uint(60515),uint(15836),uint(60647),uint(43633),uint(15286),uint(43611),uint(40232),uint(19695),uint(43721),uint(10882),uint(3517),uint(15946),uint(60845),uint(60735),uint(60757),uint(38723),uint(10992),uint(45912),uint(2967),uint(48521),uint(48631),uint(5796),uint(37931),uint(40452),uint(8361),uint(37953),uint(46022),uint(53651),uint(2747),uint(43523),uint(48213),uint(38151),uint(50954),uint(50822),uint(22612),uint(53431),uint(48433),uint(60405),uint(53453),uint(48411),uint(60317),uint(65381),uint(39933),uint(48121),uint(30716),uint(61421),uint(48011),uint(48231),uint(5255),uint(9096),uint(39911),uint(4947),uint(39713),uint(40153),uint(48253),uint(47923),uint(22616),uint(39823),uint(18753),uint(5365),uint(57052),uint(18709),uint(30276),uint(13751),uint(22946),uint(43752),uint(39691),uint(18577),uint(12761),uint(18621),uint(30496),uint(34645),uint(22792),uint(43312),uint(12541),uint(56612),uint(51522),uint(56722),uint(12695),uint(47351),uint(19061),uint(60695),uint(13971),uint(1656),uint(39251),uint(60717),uint(60915),uint(10086),uint(1612),uint(60805),uint(16426),uint(38921),uint(16382),uint(54311),uint(18775),uint(41011),uint(4045),uint(41033),uint(54333),uint(40923),uint(51852),uint(54201),uint(18885),uint(39031),uint(3957),uint(8216),uint(39053),uint(40813),uint(18951),uint(54223),uint(43422),uint(1326),uint(9866),uint(12365),uint(60035),uint(62851),uint(45512),uint(60013),uint(54553),uint(2492),uint(60057),uint(42652),uint(2536),uint(54421),uint(54531),uint(15942),uint(42322),uint(19501),uint(50422),uint(50532),uint(60475),uint(42212),uint(60497),uint(49023),uint(60585),uint(45622),uint(51412),uint(54751),uint(60651),uint(19435),uint(7666),uint(60607),uint(11142),uint(4375),uint(37852),uint(63511),uint(4397),uint(60365),uint(22242),uint(60255),uint(40131),uint(60277),uint(63753),uint(37412),uint(15832),uint(40021),uint(37522),uint(60167),uint(4705),uint(60176),uint(38622),uint(14512),uint(45151),uint(3636),uint(55851),uint(62952),uint(60066),uint(3746),uint(60022),uint(60506),uint(56423),uint(43123),uint(42353),uint(42331),uint(38952),uint(53053),uint(56313),uint(60616),uint(53251),uint(56511),uint(45613),uint(14336),uint(10957),uint(42221),uint(55521),uint(11023),uint(11045),uint(60726),uint(4406),uint(43013),uint(17772),uint(52811),uint(4516),uint(46031),uint(2932),uint(52921),uint(7103),uint(30927),uint(60396),uint(60352),uint(45811),uint(52613),uint(60286),uint(20777),uint(42551),uint(63612),uint(22493),uint(45921),uint(52723),uint(30795),uint(41253),uint(11815),uint(11991),uint(58812),uint(41231),uint(18366),uint(62653),uint(6685),uint(18762),uint(41121),uint(39832),uint(62543),uint(1203),uint(12145),uint(39722),uint(13676),uint(46251),uint(58922),uint(18718),uint(62323),uint(18696),uint(34636),uint(11947),uint(11133),uint(1797),uint(16461),uint(62213),uint(51513),uint(54012),uint(54232),uint(59252),uint(56621),uint(16373),uint(11287),uint(8766),uint(11265),uint(16307),uint(54122),uint(1621),uint(1643),uint(64646),uint(14226),uint(18872),uint(11397),uint(51711),uint(54452),uint(56951),uint(16505),uint(6421),uint(2545),uint(47612),uint(2567),uint(55822),uint(18943),uint(6606),uint(43551),uint(51651),uint(55712),uint(14926),uint(60015),uint(14706),uint(10887),uint(43331),uint(35165),uint(10953),uint(43353),uint(11041),uint(51321),uint(7112),uint(51233),uint(2853),uint(10447),uint(59553),uint(15366),uint(30686),uint(11283),uint(18767),uint(11261),uint(59751),uint(60455),uint(47832),uint(47722),uint(51211),uint(60477),uint(18855),uint(30796),uint(51123),uint(18877),uint(11217),uint(19691),uint(30466),uint(64626),uint(34637),uint(1951),uint(19471),uint(1995),uint(42913),uint(60367),uint(15256),uint(60235),uint(51431),uint(60257),uint(51453),uint(43221),uint(19405),uint(6496),uint(43023),uint(60037),uint(40612),uint(43111),uint(60125),uint(3975),uint(3931),uint(5286),uint(12141),uint(50221),uint(58453),uint(12207),uint(5132),uint(5066),uint(50111),uint(58651),uint(11965),uint(45113),uint(11943),uint(50133),uint(12361),uint(50551),uint(5022),uint(11877),uint(42451),uint(48712),uint(20747),uint(45311),uint(45333),uint(11987),uint(12075),uint(45223),uint(12097),uint(17117),uint(51013),uint(8577),uint(11393),uint(37453),uint(53622),uint(59113),uint(14046),uint(45531),uint(37321),uint(45553),uint(59311),uint(53851),uint(11327),uint(53512),uint(3425),uint(39952),uint(13936),uint(45421),uint(14332),uint(8872),uint(5836),uint(59421),uint(14376),uint(53314),uint(16501),uint(19977),uint(39732),uint(61612),uint(56812),uint(54313),uint(61722),uint(37211),uint(42253),uint(37233),uint(14222),uint(42231),uint(11657),uint(54533),uint(38113),uint(16127),uint(12066),uint(11956),uint(1366),uint(17742),uint(54511),uint(15995),uint(12176),uint(54423),uint(5097),uint(52632),uint(59012),uint(38421),uint(16347),uint(22243),uint(52852),uint(22265),uint(45522),uint(11296),uint(48021),uint(59122),uint(22617),uint(59452),uint(20791),uint(47933),uint(45412),uint(47911),uint(64925),uint(5735),uint(18710),uint(15797),uint(22793),uint(64947),uint(9017),uint(49913),uint(50023),uint(18622),uint(15731),uint(8951),uint(45632),uint(9127),uint(9105),uint(65167),uint(19062),uint(39433),uint(29762),uint(62712),uint(29652),uint(40722),uint(51312),uint(61621),uint(55721),uint(62822),uint(3016),uint(45852),uint(14345),uint(39213),uint(55523),uint(9633),uint(7772),uint(14367),uint(18776),uint(14411),uint(55611),uint(61511),uint(41052),uint(18886),uint(4415),uint(61423),uint(39323),uint(18952),uint(15401),uint(23972),uint(60565),uint(10095),uint(60587),uint(38751),uint(60675),uint(63152),uint(60785),uint(60807),uint(60697),uint(46512),uint(15027),uint(61005),uint(60895),uint(19436),uint(46622),uint(19502),uint(29366),uint(51422),uint(14917),uint(12462),uint(9963),uint(49011),uint(51532),uint(8177),uint(40951),uint(53222),uint(16343),uint(16387),uint(49051),uint(53332),uint(16497),uint(58422),uint(45012),uint(8023),uint(53112),uint(53134),uint(16585),uint(45122),uint(62351),uint(36582),uint(16607),uint(4336),uint(11952),uint(54251),uint(62813),uint(17746),uint(11996),uint(62021),uint(12062),uint(48611),uint(45232),uint(63011),uint(3676),uint(48721),uint(8881),uint(20795),uint(41633),uint(48413),uint(49821),uint(22247),uint(61713),uint(61823),uint(11666),uint(63253),uint(49931),uint(41611),uint(20773),uint(9057),uint(15837),uint(61911),uint(15815),uint(9035),uint(48523),uint(57322),uint(63451),uint(43912),uint(9145),uint(50151),uint(37352),uint(49953),uint(13426),uint(15947),uint(18362),uint(41523),uint(15991),uint(1397),uint(61097),uint(61075),uint(60965),uint(46552),uint(18692),uint(15045),uint(46332),uint(15023),uint(9761),uint(18626),uint(23976),uint(9365),uint(18956),uint(1287),uint(55923),uint(14913),uint(1045),uint(30765),uint(56011),uint(46112),uint(56121),uint(6307),uint(30787),uint(51352),uint(38452),uint(6263),uint(1947),uint(56253),uint(46222),uint(30677),uint(19506),uint(42922),uint(60437),uint(43032),uint(42812),uint(64617),uint(40313),uint(64595),uint(12766),uint(60547),uint(1815),uint(40423),uint(40621),uint(60745),uint(60657),uint(60635),uint(15287),uint(10025),uint(1661),uint(30127),uint(40511),uint(19066),uint(40731),uint(9981),uint(43252),uint(40753),uint(40533),uint(60855),uint(15067),uint(12546),uint(60767),uint(10091),uint(30237),uint(38122),uint(46323),uint(43723),uint(43811),uint(46411),uint(46213),uint(2761),uint(2981),uint(60996),uint(50252),uint(63552),uint(43921),uint(57221),uint(2695),uint(30756),uint(30866),uint(9752),uint(13637),uint(30646),uint(40212),uint(13747),uint(13725),uint(43613),uint(51132),uint(14275),uint(53732),uint(40322),uint(40432),uint(30228),uint(30316),uint(2057),uint(10082),uint(43151),uint(42953),uint(14385),uint(10126),uint(42931),uint(39112),uint(53653),uint(14363),uint(60556),uint(12691),uint(14407),uint(60622),uint(14517),uint(39222),uint(56451),uint(12757),uint(53521),uint(51022),uint(12735),uint(9796),uint(9862),uint(16686),uint(40652),uint(46631),uint(50912),uint(36591),uint(53411),uint(53433),uint(46653),uint(60776),uint(10016),uint(46521),uint(9972),uint(12537),uint(53323),uint(12515),uint(60886),uint(47731),uint(47753),uint(53213),uint(17667),uint(42513),uint(64916),uint(42623),uint(22797),uint(3971),uint(47621),uint(17777),uint(59412),uint(42711),uint(42733),uint(52751),uint(17931),uint(17821),uint(16466),uint(16422),uint(42821),uint(60446),uint(11292),uint(5392),uint(18173),uint(37713),uint(49812),uint(60226),uint(60116),uint(37251),uint(50032),uint(64938),uint(47533),uint(47511),uint(60028),uint(60006),uint(49922),uint(40453),uint(17936),uint(52812),uint(56851),uint(65105),uint(60846),uint(9792),uint(48751),uint(40431),uint(5797),uint(44712),uint(56653),uint(13677),uint(52922),uint(13721),uint(30317),uint(44822),uint(40123),uint(60956),uint(22261),uint(48311),uint(44932),uint(48223),uint(18288),uint(40013),uint(40651),uint(60406),uint(2132),uint(48421),uint(60296),uint(14513),uint(41113),uint(45152),uint(22613),uint(12995),uint(18772),uint(41311),uint(41333),uint(56323),uint(18882),uint(56213),uint(41421),uint(14227),uint(60516),uint(6127),uint(12753),uint(56411),uint(12731),uint(10012),uint(43612),uint(39353),uint(14337),uint(60736),uint(22855),uint(54022),uint(18706),uint(14425),uint(41223),uint(43722),uint(16506),uint(54132),uint(16462),uint(8362),uint(45922),uint(46032),uint(37712),uint(19432),uint(37932),uint(4367),uint(11266),uint(18948),uint(51712),uint(11398),uint(51052),uint(38152),uint(50832),uint(45812),uint(54352),uint(60252),uint(2242),uint(42512),uint(15736),uint(60186),uint(30735),uint(30757),uint(42622),uint(63112),uint(60076),uint(62553),uint(46252),uint(19696),uint(30647),uint(42732),uint(40233),uint(2616),uint(40211),uint(42952),uint(2462),uint(11046),uint(37822),uint(40321),uint(11015),uint(43313),uint(39252),uint(49952),uint(4376),uint(59623),uint(8217),uint(15362),uint(38922),uint(15406),uint(11147),uint(4046),uint(59711),uint(46023),uint(11367),uint(55914),uint(4706),uint(14702),uint(11323),uint(43511),uint(53551),uint(39032),uint(10443),uint(62751),uint(20796),uint(56112),uint(59513),uint(50612),uint(30792),uint(42521),uint(60305),uint(30836),uint(42631),uint(53353),uint(46551),uint(53331),uint(53133),uint(46353),uint(7931),uint(5256),uint(60217),uint(60195),uint(60107),uint(42653),uint(53221),uint(7821),uint(50722),uint(28205),uint(60151),uint(42851),uint(60085),uint(17747),uint(46133),uint(52913),uint(46111),uint(53111),uint(15296),uint(46331),uint(17835),uint(10883),uint(15252),uint(53023),uint(7667),uint(62452),uint(46221),uint(59953),uint(1657),uint(63653),uint(13756),uint(12555),uint(47211),uint(58413),uint(63851),uint(12511),uint(47321),uint(57212),uint(12467),uint(14042),uint(1327),uint(58611),uint(1261),uint(41553),uint(12093),uint(8692),uint(18363),uint(40132),uint(47651),uint(13976),uint(41531),uint(62122),uint(47431),uint(12137),uint(42411),uint(58721),uint(40022),uint(13932),uint(23361),uint(62012),uint(14372),uint(14416),uint(18715),uint(39912),uint(18781),uint(17113),uint(18693),uint(56222),uint(18627),uint(39692),uint(53723),uint(18605),uint(18935),uint(23977),uint(42323),uint(58853),uint(53833),uint(11983),uint(9066),uint(18957),uint(53811),uint(42213),uint(16695),uint(11961),uint(11873),uint(11895),uint(59051),uint(11785),uint(54053),uint(14328),uint(56552),uint(54031),uint(63512),uint(37853),uint(15402),uint(11275),uint(37831),uint(11165),uint(59253),uint(59451),uint(11385),uint(37721),uint(59121),uint(46151),uint(11297),uint(37523),uint(11605),uint(15732),uint(45821),uint(32455),uint(37413),uint(32521),uint(50212),uint(42552),uint(53613),uint(2361),uint(60067),uint(60045),uint(60155),uint(2493),uint(55852),uint(6686),uint(60023),uint(46613),uint(42332),uint(42222),uint(11011),uint(63952),uint(2537),uint(2515),uint(11143),uint(50652),uint(55522),uint(13972),uint(17773),uint(52821),uint(56512),uint(13752),uint(23365),uint(52953),uint(56622),uint(64656),uint(5366),uint(8952),uint(56952),uint(52623),uint(9106),uint(52711),uint(39151),uint(65382),uint(12463),uint(47713),uint(6422),uint(52733),uint(11957),uint(3747),uint(3725),uint(41232),uint(43951),uint(38623),uint(58813),uint(12067),uint(11781),uint(3637),uint(11825),uint(41122),uint(18763),uint(41012),uint(52051),uint(18785),uint(18367),uint(38931),uint(43621),uint(38953),uint(14346),uint(14412),uint(18719),uint(59011),uint(18697),uint(43753),uint(38711),uint(43731),uint(34646),uint(44752),uint(61422),uint(58923),uint(47352),uint(54013),uint(40713),uint(62223),uint(51523),uint(62311),uint(40823),uint(1952),uint(51611),uint(1622),uint(1996),uint(64647),uint(16427),uint(62113),uint(16383),uint(5837),uint(64625),uint(12542),uint(18873),uint(12146),uint(8767),uint(18851),uint(54453),uint(51721),uint(54431),uint(54211),uint(41021),uint(12366),uint(54233),uint(50951),uint(6497),uint(40031),uint(40911),uint(40933),uint(51853),uint(54321),uint(16581),uint(58822),uint(15943),uint(11816),uint(15965),uint(9097),uint(58712),uint(15833),uint(9075),uint(54651),uint(39921),uint(11992),uint(15811),uint(37422),uint(39811),uint(41153),uint(41131),uint(39833),uint(37312),uint(16295),uint(39723),uint(19401),uint(16185),uint(51413),uint(41351),uint(60837),uint(4517),uint(44721),uint(60815),uint(4385),uint(60705),uint(4407),uint(60727),uint(9691),uint(43322),uint(43212),uint(49851),uint(60925),uint(10087),uint(9955),uint(15437),uint(10021),uint(43652),uint(61167),uint(45051),uint(60375),uint(14975),uint(60265),uint(20765),uint(60287),uint(60177),uint(20743),uint(38412),uint(37532),uint(5133),uint(48012),uint(30695),uint(62852),uint(5067),uint(5287),uint(48122),uint(2546),uint(19973),uint(30497),uint(30717),uint(5001),uint(48232),uint(53252),uint(5023),uint(40251),uint(30277),uint(50423),uint(45711),uint(45623),uint(60507),uint(30475),uint(50533),uint(12696),uint(50621),uint(55553),uint(50511),uint(17826),uint(12762),uint(45513)})&.Rotten:== uint(10101)))|(.Peel:->contains($uint,[]uint{uint(4351443),uint(4462443),uint(4351441),uint(4462442),uint(4351442),uint(4462441)})&.Rotten:== uint(9021)))|(.Peel:->contains($uint,[]uint{uint(11381),uint(11821),uint(11812),uint(16181),uint(16551),uint(16683),uint(13973),uint(12961),uint(11892),uint(16692),uint(15042),uint(17581),uint(12741),uint(12521),uint(17211),uint(11813),uint(16182),uint(11021),uint(11241),uint(18091),uint(17251),uint(19301),uint(19961),uint(17181),uint(16301),uint(19271),uint(11822),uint(11382),uint(14801),uint(14031),uint(16552),uint(11281),uint(13151),uint(11871),uint(17221),uint(17111),uint(12742),uint(16693),uint(12962),uint(17591),uint(17261),uint(11031),uint(15061),uint(15281),uint(11022),uint(11242),uint(18101),uint(11282),uint(19272),uint(12131),uint(16302),uint(13011),uint(11823),uint(12743),uint(12963),uint(13161),uint(12171),uint(17191),uint(16553),uint(17231),uint(11881),uint(16681),uint(11023),uint(17112),uint(11032),uint(13012),uint(12132),uint(12431),uint(13971),uint(15062),uint(15282),uint(11811),uint(11283),uint(11261),uint(16303),uint(17601),uint(17113),uint(12172),uint(15283),uint(15063),uint(15041),uint(19331),uint(16682),uint(11262),uint(13972),uint(17241),uint(12133),uint(11891),uint(16691)})&.Rotten:== uint(18008)))|(.Rotten:== uint(5012)&.Peel:->contains($uint,[]uint{uint(1231117),uint(22661122),uint(1768111),uint(14841122),uint(1481113),uint(22771121),uint(1141113),uint(12581122),uint(1057112),uint(1405113),uint(1398113),uint(14301121),uint(17681122),uint(18961123),uint(13661122),uint(1250111),uint(14811111),uint(1141117),uint(14821121),uint(2213112),uint(1231113),uint(15491122),uint(22471122),uint(14851121),uint(10751113),uint(1483115),uint(11411122),uint(1295116),uint(1250115),uint(22741123),uint(14201121),uint(15601123),uint(10241123),uint(18471121),uint(11081123),uint(1366113),uint(1482112),uint(12951122),uint(1673113),uint(1378112),uint(10751122),uint(1379111),uint(1364111),uint(1861113),uint(1484113),uint(14291121),uint(13981122),uint(14121121),uint(1549112),uint(1142111),uint(1210112),uint(1075111),uint(1964111),uint(19641121),uint(1475112),uint(1250116),uint(1108115),uint(2213111),uint(22471121),uint(1412113),uint(5300113),uint(1552112),uint(1366117),uint(16731121),uint(1141112),uint(1505113),uint(1295111),uint(1847113),uint(14831121),uint(1896112),uint(12101122),uint(13641121),uint(6117113),uint(11421123),uint(1430112),uint(12501123),uint(1546111),uint(1498113),uint(18471122),uint(12581123),uint(14051122),uint(1231116),uint(1258113),uint(1405112),uint(18611121),uint(1768112),uint(22131123),uint(1483116),uint(15611121),uint(15461121),uint(1533113),uint(1561113),uint(17681121),uint(16541123),uint(1398112),uint(14851122),uint(14841121),uint(1429113),uint(1482113),uint(12951121),uint(61031122),uint(10571121),uint(1295115),uint(15491123),uint(22741122),uint(14811123),uint(15521123),uint(11411123),uint(14301122),uint(1673112),uint(1654111),uint(13661121),uint(11081122),uint(13791123),uint(18961122),uint(1231112),uint(1378111),uint(1108113),uint(2213113),uint(22661123),uint(1141116),uint(1484115),uint(61171121),uint(13981121),uint(1549111),uint(10751121),uint(1364112),uint(1861112),uint(13781123),uint(61031121),uint(10751112),uint(1475113),uint(16731122),uint(1483111),uint(12311121),uint(19641122),uint(1057113),uint(14751121),uint(1075112),uint(12501122),uint(1896113),uint(1412112),uint(1552111),uint(5300112),uint(1430111),uint(14051121),uint(1141111),uint(14291122),uint(1847112),uint(12101121),uint(5300111),uint(1258112),uint(1483117),uint(15611122),uint(18611122),uint(1398111),uint(1141115),uint(18471123),uint(1561112),uint(1412111),uint(16541122),uint(1231115),uint(1429112),uint(14851123),uint(1546113),uint(14201123),uint(22741121),uint(22131122),uint(14821123),uint(14811122),uint(14051123),uint(1484116),uint(15461122),uint(1366111),uint(1673111),uint(11081121),uint(1379113),uint(1481111),uint(61171122),uint(1861111),uint(15601121),uint(14811113),uint(15521122),uint(1483113),uint(18961121),uint(10571122),uint(1250113),uint(22771123),uint(13791122),uint(14301123),uint(61031123),uint(1654112),uint(1108112),uint(10751111),uint(16731123),uint(13781122),uint(1505111),uint(12311122),uint(14831123),uint(13641123),uint(1231111),uint(1483112),uint(14121123),uint(12501121),uint(1366115),uint(1498111),uint(10241121),uint(6117111),uint(1142113),uint(1429111),uint(1533112),uint(1108117),uint(1847111),uint(19641123),uint(1364113),uint(1484111),uint(11421121),uint(14291123),uint(1768113),uint(1075113),uint(1964113),uint(14751122),uint(1405111),uint(1546112),uint(22661121),uint(17681123),uint(12951123),uint(1295113),uint(10571123),uint(1250112),uint(15611123),uint(16541121),uint(15521121),uint(13661123),uint(18611123),uint(14811121),uint(1484117),uint(15491121),uint(61171123),uint(12581121),uint(1057111),uint(14811112),uint(22771122),uint(14841123),uint(14201122),uint(1481112),uint(15601122),uint(22131121),uint(1378113),uint(1108111),uint(14821122),uint(15461123),uint(13791121),uint(22471123),uint(1366112),uint(1482111),uint(1561111),uint(1295117),uint(11411121),uint(10241122),uint(1498112),uint(1475111),uint(12311123),uint(1654113),uint(1964112),uint(1896111),uint(1250117),uint(6117112),uint(13781121),uint(13981123),uint(14751123),uint(1108116),uint(1210111),uint(1484112),uint(10751123),uint(1379112),uint(1549113),uint(1505112),uint(14121122),uint(1366116),uint(1552113),uint(1430113),uint(1533111),uint(1258111),uint(11421122),uint(1142112),uint(1295112),uint(14831122),uint(13641122)})))|(.Peel:->contains($uint,[]uint{uint(28153),uint(56712),uint(52453),uint(52321),uint(24312),uint(23388),uint(53113),uint(47512),uint(6550),uint(47622),uint(43253),uint(51221),uint(43011),uint(43121),uint(29385),uint(21065),uint(51111),uint(29517),uint(51551),uint(59123),uint(25896),uint(29341),uint(25962),uint(42923),uint(42813),uint(39522),uint(51353),uint(34251),uint(5692),uint(37221),uint(25645),uint(29077),uint(5802),uint(54521),uint(33811),uint(28923),uint(55511),uint(49923),uint(9071),uint(43152),uint(42822),uint(55753),uint(25755),uint(50451),uint(29222),uint(39553),uint(25975),uint(25931),uint(25953),uint(5723),uint(39751),uint(25566),uint(25522),uint(26635),uint(21461),uint(26525),uint(52312),uint(56721),uint(52422),uint(53122),uint(30146),uint(26701),uint(46522),uint(46412),uint(27251),uint(43913),uint(55951),uint(56413),uint(24422),uint(44023),uint(51652),uint(44221),uint(39113),uint(5512),uint(26626),uint(34022),uint(25526),uint(58212),uint(21465),uint(47112),uint(56351),uint(28452),uint(43821),uint(52352),uint(58652),uint(43953),uint(55823),uint(49611),uint(24712),uint(53522),uint(51912),uint(56021),uint(21166),uint(47323),uint(51252),uint(28157),uint(36953),uint(58221),uint(25051),uint(37151),uint(28311),uint(43812),uint(24523),uint(24611),uint(43922),uint(46421),uint(24721),uint(54512),uint(17985),uint(43623),uint(36711),uint(36623),uint(12921),uint(29345),uint(18975),uint(25702),uint(55612),uint(43051),uint(34211),uint(47851),uint(25966),uint(44912),uint(16146),uint(47521),uint(5952),uint(6621),uint(26992),uint(27212),uint(49311),uint(37722),uint(5763),uint(58511),uint(36952),uint(34212),uint(25562),uint(43622),uint(51722),uint(25012),uint(28312),uint(25703),uint(25725),uint(16142),uint(25615),uint(25351),uint(28611),uint(25021),uint(43411),uint(36521),uint(39152),uint(56122),uint(36323),uint(43213),uint(56012),uint(28105),uint(38822),uint(43952),uint(37511),uint(9384),uint(25892),uint(29381),uint(25936),uint(29513),uint(26112),uint(29073),uint(45052),uint(47111),uint(54173),uint(26706),uint(39812),uint(26552),uint(21466),uint(52351),uint(51212),uint(56412),uint(25685),uint(25707),uint(25751),uint(38721),uint(51322),uint(25971),uint(52813),uint(17981),uint(39513),uint(26565),uint(53121),uint(26411),uint(24651),uint(55752),uint(39821),uint(58823),uint(44212),uint(26631),uint(26675),uint(26653),uint(9072),uint(49452),uint(26807),uint(24321),uint(47723),uint(54177),uint(47613),uint(5882),uint(30142),uint(21162),uint(56522),uint(52523),uint(52413),uint(9503),uint(26622),uint(26556),uint(26996),uint(9041),uint(44511),uint(51951),uint(51511),uint(51423),uint(37212),uint(47252),uint(33952),uint(56421),uint(5561),uint(5803),uint(5693),uint(56113),uint(21061),uint(51313),uint(56223),uint(50411),uint(52822),uint(5891),uint(43552),uint(23384),uint(43112),uint(25641),uint(12926),uint(43222),uint(26051),uint(46422),uint(25963),uint(54522),uint(25611),uint(58451),uint(33821),uint(25545),uint(25567),uint(29342),uint(26865),uint(29386),uint(21066),uint(26997),uint(59111),uint(24951),uint(47852),uint(24511),uint(55952),uint(44011),uint(43923),uint(47522),uint(16147),uint(49251),uint(49911),uint(55512),uint(21462),uint(12922),uint(24313),uint(18985),uint(52322),uint(53123),uint(37011),uint(27252),uint(47623),uint(47711),uint(51552),uint(21163),uint(44222),uint(37451),uint(47513),uint(47051),uint(51222),uint(56722),uint(51112),uint(24322),uint(30147),uint(34252),uint(17982),uint(38551),uint(33812),uint(43351),uint(43153),uint(43021),uint(21141),uint(21031),uint(25721),uint(25765),uint(42823),uint(25897),uint(42911),uint(25875),uint(50452),uint(24612),uint(28651),uint(24722),uint(47751),uint(51922),uint(47311),uint(21167),uint(6591),uint(44922),uint(28101),uint(58222),uint(28211),uint(43052),uint(25756),uint(56352),uint(25976),uint(25932),uint(17986),uint(54513),uint(5931),uint(36712),uint(51152),uint(5953),uint(21145),uint(26636),uint(29355),uint(39211),uint(26526),uint(21035),uint(34221),uint(26702),uint(34111),uint(55811),uint(25967),uint(56251),uint(26121),uint(26451),uint(39352),uint(52551),uint(29346),uint(52353),uint(49612),uint(1461),uint(18976),uint(26561),uint(51913),uint(27111),uint(25646),uint(27221),uint(51253),uint(56713),uint(36611),uint(25052),uint(51121),uint(38912),uint(51451),uint(43822),uint(39351),uint(25022),uint(47451),uint(51512),uint(43412),uint(55551),uint(39153),uint(56013),uint(47253),uint(38911),uint(39813),uint(38823),uint(12927),uint(25726),uint(9350),uint(28313),uint(9042),uint(44512),uint(47011),uint(28621),uint(26122),uint(58512),uint(26452),uint(36522),uint(26562),uint(27112),uint(27222),uint(56123),uint(29391),uint(50412),uint(56211),uint(29501),uint(58521),uint(44921),uint(58653),uint(23381),uint(34213),uint(26421),uint(26993),uint(33751),uint(37512),uint(29382),uint(49312),uint(26861),uint(51921),uint(21036),uint(5971),uint(5883),uint(22501),uint(51723),uint(27213),uint(56022),uint(16143),uint(1061),uint(25616),uint(51151),uint(58213),uint(5641),uint(5751),uint(36751),uint(23385),uint(36311),uint(28106),uint(52511),uint(52423),uint(5540),uint(52313),uint(5562),uint(5892),uint(58811),uint(43553),uint(43421),uint(51521),uint(51851),uint(46413),uint(39822),uint(43223),uint(25642),uint(43113),uint(51653),uint(37521),uint(25695),uint(25761),uint(25805),uint(25937),uint(25893),uint(28612),uint(51411),uint(22505),uint(51323),uint(51213),uint(52823),uint(39523),uint(28911),uint(43012),uint(25541),uint(25563),uint(38951),uint(43122),uint(25686),uint(28251),uint(25752),uint(56422),uint(25211),uint(38511),uint(21062),uint(25972),uint(50421),uint(30143),uint(43751),uint(26566),uint(37222),uint(26412),uint(6750),uint(29505),uint(44213),uint(26676),uint(9381),uint(26632),uint(49321),uint(51952),uint(6530),uint(9073),uint(29395),uint(49453),uint(44521),uint(29351),uint(56723),uint(52552),uint(28252),uint(24323),uint(52354),uint(47853),uint(55953),uint(47721),uint(55821),uint(47523),uint(6561),uint(43352),uint(6715),uint(47611),uint(29506),uint(43022),uint(29396),uint(21032),uint(25687),uint(51122),uint(25753),uint(59112),uint(39511),uint(25951),uint(51452),uint(29352),uint(25973),uint(42912),uint(37012),uint(17983),uint(5681),uint(25612),uint(33822),uint(26523),uint(25546),uint(28912),uint(37452),uint(55522),uint(49912),uint(12923),uint(43251),uint(43053),uint(39212),uint(6592),uint(42811),uint(25722),uint(25766),uint(22506),uint(42921),uint(25876),uint(59121),uint(23386),uint(38552),uint(26052),uint(5932),uint(25643),uint(52521),uint(52411),uint(26866),uint(52323),uint(53111),uint(56512),uint(37021),uint(46423),uint(46511),uint(58813),uint(24521),uint(51553),uint(24411),uint(44012),uint(49252),uint(17987),uint(5611),uint(34253),uint(27253),uint(34011),uint(25647),uint(25515),uint(37351),uint(33813),uint(27011),uint(27121),uint(47453),uint(39111),uint(28155),uint(52451),uint(38913),uint(56252),uint(58223),uint(47321),uint(44052),uint(1462),uint(46551),uint(49622),uint(55812),uint(53511),uint(51923),uint(36612),uint(21067),uint(47312),uint(51351),uint(54171),uint(28102),uint(24952),uint(28212),uint(21551),uint(37052),uint(24512),uint(43911),uint(54523),uint(44021),uint(43612),uint(58452),uint(1031),uint(6535),uint(37712),uint(49921),uint(29356),uint(49613),uint(42952),uint(39551),uint(34222),uint(18986),uint(25691),uint(34112),uint(25757),uint(25801),uint(5721),uint(25933),uint(25955),uint(25977),uint(47752),uint(28652),uint(27113),uint(27223),uint(49322),uint(26805),uint(37711),uint(5972),uint(58522),uint(23382),uint(34223),uint(37051),uint(54175),uint(25617),uint(38811),uint(28851),uint(43611),uint(28653),uint(5752),uint(47021),uint(5642),uint(25221),uint(43413),uint(51513),uint(51711),uint(22502),uint(42951),uint(25692),uint(28213),uint(5563),uint(25516),uint(56551),uint(50413),uint(47012),uint(56221),uint(56353),uint(28622),uint(5761),uint(43422),uint(56111),uint(36312),uint(56023),uint(38921),uint(1062),uint(44051),uint(25705),uint(9351),uint(25727),uint(37522),uint(49621),uint(29392),uint(44513),uint(29502),uint(9043),uint(47452),uint(39823),uint(26651),uint(26563),uint(51113),uint(25542),uint(29515),uint(51223),uint(33752),uint(25696),uint(56423),uint(43013),uint(25762),uint(25806),uint(21063),uint(25212),uint(51421),uint(51311),uint(38512),uint(47052),uint(28921),uint(50453),uint(29075),uint(55521),uint(26422),uint(9501),uint(44223),uint(58812),uint(36321),uint(26862),uint(47712),uint(5893),uint(56511),uint(38952),uint(52512),uint(9382),uint(52314),uint(26567),uint(9360),uint(6562),uint(44522),uint(58821),uint(6716),uint(51522),uint(51412),uint(51852),uint(28151),uint(38521),uint(5682),uint(28613),uint(56212),uint(50422),uint(52811),uint(55552),uint(43123),uint(43211),uint(46521),uint(46411),uint(25952),uint(54511),uint(5691),uint(5801),uint(5933),uint(29397),uint(29353),uint(37651),uint(39213),uint(29507),uint(59122),uint(29221),uint(22507),uint(39521),uint(43912),uint(24522),uint(24412),uint(44022),uint(47753),uint(47621),uint(47511),uint(21165),uint(49922),uint(52553),uint(52421),uint(47313),uint(53112),uint(52311),uint(55611),uint(30145),uint(37022),uint(47722),uint(27021),uint(44013),uint(51651),uint(47612),uint(44211),uint(51211),uint(56711),uint(51123),uint(24421),uint(24311),uint(51453),uint(51321),uint(34021),uint(1463),uint(33823),uint(28913),uint(43252),uint(28253),uint(42812),uint(42922),uint(28451),uint(23387),uint(43921),uint(24711),uint(44053),uint(53512),uint(43613),uint(51911),uint(24513),uint(47322),uint(39112),uint(6536),uint(51251),uint(28156),uint(51713),uint(43151),uint(44911),uint(42821),uint(56253),uint(25701),uint(58211),uint(25723),uint(25767),uint(42953),uint(21552),uint(5722),uint(5612),uint(25965),uint(26251),uint(54172),uint(36613),uint(26625),uint(9352),uint(26867),uint(39552),uint(25802),uint(5951),uint(5753),uint(25956),uint(42852),uint(55822),uint(34012),uint(29511),uint(5973),uint(16145),uint(1032),uint(29225),uint(29357),uint(52452),uint(49623),uint(5511),uint(18987),uint(29071),uint(5643),uint(27122),uint(58651),uint(25613),uint(25525),uint(53521),uint(51352),uint(36622),uint(36512),uint(25151),uint(38923),uint(59113),uint(43811),uint(24953),uint(38813),uint(25011),uint(51721),uint(51523),uint(43423),uint(51413),uint(51853),uint(29226),uint(38922),uint(38812),uint(43951),uint(1063),uint(25693),uint(29072),uint(16141),uint(9383),uint(25803),uint(25891),uint(25957),uint(25935),uint(42851),uint(44523),uint(47022),uint(52821),uint(26111),uint(36621),uint(36511),uint(23383),uint(36951),uint(45051),uint(36313),uint(26705),uint(26551),uint(27123),uint(27211),uint(56112),uint(50423),uint(56222),uint(29512),uint(26991),uint(30141),uint(26652),uint(6620),uint(37721),uint(29503),uint(26806),uint(29393),uint(55813),uint(51712),uint(56121),uint(39151),uint(56011),uint(38953),uint(38821),uint(25561),uint(25517),uint(5520),uint(38711),uint(43621),uint(5762),uint(36322),uint(52522),uint(52412),uint(49913),uint(52324),uint(49451),uint(5683),uint(58822),uint(5881),uint(12925),uint(46512),uint(55553),uint(43212),uint(39811),uint(33951),uint(55751),uint(25565),uint(25521),uint(33753),uint(25706),uint(28623),uint(51422),uint(51312),uint(52812),uint(39512),uint(43551),uint(29076),uint(43353),uint(56521),uint(43221),uint(28922),uint(28152),uint(42913),uint(43111),uint(25697),uint(56411),uint(25763),uint(43023),uint(25807),uint(25222),uint(22503),uint(38522),uint(25895),uint(56213),uint(25961),uint(47713),uint(21161),uint(26555),uint(47251),uint(37211),uint(52513),uint(54176),uint(26863),uint(29516),uint(9502),uint(26995),uint(26621),uint(6563),uint(47053),uint(52051)})&.Rotten:== uint(40103)))|(.Rotten:== uint(11013)&.Peel:->contains($uint,[]uint{uint(35590)})))|(.Rotten:== uint(10115)&.Peel:->contains($uint,[]uint{uint(15833),uint(60306),uint(60636),uint(11266),uint(60196),uint(12542),uint(62541),uint(12555),uint(60227),uint(60205),uint(13677),uint(11983),uint(15736),uint(15406),uint(19401),uint(15402),uint(15732),uint(11011),uint(14412),uint(11781),uint(60957),uint(60275),uint(11957),uint(60165),uint(60187),uint(11275),uint(13752),uint(11385),uint(13972),uint(60587),uint(60367),uint(11975),uint(60565),uint(11953),uint(11865),uint(60235),uint(14386),uint(16555),uint(60455),uint(60477),uint(11966),uint(60376),uint(60266),uint(11262),uint(60556),uint(60226),uint(11962),uint(15737),uint(11786),uint(64595),uint(12556),uint(13515),uint(13955),uint(12965),uint(13757),uint(14417),uint(14395),uint(13977),uint(12745),uint(12547),uint(11016),uint(38571),uint(13753),uint(13973),uint(13951),uint(12961),uint(14413),uint(14391),uint(11276),uint(11386),uint(60835),uint(11012),uint(11025),uint(60206),uint(12543),uint(60426),uint(60536),uint(60646),uint(18571),uint(11021),uint(60276),uint(60166),uint(11967),uint(18575),uint(11945),uint(60175),uint(60505),uint(60637),uint(60615),uint(11782),uint(60395),uint(60307),uint(60197),uint(62542),uint(15733),uint(10185),uint(12746),uint(60465),uint(11976),uint(60377),uint(11866),uint(60267),uint(13516),uint(60245),uint(60135),uint(10181),uint(12966),uint(14387),uint(16556),uint(60575),uint(60685),uint(61015),uint(14405),uint(38572),uint(60425),uint(60535),uint(11026),uint(60645),uint(13745),uint(11787),uint(60456),uint(60566),uint(11017),uint(11325),uint(13956),uint(14396),uint(12535),uint(12557),uint(64596),uint(12205),uint(60236),uint(11963),uint(11941),uint(11985),uint(17115),uint(11783),uint(11981),uint(60955),uint(11013),uint(60427),uint(11387),uint(11365),uint(11321),uint(60647),uint(14392),uint(60185),uint(60207),uint(17111),uint(12962),uint(18572),uint(13952),uint(15835),uint(18576),uint(62543),uint(16557),uint(15831),uint(11022),uint(60836),uint(60396),uint(11946),uint(60176),uint(13675),uint(60506),uint(12206),uint(60576),uint(11942),uint(60246),uint(13517),uint(60686),uint(60136),uint(61016),uint(11986),uint(17116),uint(11326),uint(13957),uint(14397),uint(60466),uint(11977),uint(60585),uint(11955),uint(60365),uint(60277),uint(60167),uint(18577),uint(60475),uint(12967),uint(12747),uint(60435),uint(60457),uint(60545),uint(60567),uint(60237),uint(11951),uint(15836),uint(38573),uint(13425),uint(12963),uint(12545),uint(13746),uint(14406),uint(12536),uint(11027),uint(13676),uint(18573),uint(11265),uint(15735),uint(60956),uint(19475),uint(11023),uint(11322),uint(15405),uint(11366),uint(13755),uint(60195),uint(60437),uint(60547),uint(13953),uint(13975),uint(60635),uint(14393),uint(17112),uint(14415),uint(11982),uint(60305),uint(15401),uint(15731),uint(60837),uint(13971),uint(13751),uint(60507),uint(60375),uint(60265),uint(60177),uint(14411),uint(11956),uint(60186),uint(12541),uint(15832),uint(11947),uint(12537),uint(60476),uint(11965),uint(11943),uint(12207),uint(60366),uint(11987),uint(13747),uint(17117),uint(11327),uint(11261),uint(60586),uint(14416),uint(17113),uint(11961),uint(11785),uint(11015),uint(60436),uint(60546),uint(13976),uint(13756),uint(11367),uint(11323),uint(61017),uint(15837),uint(60467),uint(60555),uint(60577),uint(60687),uint(19405),uint(19471),uint(14385),uint(14407),uint(12546),uint(60247),uint(11952),uint(60225),uint(60137)})))|(.Peel:->contains($uint,[]uint{uint(60086),uint(64917),uint(19696),uint(9097),uint(9075),uint(17747),uint(8362),uint(16506),uint(12467),uint(18363),uint(8692),uint(18693),uint(18605),uint(18781),uint(9066),uint(9572),uint(14702),uint(4706),uint(12753),uint(10012),uint(12463),uint(16502),uint(15996),uint(9106),uint(5023),uint(18367),uint(18697),uint(10096),uint(18785),uint(9691),uint(10021),uint(6585),uint(10087),uint(16581),uint(60077),uint(60055),uint(11143),uint(16383),uint(15943),uint(15965),uint(10083),uint(10017),uint(18601),uint(9951),uint(17105),uint(11535),uint(15961),uint(60125),uint(60015),uint(60037),uint(60046),uint(9005),uint(9115),uint(14707),uint(18786),uint(8605),uint(60116),uint(8693),uint(60006),uint(8781),uint(9067),uint(9045),uint(14945),uint(64925),uint(64947),uint(14703),uint(16586),uint(9036),uint(64916),uint(19692),uint(64938),uint(10092),uint(15992),uint(8363),uint(10026),uint(17743),uint(9076),uint(9692),uint(16582),uint(18606),uint(15966),uint(18782),uint(10088),uint(10022),uint(4707),uint(10013),uint(11531),uint(16375),uint(16507),uint(60096),uint(16595),uint(11135),uint(6586),uint(10955),uint(10097),uint(11131),uint(60056),uint(11395),uint(16371),uint(9116),uint(16503),uint(9006),uint(16591),uint(15997),uint(60087),uint(60065),uint(9107),uint(9085),uint(19697),uint(14941),uint(60025),uint(7101),uint(9037),uint(9015),uint(15993),uint(11536),uint(9125),uint(6595),uint(14915),uint(17885),uint(10093),uint(10027),uint(15025),uint(64935),uint(17106),uint(18787),uint(9952),uint(10084),uint(15962),uint(60047),uint(12755),uint(11136),uint(60117),uint(16596),uint(60007),uint(60095),uint(19693),uint(16376),uint(14946),uint(10885),uint(10951),uint(60126),uint(10445),uint(60016),uint(18602),uint(1395),uint(64926),uint(8606),uint(8782),uint(11391),uint(9046),uint(16587),uint(11145),uint(60097),uint(60075),uint(14942),uint(10881),uint(12465),uint(9086),uint(16385),uint(16583),uint(9055),uint(9077),uint(11532),uint(15945),uint(15967),uint(15021),uint(14911),uint(9693),uint(10441),uint(10023),uint(9007),uint(9117),uint(9095),uint(15941),uint(15963),uint(16381),uint(9953),uint(10085),uint(6587),uint(7102),uint(6596),uint(12751),uint(60066),uint(11132),uint(16592),uint(17881),uint(16372),uint(11396),uint(18783),uint(18365),uint(10956),uint(18695),uint(18607),uint(14705),uint(64945),uint(10446),uint(11392),uint(10886),uint(10952),uint(5021),uint(60026),uint(8607),uint(60057),uint(60035),uint(15026),uint(11537),uint(14916),uint(17741),uint(11141),uint(9016),uint(9126),uint(12461),uint(54201),uint(17107),uint(11533),uint(15946),uint(11137),uint(17745),uint(60017),uint(60127),uint(60105),uint(9056),uint(18361),uint(1396),uint(15022),uint(18691),uint(18603),uint(14912),uint(64936),uint(8783),uint(12756),uint(9047),uint(64927),uint(16377),uint(10081),uint(10015),uint(17886),uint(9065),uint(9087),uint(12752),uint(8361),uint(16373),uint(9571),uint(12466),uint(16505),uint(10011),uint(10957),uint(19695),uint(10882),uint(4705),uint(14701),uint(10442),uint(17746),uint(16386),uint(60107),uint(60085),uint(11146),uint(18362),uint(8691),uint(11142),uint(15027),uint(14917),uint(60045),uint(17882),uint(60067),uint(16382),uint(9105),uint(9017),uint(15942),uint(5022),uint(18366),uint(18696),uint(11133),uint(60076),uint(11397),uint(9096),uint(10086),uint(7103),uint(19691),uint(11393),uint(14706),uint(17742),uint(12757),uint(10082),uint(10016),uint(9127),uint(64946),uint(54202),uint(10095),uint(16501),uint(12462),uint(10887),uint(10953),uint(15995),uint(10447),uint(60036),uint(1397),uint(18692),uint(10091),uint(10025),uint(11147),uint(60106),uint(16585),uint(10443),uint(16387),uint(15991),uint(10883),uint(15947),uint(14913),uint(60115),uint(60005),uint(60027),uint(15023),uint(64937),uint(9035),uint(64915),uint(9057)})&.Rotten:== uint(10116)))|(.Rotten:== uint(10003)&.Peel:->contains($uint,[]uint{uint(20430),uint(26550),uint(26660),uint(20421),uint(20281),uint(20272),uint(26670),uint(20110),uint(20422),uint(20273),uint(26701),uint(20282),uint(26702),uint(20120),uint(26530),uint(20432),uint(20600),uint(20270),uint(20160),uint(26703),uint(20200),uint(20420),uint(26800),uint(20271)})))|(.Rotten:== uint(7001)&.Peel:->contains($uint,[]uint{uint(26682),uint(26572),uint(26792),uint(26902),uint(26581),uint(26541),uint(26871),uint(26643),uint(26511),uint(26872),uint(26542),uint(26841),uint(26722),uint(26582),uint(26771),uint(26793),uint(26573),uint(26873),uint(26543),uint(26842),uint(26512),uint(26583),uint(26772),uint(26773),uint(26641),uint(26874),uint(26843),uint(26513),uint(26681),uint(26571),uint(26791),uint(26901),uint(26642),uint(26721)})))|(.Peel:->contains($uint,[]uint{uint(14641123),uint(1463113),uint(11461121),uint(13621123),uint(18801122),uint(1266117),uint(14521121),uint(16991123),uint(1690122),uint(11101122),uint(1146115),uint(13871123),uint(1454111),uint(1285111),uint(14861121),uint(15411123),uint(14631122),uint(1423117),uint(1262118),uint(1267116),uint(14531122),uint(12851123),uint(1285115),uint(22591123),uint(12231121),uint(12661123),uint(1461111),uint(14231122),uint(14611121),uint(14581123),uint(14551123),uint(1266113),uint(1998116),uint(1235112),uint(13851122),uint(11471122),uint(1486111),uint(1530113),uint(19981123),uint(1223113),uint(1541113),uint(1644113),uint(12671123),uint(1385112),uint(1458111),uint(14231123),uint(1910111),uint(16891121),uint(1267111),uint(16441122),uint(1259113),uint(1690127),uint(15981123),uint(1423116),uint(12591122),uint(1235117),uint(1147113),uint(1262113),uint(14871122),uint(1464112),uint(1362113),uint(1110112),uint(1455115),uint(15411122),uint(1423112),uint(12621112),uint(12651122),uint(12351123),uint(1355113),uint(12621121),uint(1453113),uint(14541122),uint(1461116),uint(13621122),uint(1998111),uint(15191122),uint(1487115),uint(1266116),uint(14611122),uint(11101123),uint(1598115),uint(14551122),uint(1690121),uint(14861122),uint(14871123),uint(11461122),uint(1454112),uint(21891123),uint(14641122),uint(1568113),uint(15411113),uint(1265113),uint(1235115),uint(1355115),uint(1387112),uint(1464113),uint(14231121),uint(11471121),uint(1267115),uint(1519117),uint(1235111),uint(1568117),uint(1486112),uint(1461112),uint(14631123),uint(1998115),uint(13851123),uint(1530112),uint(1266112),uint(1262117),uint(1455111),uint(1910113),uint(14531121),uint(16991122),uint(1541111),uint(1690125),uint(18801123),uint(22591122),uint(1259111),uint(12661122),uint(1266111),uint(1690126),uint(15301121),uint(1262116),uint(1910112),uint(16891122),uint(12671122),uint(15191123),uint(1259112),uint(1541112),uint(1423115),uint(12621124),uint(1458112),uint(15981122),uint(1110111),uint(1387117),uint(14591121),uint(1519113),uint(16441123),uint(1598111),uint(1461113),uint(1454113),uint(1423111),uint(12351122),uint(1568112),uint(15681123),uint(1387113),uint(1265117),uint(1147112),uint(1461117),uint(14541121),uint(14861123),uint(1235116),uint(15411121),uint(1262112),uint(22551121),uint(1459111),uint(1385111),uint(1452111),uint(12621111),uint(12651121),uint(19981122),uint(1455116),uint(12591123),uint(21891122),uint(12851121),uint(1598116),uint(14611123),uint(1146113),uint(1455112),uint(14581121),uint(13871121),uint(1387111),uint(1266115),uint(1486113),uint(1355116),uint(12231123),uint(1487116),uint(15411112),uint(1463111),uint(14551121),uint(11461123),uint(1530111),uint(1519116),uint(14521123),uint(14641121),uint(22591121),uint(1487112),uint(12661121),uint(15981113),uint(1265112),uint(1223111),uint(1568116),uint(16991121),uint(1285113),uint(1146117),uint(15981121),uint(1362111),uint(1455117),uint(12621114),uint(1285117),uint(16891123),uint(1387116),uint(1262115),uint(1355111),uint(1267113),uint(1452112),uint(1519112),uint(1487111),uint(14591122),uint(1998113),uint(1598112),uint(15981112),uint(12671121),uint(1147111),uint(1644111),uint(1458113),uint(15681122),uint(15411111),uint(12621123),uint(1568111),uint(1453111),uint(12351121),uint(15301122),uint(19981121),uint(1146112),uint(1459112),uint(1262111),uint(1265116),uint(22551122),uint(1265115),uint(1355117),uint(1568115),uint(14581122),uint(18801121),uint(1998117),uint(1463112),uint(12231122),uint(1285112),uint(14531123),uint(14521122),uint(1455113),uint(1598117),uint(14631121),uint(12591121),uint(13871122),uint(11101121),uint(1267117),uint(1598113),uint(1690123),uint(13851121),uint(1146116),uint(1235113),uint(1519115),uint(11471123),uint(1265111),uint(12851122),uint(1223112),uint(1487113),uint(21891121),uint(1452113),uint(14541123),uint(1355112),uint(1461115),uint(1459113),uint(1644112),uint(1998112),uint(1385113),uint(12621113),uint(1285116),uint(15981111),uint(1362112),uint(1262114),uint(1267112),uint(14591123),uint(12651123),uint(1464111),uint(1146111),uint(14871121),uint(13621121),uint(22551123),uint(15301123),uint(16441121),uint(1519111),uint(1487117),uint(15191121),uint(1423113),uint(12621122),uint(1453112),uint(1110113),uint(15681121),uint(1387115)})&.Rotten:== uint(5022)))|(.Peel:->contains($uint,[]uint{uint(62717),uint(15707)})&.Rotten:== uint(40107)))|(.Peel:->contains($uint,[]uint{uint(31322),uint(46013),uint(34063),uint(46862),uint(34912),uint(34032),uint(34142),uint(46682),uint(2253),uint(2231),uint(38802),uint(34551),uint(34441),uint(34903),uint(34881),uint(34001),uint(34133),uint(34552),uint(34442),uint(34882),uint(34002),uint(46681),uint(34983),uint(46831),uint(34103),uint(34081),uint(34191),uint(39413),uint(34292),uint(34512),uint(34072),uint(38762),uint(34271),uint(34513),uint(34073),uint(31323),uint(31081),uint(34240),uint(2232),uint(38803),uint(34671),uint(34913),uint(34561),uint(34891),uint(34011),uint(34033),uint(34143),uint(34121),uint(46221),uint(46683),uint(34861),uint(34531),uint(34553),uint(34443),uint(46581),uint(34962),uint(46863),uint(34192),uint(34170),uint(34082),uint(46832),uint(34931),uint(39411),uint(34272),uint(46222),uint(46011),uint(34901),uint(46583),uint(34131),uint(46451),uint(31082),uint(34672),uint(34562),uint(34892),uint(34122),uint(34012),uint(34981),uint(34563),uint(34541),uint(34871),uint(34673),uint(34013),uint(38711),uint(34123),uint(34101),uint(46582),uint(34862),uint(34532),uint(34963),uint(34061),uint(34083),uint(46223),uint(38761),uint(46861),uint(34062),uint(31321),uint(34911),uint(34141),uint(34031),uint(34273),uint(34902),uint(38713),uint(34132),uint(38801),uint(46012),uint(31083),uint(38712),uint(34982),uint(34542),uint(34102),uint(34291),uint(34511),uint(34533),uint(34071),uint(39412)})&.Rotten:== uint(2012)))|(.Peel:->contains($uint,[]uint{uint(52365),uint(34647),uint(34405),uint(34427),uint(34317),uint(34185),uint(34665),uint(34396),uint(34308),uint(35765),uint(11311),uint(31096),uint(34828),uint(34497),uint(34387),uint(34365),uint(52827),uint(11412),uint(34255),uint(34827),uint(34366),uint(34256),uint(31097),uint(34357),uint(65128),uint(34027),uint(34115),uint(35760),uint(34977),uint(34436),uint(52822),uint(34216),uint(34326),uint(35769),uint(34437),uint(34305),uint(34327),uint(34217),uint(11413),uint(52366),uint(34666),uint(34648),uint(34406),uint(34186),uint(35766),uint(34785),uint(34397),uint(34045),uint(34046),uint(30645),uint(65125),uint(34815),uint(34367),uint(34257),uint(52823),uint(34116),uint(11414),uint(34667),uint(34975),uint(34306),uint(35767),uint(47171),uint(52367),uint(34786),uint(34495),uint(34385),uint(34187),uint(34817),uint(34816),uint(34355),uint(47175),uint(34047),uint(30646),uint(34025),uint(65126),uint(34825),uint(34645),uint(34425),uint(34315),uint(34646),uint(34976),uint(34316),uint(34426),uint(35768),uint(52826),uint(11415),uint(34787),uint(34395),uint(34307),uint(11411),uint(34496),uint(34386),uint(31095),uint(52821),uint(47176),uint(34826),uint(34356),uint(34026),uint(65127),uint(30647),uint(47172),uint(34435),uint(11416),uint(34325),uint(34215),uint(37585)})&.Rotten:== uint(40102)))|(.Rotten:== uint(50101)&.Peel:->contains($uint,[]uint{uint(53952),uint(33515),uint(13122),uint(4846),uint(1005),uint(33625),uint(4758),uint(45522),uint(33317),uint(33295),uint(53732),uint(1247),uint(58013),uint(33427),uint(13826),uint(54612),uint(63086),uint(13716),uint(16215),uint(17953),uint(62976),uint(33207),uint(33185),uint(61172),uint(65387),uint(9303),uint(33097),uint(62822),uint(62712),uint(38962),uint(18613),uint(18547),uint(18525),uint(24007),uint(60732),uint(60952),uint(63526),uint(18481),uint(2325),uint(56913),uint(63812),uint(57023),uint(18811),uint(63416),uint(63856),uint(18195),uint(64032),uint(18217),uint(18965),uint(48813),uint(63922),uint(15467),uint(57133),uint(60512),uint(57111),uint(52214),uint(63966),uint(15445),uint(38522),uint(63152),uint(15533),uint(60622),uint(64076),uint(57221),uint(49253),uint(54722),uint(57353),uint(1445),uint(54832),uint(12506),uint(57331),uint(57551),uint(14895),uint(49451),uint(60314),uint(14851),uint(20826),uint(23457),uint(1775),uint(4296),uint(20848),uint(60424),uint(48923),uint(1357),uint(52421),uint(49011),uint(51532),uint(55052),uint(49033),uint(51752),uint(52553),uint(43212),uint(49121),uint(63636),uint(63517),uint(51224),uint(52751),uint(3667),uint(63495),uint(14301),uint(56922),uint(56812),uint(51334),uint(63627),uint(24214),uint(51312),uint(3645),uint(63451),uint(51422),uint(63297),uint(10152),uint(63407),uint(57032),uint(63165),uint(63869),uint(63913),uint(57252),uint(60653),uint(60631),uint(63187),uint(63253),uint(63275),uint(63055),uint(14785),uint(63231),uint(3777),uint(64023),uint(63077),uint(13795),uint(63121),uint(13817),uint(60213),uint(47911),uint(47933),uint(60323),uint(9646),uint(48021),uint(9756),uint(60411),uint(60521),uint(23488),uint(19647),uint(57912),uint(3997),uint(48131),uint(33858),uint(14125),uint(48153),uint(48351),uint(6738),uint(9976),uint(43221),uint(4173),uint(59553),uint(59531),uint(12937),uint(13135),uint(17082),uint(13113),uint(1036),uint(22586),uint(53851),uint(54621),uint(28222),uint(22476),uint(54731),uint(54753),uint(64221),uint(13663),uint(10922),uint(64331),uint(64133),uint(17896),uint(64111),uint(3073),uint(17676),uint(54511),uint(59311),uint(54423),uint(22916),uint(10746),uint(64551),uint(13487),uint(64353),uint(54313),uint(59421),uint(59333),uint(52513),uint(60723),uint(43252),uint(56552),uint(60811),uint(60613),uint(10698),uint(52711),uint(19915),uint(14935),uint(60415),uint(14825),uint(14055),uint(51352),uint(2136),uint(47951),uint(32472),uint(14847),uint(28235),uint(57322),uint(19035),uint(59953),uint(59931),uint(57212),uint(57432),uint(64212),uint(64036),uint(59821),uint(14121),uint(23272),uint(51132),uint(57652),uint(48413),uint(7451),uint(16734),uint(5977),uint(48523),uint(14297),uint(19211),uint(19255),uint(51022),uint(60151),uint(20971),uint(64322),uint(53921),uint(4987),uint(13153),uint(53833),uint(54053),uint(17086),uint(11776),uint(4855),uint(59513),uint(61977),uint(59623),uint(59711),uint(12955),uint(59733),uint(5537),uint(53723),uint(53811),uint(13131),uint(11446),uint(62813),uint(13945),uint(8617),uint(17922),uint(13813),uint(62923),uint(65158),uint(54251),uint(2576),uint(11006),uint(18472),uint(55351),uint(22577),uint(48712),uint(22665),uint(1155),uint(1177),uint(59412),uint(48514),uint(59522),uint(33057),uint(11415),uint(11437),uint(48954),uint(52333),uint(48932),uint(15476),uint(52311),uint(18208),uint(4776),uint(18186),uint(59852),uint(23083),uint(59632),uint(12317),uint(48822),uint(7926),uint(52223),uint(22313),uint(33255),uint(11085),uint(52113),uint(8476),uint(32573),uint(54713),uint(12581),uint(54823),uint(62452),uint(65347),uint(22973),uint(10755),uint(55021),uint(54911),uint(22885),uint(52412),uint(54933),uint(55153),uint(55131),uint(49152),uint(52522),uint(22775),uint(2475),uint(3786),uint(63332),uint(51453),uint(51233),uint(51211),uint(63376),uint(63222),uint(32133),uint(2343),uint(51123),uint(63706),uint(63266),uint(63046),uint(63068),uint(63112),uint(14816),uint(45531),uint(45553),uint(62914),uint(63178),uint(63156),uint(63926),uint(63860),uint(14772),uint(51321),uint(2167),uint(48052),uint(16545),uint(1837),uint(22137),uint(51013),uint(24218),uint(61031),uint(63596),uint(63552),uint(9246),uint(60921),uint(63486),uint(63257),uint(63235),uint(63345),uint(3795),uint(8076),uint(3817),uint(63323),uint(55223),uint(50832),uint(38473),uint(63125),uint(63147),uint(4125),uint(63213),uint(55113),uint(55421),uint(62927),uint(63631),uint(63653),uint(63675),uint(12313),uint(63697),uint(24210),uint(63037),uint(63785),uint(63015),uint(54453),uint(54431),uint(55311),uint(51052),uint(63851),uint(55333),uint(37923),uint(11411),uint(11433),uint(12951),uint(7086),uint(54651),uint(63521),uint(28227),uint(48113),uint(63433),uint(63477),uint(12885),uint(63455),uint(19643),uint(63367),uint(11081),uint(63411),uint(22912),uint(14856),uint(57722),uint(56521),uint(57612),uint(64511),uint(64533),uint(58052),uint(17738),uint(22582),uint(8956),uint(22472),uint(2937),uint(57832),uint(64005),uint(3135),uint(14306),uint(64027),uint(61035),uint(64313),uint(3487),uint(64423),uint(33951),uint(17958),uint(52253),uint(33775),uint(52231),uint(33885),uint(52165),uint(64524),uint(23273),uint(57731),uint(52121),uint(57753),uint(2506),uint(53912),uint(33797),uint(48522),uint(33445),uint(6325),uint(48412),uint(52011),uint(18486),uint(22745),uint(23405),uint(9695),uint(30242),uint(33665),uint(13228),uint(19212),uint(6545),uint(51813),uint(57951),uint(33115),uint(33137),uint(6017),uint(48852),uint(1956),uint(61176),uint(63886),uint(33247),uint(63996),uint(54352),uint(48632),uint(13822),uint(56851),uint(60934),uint(13712),uint(54132),uint(60912),uint(54022),uint(56653),uint(16211),uint(3452),uint(51351),uint(13646),uint(18816),uint(56631),uint(21645),uint(50823),uint(55232),uint(55122),uint(10575),uint(5445),uint(21953),uint(21975),uint(60252),uint(51153),uint(15617),uint(51131),uint(51021),uint(4785),uint(55452),uint(12326),uint(16735),uint(62553),uint(35345),uint(17087),uint(9915),uint(62421),uint(59922),uint(57313),uint(12502),uint(15441),uint(19916),uint(59812),uint(62751),uint(57533),uint(57621),uint(57423),uint(55012),uint(60032),uint(10157),uint(57511),uint(10245),uint(62531),uint(18688),uint(22771),uint(48452),uint(57713),uint(9647),uint(22661),uint(9273),uint(5476),uint(9757),uint(52161),uint(57933),uint(22573),uint(23277),uint(57911),uint(61246),uint(19216),uint(14126),uint(18182),uint(57823),uint(52051),uint(4816),uint(1437),uint(49112),uint(51853),uint(62412),uint(62522),uint(51721),uint(49222),uint(56833),uint(54312),uint(65065),uint(56811),uint(56723),uint(48914),uint(62632),uint(60652),uint(56613),uint(58021),uint(51413),uint(51523),uint(51611),uint(13796),uint(1085),uint(22881),uint(60322),uint(2713),uint(63226),uint(60212),uint(63006),uint(10945),uint(3826),uint(45513),uint(3716),uint(11055),uint(63116),uint(16365),uint(12586),uint(63666),uint(54422),uint(16541),uint(10747),uint(62852),uint(63776),uint(62918),uint(2317),uint(56921),uint(16717),uint(32996),uint(22133),uint(10241),uint(57031),uint(59552),uint(15525),uint(63622),uint(57053),uint(10153),uint(48012),uint(13114),uint(13136),uint(10571),uint(63468),uint(63512),uint(57251),uint(37083),uint(48122),uint(63446),uint(54752),uint(21957),uint(48232),uint(12938),uint(62997),uint(14843),uint(62975),uint(63085),uint(63107),uint(63151),uint(4297),uint(11002),uint(60221),uint(52451),uint(17685),uint(14821),uint(14755),uint(14777),uint(62623),uint(62733),uint(62711),uint(3945),uint(49521),uint(15085),uint(49433),uint(63635),uint(56952),uint(63657),uint(49411),uint(62821),uint(20822),uint(4847),uint(4825),uint(14205),uint(63613),uint(18191),uint(63525),uint(55412),uint(22318),uint(63437),uint(57414),uint(60111),uint(60133),uint(63327),uint(63415),uint(63305),uint(60023),uint(59913),uint(17927),uint(63195),uint(17905),uint(1446),uint(48311),uint(24245),uint(48421),uint(48223),uint(19027),uint(64251),uint(7997),uint(24003),uint(18543),uint(48333),uint(2955),uint(18521),uint(18961),uint(52152),uint(18477),uint(59451),uint(48553),uint(48531),uint(13237),uint(20844),uint(54321),uint(63811),uint(14051),uint(51822),uint(23453),uint(13985),uint(54211),uint(8965),uint(63921),uint(20976),uint(63855),uint(48751),uint(13941),uint(49213),uint(54233),uint(51712),uint(34087),uint(54013),uint(64075),uint(56732),uint(64031),uint(64053),uint(56622),uint(1006),uint(54123),uint(63965),uint(8525),uint(13787),uint(33955),uint(56512),uint(18675),uint(3615),uint(8657),uint(47921),uint(11086),uint(23401),uint(15081),uint(60324),uint(48031),uint(48053),uint(64231),uint(3074),uint(60412),uint(64253),uint(48251),uint(52422),uint(10756),uint(2326),uint(64451),uint(22741),uint(43222),uint(63615),uint(59532),uint(52752),uint(63637),uint(51234),uint(51322),uint(7685),uint(51212),uint(59422),uint(56923),uint(57011),uint(18680),uint(6365),uint(55251),uint(63857),uint(57033),uint(57121),uint(14751),uint(1776),uint(48911),uint(48933),uint(63967),uint(18812),uint(14773),uint(38611),uint(14817),uint(63923),uint(64121),uint(48823),uint(64077),uint(3646),uint(57253),uint(18966),uint(48713),uint(57231),uint(7927),uint(64011),uint(38523),uint(64033),uint(13717),uint(21971),uint(13695),uint(13805),uint(8477),uint(16731),uint(65375),uint(33956),uint(59312),uint(4935),uint(38963),uint(33516),uint(56813),uint(65067),uint(22477),uint(65155),uint(17083),uint(62612),uint(22587),uint(33186),uint(33626),uint(17545),uint(11416),uint(45532),uint(13981),uint(33296),uint(53852),uint(13827),uint(17897),uint(1411),uint(65388),uint(16216),uint(48924),uint(54512),uint(54952),uint(59321),uint(49012),uint(59453),uint(12507),uint(21958),uint(49122),uint(59431),uint(13123),uint(22772),uint(12881),uint(1037),uint(45523),uint(22662),uint(49452),uint(15446),uint(22310),uint(54622),uint(28223),uint(54732),uint(18205),uint(2885),uint(18183),uint(62911),uint(62823),uint(47912),uint(51753),uint(51951),uint(2775),uint(14786),uint(19217),uint(14896),uint(57451),uint(14852),uint(48022),uint(51511),uint(51533),uint(2577),uint(48132),uint(62713),uint(19525),uint(51621),uint(14302),uint(63505),uint(4856),uint(63527),uint(48352),uint(51313),uint(2137),uint(24215),uint(63417),uint(63395),uint(51423),uint(63351),uint(57913),uint(60522),uint(11935),uint(16366),uint(63285),uint(58023),uint(63065),uint(63087),uint(60632),uint(63131),uint(63153),uint(16542),uint(63175),uint(62814),uint(33925),uint(17901),uint(62924),uint(12503),uint(54912),uint(54252),uint(16212),uint(4205),uint(55022),uint(63452),uint(63496),uint(11777),uint(63386),uint(63408),uint(18209),uint(63276),uint(33595),uint(63232),uint(18187),uint(63122),uint(4777),uint(63056),uint(63012),uint(63188),uint(63166),uint(4755),uint(52321),uint(17923),uint(22314),uint(52211),uint(11425),uint(52233),uint(11447),uint(63078),uint(52123),uint(64112),uint(9916),uint(64222),uint(52167),uint(57213),uint(15442),uint(57411),uint(57323),uint(10246),uint(64552),uint(24219),uint(24241),uint(57653),uint(48524),uint(57631),uint(61032),uint(57433),uint(19265),uint(64332),uint(57521),uint(52523),uint(20972),uint(63518),uint(18473),uint(60922),uint(43253),uint(55352),uint(57851),uint(11931),uint(55132),uint(60812),uint(48722),uint(51221),uint(18671),uint(3985),uint(51551),uint(52721),uint(48612),uint(49052),uint(51133),uint(14936),uint(1156),uint(9696),uint(32473),uint(14826),uint(51331),uint(12327),uint(3787),uint(48832),uint(51353),uint(64037),uint(64015),uint(57332),uint(3136),uint(16546),uint(7087),uint(14122),uint(51111),uint(61173),uint(14298),uint(63597),uint(6735),uint(51023),uint(64411),uint(63553),uint(57552),uint(64213),uint(60953),uint(60931),uint(63487),uint(63421),uint(63465),uint(64323),uint(9247),uint(60821),uint(53953),uint(3796),uint(60733),uint(60711),uint(2476),uint(63685),uint(60425),uint(63707),uint(53733),uint(21641),uint(53711),uint(63795),uint(14056),uint(53821),uint(63927),uint(60513),uint(60623),uint(13946),uint(47952),uint(60051),uint(54723),uint(54613),uint(17954),uint(54811),uint(54833),uint(54921),uint(59853),uint(60315),uint(55031),uint(55053),uint(7452),uint(22886),uint(49021),uint(22776),uint(49153),uint(54151),uint(11007),uint(12582),uint(10941),uint(11051),uint(49131),uint(22666),uint(65159),uint(13154),uint(18526),uint(33256),uint(18482),uint(59413),uint(13132),uint(59523),uint(64521),uint(59721),uint(18196),uint(52312),uint(57112),uint(59611),uint(59633),uint(59831),uint(18218),uint(52224),uint(39641),uint(12956),uint(15477),uint(57222),uint(2938),uint(5525),uint(65348),uint(14052),uint(61177),uint(61155),uint(13986),uint(14206),uint(48752),uint(13942),uint(1957),uint(1935),uint(56852),uint(21954),uint(57424),uint(60913),uint(57512),uint(18685),uint(56632),uint(18817),uint(52351),uint(1055),uint(57732),uint(64512),uint(56522),uint(64534),uint(52153),uint(53913),uint(52131),uint(5446),uint(33785),uint(57622),uint(60231),uint(22746),uint(60253),uint(18487),uint(52021),uint(62255),uint(51823),uint(49412),uint(57952),uint(33675),uint(51911),uint(59813),uint(11421),uint(62651),uint(33257),uint(19521),uint(54353),uint(33125),uint(62453),uint(33015),uint(33345),uint(62431),uint(54221),uint(12952),uint(54331),uint(11355),uint(54133),uint(60121),uint(54111),uint(54023),uint(4126),uint(11003),uint(12886),uint(60011),uint(55013),uint(59923),uint(60033),uint(2661),uint(63333),uint(2507),uint(63311),uint(63355),uint(63267),uint(63377),uint(21646),uint(63157),uint(63135),uint(15935),uint(48312),uint(63245),uint(50811),uint(50833),uint(59351),uint(63223),uint(51251),uint(48554),uint(16516),uint(4786),uint(63113),uint(62915),uint(13238),uint(16736),uint(48422),uint(54551),uint(24211),uint(63047),uint(48532),uint(51053),uint(63025),uint(10695),uint(51031),uint(19213),uint(59932),uint(62532),uint(35346),uint(62422),uint(11412),uint(15165),uint(15605),uint(15495),uint(62752),uint(59822),uint(60152),uint(11082),uint(55123),uint(55211),uint(10576),uint(55233),uint(63236),uint(63126),uint(15055),uint(55453),uint(55431),uint(19917),uint(52712),uint(59712),uint(4817),uint(24242),uint(8077),uint(55321),uint(63016),uint(14857),uint(14835),uint(62928),uint(48831),uint(63852),uint(48721),uint(30243),uint(48633),uint(48611),uint(13823),uint(49051),uint(13801),uint(13647),uint(14307),uint(63522),uint(13713),uint(13735),uint(63456),uint(13691),uint(33952),uint(56751),uint(3453),uint(63412),uint(48853),uint(63346),uint(52254),uint(56553),uint(56531),uint(52232),uint(33666),uint(6546),uint(52122),uint(3805),uint(53812),uint(33886),uint(52166),uint(3827),uint(1086),uint(9155),uint(52012),uint(23274),uint(3695),uint(3717),uint(53922),uint(33776),uint(8957),uint(23406),uint(63632),uint(6326),uint(63676),uint(33446),uint(20841),uint(63786),uint(63777),uint(20845),uint(63865),uint(63821),uint(63623),uint(55413),uint(63975),uint(63997),uint(63887),uint(63513),uint(63425),uint(11936),uint(64085),uint(63447),uint(50851),uint(15447),uint(63227),uint(15535),uint(3616),uint(63315),uint(64151),uint(33116),uint(14897),uint(54951),uint(14985),uint(24246),uint(14787),uint(11056),uint(52452),uint(28175),uint(14853),uint(14831),uint(10572),uint(3946),uint(63667),uint(10748),uint(56953),uint(56931),uint(59452),uint(63711),uint(18192),uint(14303),uint(49113),uint(56821),uint(49223),uint(56733),uint(56711),uint(13995),uint(17686),uint(1007),uint(58022),uint(56623),uint(13665),uint(65075),uint(13797),uint(13775),uint(22882),uint(13731),uint(56513),uint(18522),uint(52162),uint(2956),uint(5477),uint(49421),uint(52052),uint(49311),uint(61247),uint(23278),uint(14127),uint(65066),uint(51722),uint(23485),uint(54322),uint(6366),uint(54212),uint(13115),uint(58053),uint(48013),uint(54652),uint(1777),uint(8526),uint(51612),uint(33855),uint(48123),uint(48233),uint(48211),uint(1425),uint(1447),uint(48321),uint(33635),uint(48453),uint(18962),uint(64252),uint(48651),uint(8966),uint(19028),uint(54432),uint(15526),uint(32997),uint(4826),uint(61036),uint(62523),uint(10242),uint(62633),uint(62611),uint(22319),uint(57151),uint(43213),uint(62413),uint(14822),uint(63095),uint(57723),uint(63117),uint(63007),uint(17541),uint(62985),uint(63205),uint(60222),uint(22715),uint(17739),uint(57613),uint(14756),uint(58031),uint(60112),uint(62721),uint(22583),uint(22473),uint(9758),uint(15086),uint(12587),uint(55422),uint(32711),uint(57921),uint(62919),uint(4936),uint(62831),uint(2327),uint(55312),uint(57833),uint(57811),uint(62853),uint(13111),uint(13155),uint(13133),uint(4857),uint(12935),uint(5165),uint(33636),uint(45533),uint(54051),uint(45511),uint(53721),uint(53853),uint(12957),uint(54623),uint(53831),uint(54711),uint(17898),uint(13815),uint(62921),uint(63075),uint(63097),uint(32712),uint(37081),uint(22135),uint(54513),uint(13661),uint(62613),uint(65156),uint(65376),uint(5055),uint(62723),uint(62811),uint(62833),uint(13485),uint(63625),uint(63515),uint(11835),uint(60721),uint(24216),uint(63911),uint(57012),uint(63405),uint(63427),uint(63867),uint(52313),uint(63295),uint(48912),uint(63251),uint(64021),uint(18206),uint(3735),uint(60523),uint(57122),uint(63977),uint(63317),uint(3647),uint(60633),uint(64153),uint(64131),uint(64087),uint(63185),uint(60611),uint(57232),uint(19020),uint(63207),uint(57452),uint(15082),uint(54733),uint(1412),uint(54821),uint(59951),uint(60325),uint(54931),uint(54953),uint(51851),uint(60413),uint(23402),uint(48934),uint(7453),uint(51521),uint(49022),uint(43223),uint(12583),uint(55151),uint(49132),uint(51213),uint(56823),uint(56911),uint(56933),uint(63506),uint(51323),uint(24005),uint(24247),uint(63352),uint(51411),uint(56713),uint(57021),uint(63286),uint(63396),uint(57131),uint(63176),uint(63858),uint(14752),uint(13982),uint(57153),uint(63022),uint(57351),uint(60752),uint(63066),uint(64012),uint(13806),uint(63132),uint(16543),uint(60312),uint(47922),uint(2776),uint(20846),uint(48032),uint(33957),uint(60422),uint(23455),uint(9921),uint(3986),uint(57923),uint(57813),uint(63616),uint(43254),uint(4206),uint(48252),uint(22663),uint(33517),uint(12882),uint(22773),uint(13124),uint(22575),uint(59652),uint(33187),uint(33627),uint(7686),uint(65068),uint(23081),uint(1245),uint(49431),uint(11351),uint(49453),uint(53752),uint(11417),uint(54632),uint(1355),uint(22311),uint(1157),uint(33297),uint(2886),uint(5605),uint(64232),uint(17995),uint(17951),uint(64122),uint(13696),uint(16217),uint(5495),uint(11087),uint(54522),uint(33055),uint(15975),uint(61975),uint(22971),uint(10757),uint(17687),uint(5935),uint(59322),uint(59432),uint(54412),uint(22883),uint(64452),uint(60712),uint(56651),uint(51451),uint(60822),uint(32131),uint(52722),uint(51231),uint(64531),uint(64553),uint(39642),uint(51253),uint(57113),uint(32571),uint(14836),uint(10577),uint(57311),uint(64113),uint(57333),uint(60052),uint(50813),uint(57223),uint(64223),uint(3071),uint(64025),uint(59832),uint(57421),uint(9917),uint(3137),uint(16547),uint(64421),uint(51121),uint(48534),uint(51033),uint(10247),uint(48512),uint(14308),uint(57531),uint(64311),uint(51011),uint(57553),uint(64333),uint(53822),uint(53954),uint(59722),uint(59612),uint(4756),uint(11413),uint(11435),uint(53712),uint(22315),uint(5526),uint(23085),uint(8078),uint(62824),uint(17735),uint(65345),uint(22975),uint(13736),uint(65389),uint(13692),uint(13802),uint(22887),uint(33926),uint(62912),uint(22777),uint(16213),uint(33596),uint(13648),uint(54152),uint(2477),uint(11083),uint(22711),uint(22667),uint(1056),uint(59423),uint(18483),uint(61935),uint(48723),uint(11932),uint(18615),uint(59621),uint(4985),uint(18681),uint(55252),uint(59511),uint(48613),uint(59533),uint(18813),uint(11426),uint(52322),uint(48921),uint(15531),uint(17955),uint(5447),uint(4787),uint(48833),uint(52212),uint(18967),uint(52234),uint(59731),uint(48811),uint(5535),uint(11052),uint(54812),uint(30151),uint(14937),uint(15465),uint(15443),uint(49031),uint(49053),uint(54922),uint(22742),uint(62551),uint(18527),uint(55032),uint(49251),uint(52511),uint(59313),uint(63387),uint(51354),uint(51332),uint(3775),uint(63431),uint(63321),uint(3665),uint(63365),uint(51222),uint(51552),uint(63233),uint(63211),uint(63651),uint(3995),uint(51112),uint(57751),uint(63695),uint(63277),uint(63255),uint(52753),uint(63035),uint(63013),uint(14827),uint(14057),uint(63123),uint(63145),uint(63167),uint(62925),uint(24955),uint(13947),uint(35348),uint(9697),uint(47931),uint(3797),uint(63057),uint(47953),uint(1936),uint(48151),uint(21642),uint(14123),uint(1958),uint(6736),uint(16732),uint(4171),uint(4127),uint(19495),uint(9301),uint(63475),uint(63497),uint(63453),uint(60932),uint(60954),uint(63246),uint(3806),uint(63312),uint(55212),uint(3696),uint(50821),uint(63136),uint(16517),uint(55432),uint(19918),uint(63686),uint(62916),uint(51151),uint(54552),uint(63796),uint(20842),uint(24243),uint(16715),uint(63026),uint(55322),uint(11356),uint(15527),uint(16737),uint(11422),uint(15615),uint(24001),uint(63554),uint(63422),uint(2662),uint(63466),uint(8527),uint(63356),uint(8615),uint(63378),uint(35347),uint(14757),uint(1175),uint(6547),uint(57711),uint(14845),uint(1087),uint(57733),uint(56532),uint(14823),uint(22747),uint(64522),uint(57623),uint(23275),uint(8967),uint(6327),uint(52713),uint(57953),uint(49413),uint(23451),uint(57931),uint(9825),uint(23407),uint(57821),uint(22571),uint(61156),uint(64016),uint(18211),uint(14207),uint(14295),uint(17925),uint(64412),uint(60914),uint(52352),uint(5975),uint(23086),uint(57852),uint(53813),uint(22976),uint(64513),uint(22888),uint(53923),uint(48313),uint(52022),uint(52132),uint(9156),uint(33786),uint(19025),uint(48511),uint(51912),uint(2957),uint(22712),uint(2935),uint(48533),uint(18541),uint(2341),uint(48621),uint(2165),uint(13151),uint(33676),uint(18475),uint(48423),uint(13217),uint(14053),uint(33126),uint(13987),uint(33016),uint(54451),uint(13943),uint(64051),uint(48731),uint(48753),uint(33346),uint(13811),uint(60923),uint(3617),uint(51252),uint(54231),uint(61033),uint(56752),uint(54253),uint(54011),uint(60813),uint(3485),uint(48951),uint(1835),uint(54121),uint(50812),uint(55221),uint(10696),uint(55133),uint(55111),uint(15936),uint(38471),uint(62256),uint(15606),uint(51032),uint(55331),uint(55353),uint(12315),uint(19641),uint(62652),uint(59933),uint(62432),uint(15166),uint(59911),uint(22316),uint(59713),uint(59823),uint(12953),uint(15056),uint(15496),uint(57522),uint(54913),uint(60131),uint(12887),uint(57412),uint(60153),uint(57632),uint(55023),uint(37921),uint(57434),uint(60021),uint(48353),uint(48331),uint(13697),uint(48551),uint(18545),uint(18523),uint(22716),uint(53751),uint(13257),uint(19029),uint(57922),uint(18963),uint(4937),uint(57812),uint(18215),uint(51952),uint(9922),uint(1426),uint(4827),uint(61037),uint(62423),uint(54213),uint(62511),uint(49123),uint(54323),uint(49211),uint(62533),uint(56822),uint(65076),uint(49321),uint(62621),uint(56712),uint(13983),uint(34085),uint(58032),uint(51512),uint(43214),uint(51622),uint(13807),uint(18611),uint(49013),uint(33887),uint(33953),uint(60751),uint(13785),uint(60311),uint(63127),uint(33667),uint(60223),uint(60421),uint(63237),uint(63017),uint(62995),uint(63215),uint(60113),uint(12311),uint(51314),uint(3815),uint(33777),uint(63105),uint(33315),uint(62753),uint(55313),uint(62731),uint(19865),uint(33425),uint(33447),uint(54521),uint(63633),uint(63655),uint(15976),uint(10758),uint(63677),uint(54411),uint(62929),uint(63721),uint(54433),uint(63787),uint(3947),uint(12883),uint(56932),uint(15536),uint(47913),uint(7687),uint(57152),uint(63611),uint(13125),uint(59651),uint(63523),uint(63457),uint(54631),uint(48023),uint(54653),uint(48133),uint(63413),uint(50852),uint(19645),uint(48111),uint(33205),uint(7995),uint(63435),uint(48221),uint(63347),uint(33117),uint(54851),uint(33095),uint(19491),uint(63325),uint(14832),uint(63096),uint(60232),uint(10573),uint(10925),uint(28176),uint(38612),uint(62722),uint(62832),uint(62854),uint(21647),uint(14986),uint(49422),uint(57051),uint(10155),uint(55423),uint(14304),uint(63514),uint(63448),uint(63426),uint(60122),uint(63316),uint(21955),uint(60012),uint(57513),uint(11937),uint(10243),uint(63206),uint(10265),uint(22131),uint(1435),uint(48212),uint(52251),uint(1413),uint(52163),uint(48322),uint(13116),uint(48652),uint(18488),uint(59352),uint(51921),uint(24212),uint(63712),uint(20855),uint(54332),uint(23486),uint(6015),uint(63822),uint(51811),uint(13996),uint(63866),uint(56853),uint(54222),uint(56831),uint(11431),uint(64086),uint(13776),uint(56721),uint(63976),uint(56611),uint(11057),uint(56633),uint(54112),uint(3736),uint(53914),uint(13666),uint(56523),uint(18686),uint(64152),uint(13732),uint(3648),uint(33856),uint(11053),uint(47932),uint(2777),uint(2887),uint(60313),uint(2711),uint(64132),uint(64352),uint(48152),uint(23456),uint(60423),uint(22972),uint(10745),uint(52411),uint(22884),uint(51553),uint(2315),uint(7454),uint(52521),uint(51751),uint(63626),uint(10921),uint(43211),uint(51311),uint(59521),uint(51223),uint(51333),uint(59411),uint(56912),uint(59433),uint(59653),uint(59631),uint(51421),uint(51531),uint(11933),uint(51113),uint(57022),uint(59851),uint(57132),uint(48922),uint(63868),uint(23082),uint(63912),uint(57352),uint(48812),uint(64022),uint(5496),uint(13662),uint(5606),uint(22136),uint(33857),uint(65386),uint(5936),uint(5056),uint(59323),uint(13486),uint(28221),uint(62513),uint(65078),uint(33637),uint(22576),uint(53753),uint(5166),uint(53731),uint(45521),uint(22312),uint(11427),uint(53951),uint(13816),uint(17952),uint(54831),uint(38521),uint(5527),uint(49221),uint(54853),uint(54611),uint(1356),uint(32713),uint(48913),uint(17996),uint(54523),uint(59332),uint(55051),uint(65157),uint(54413),uint(61976),uint(38961),uint(49023),uint(49133),uint(18612),uint(49111),uint(22717),uint(12936),uint(13112),uint(13134),uint(18546),uint(18480),uint(22585),uint(65069),uint(13156),uint(45512),uint(1246),uint(32471),uint(11352),uint(8655),uint(20825),uint(54633),uint(18216),uint(54721),uint(22475),uint(9645),uint(62922),uint(4207),uint(4295),uint(62812),uint(62834),uint(47923),uint(14841),uint(20847),uint(9755),uint(48033),uint(48011),uint(51852),uint(51522),uint(9271),uint(9975),uint(48121),uint(19646),uint(3987),uint(61171),uint(52552),uint(10151),uint(48231),uint(48253),uint(63516),uint(60951),uint(24006),uint(60753),uint(63406),uint(51324),uint(4757),uint(11836),uint(24248),uint(4845),uint(48451),uint(51412),uint(63252),uint(60511),uint(14775),uint(63296),uint(58012),uint(14753),uint(63076),uint(60731),uint(60621),uint(51214),uint(63186),uint(8475),uint(17736),uint(62913),uint(54813),uint(54351),uint(62451),uint(21643),uint(54923),uint(49151),uint(21951),uint(4172),uint(54131),uint(55033),uint(55011),uint(54153),uint(9157),uint(63485),uint(13218),uint(15937),uint(4986),uint(63375),uint(9245),uint(63397),uint(63287),uint(33188),uint(63265),uint(24956),uint(63353),uint(63331),uint(33518),uint(63111),uint(15607),uint(63133),uint(63155),uint(63045),uint(17956),uint(63023),uint(63177),uint(63221),uint(52332),uint(45552),uint(11436),uint(63067),uint(52222),uint(13152),uint(48051),uint(64123),uint(64211),uint(64233),uint(32572),uint(15167),uint(64035),uint(52112),uint(61175),uint(57422),uint(39643),uint(15057),uint(15497),uint(3072),uint(1937),uint(15475),uint(57312),uint(33056),uint(64453),uint(20851),uint(48513),uint(60823),uint(63617),uint(64321),uint(63595),uint(18484),uint(60911),uint(52512),uint(63551),uint(63507),uint(57532),uint(6737),uint(60933),uint(48733),uint(55253),uint(48711),uint(51452),uint(3666),uint(55121),uint(32132),uint(51232),uint(18616),uint(1057),uint(63705),uint(1035),uint(51122),uint(60713),uint(48623),uint(55231),uint(3996),uint(18682),uint(57752),uint(48953),uint(48931),uint(51254),uint(14771),uint(64013),uint(12316),uint(14815),uint(48821),uint(63925),uint(14837),uint(55451),uint(3776),uint(64026),uint(57453),uint(57321),uint(13803),uint(13825),uint(9918),uint(13693),uint(57431),uint(13715),uint(13737),uint(16733),uint(2663),uint(51012),uint(64422),uint(2575),uint(63476),uint(9302),uint(57651),uint(63432),uint(64312),uint(3807),uint(3785),uint(60722),uint(17085),uint(43251),uint(3697),uint(54052),uint(24217),uint(56551),uint(63652),uint(60414),uint(63696),uint(53722),uint(53832),uint(60612),uint(2135),uint(9698),uint(49252),uint(33927),uint(54712),uint(12505),uint(23271),uint(33795),uint(23403),uint(54822),uint(54932),uint(65346),uint(59952),uint(17921),uint(17899),uint(33597),uint(49032),uint(22875),uint(30152),uint(5976),uint(55152),uint(22743),uint(33245),uint(13121),uint(18471),uint(33135),uint(7925),uint(59512),uint(64554),uint(64532),uint(28225),uint(18185),uint(15466),uint(59732),uint(52323),uint(15532),uint(57013),uint(59622),uint(18207),uint(57211),uint(52213),uint(57123),uint(57233),uint(5536),uint(10578),uint(22317),uint(1836),uint(48851),uint(10156),uint(13997),uint(22471),uint(14305),uint(13711),uint(56731),uint(13733),uint(57523),uint(13821),uint(57413),uint(56753),uint(60924),uint(13777),uint(56621),uint(56533),uint(13667),uint(10266),uint(13645),uint(17926),uint(57831),uint(57853),uint(22977),uint(1176),uint(64523),uint(22911),uint(52252),uint(56511),uint(49511),uint(57633),uint(64413),uint(53924),uint(57611),uint(22889),uint(57721),uint(58051),uint(33796),uint(61936),uint(18542),uint(18476),uint(2936),uint(22713),uint(9826),uint(51812),uint(49423),uint(22581),uint(51922),uint(11432),uint(33136),uint(54452),uint(33246),uint(59912),uint(20975),uint(12501),uint(54232),uint(54122),uint(54012),uint(60132),uint(28226),uint(60022),uint(62552),uint(19642),uint(37922),uint(63322),uint(48213),uint(63366),uint(8075),uint(2342),uint(10574),uint(63146),uint(24002),uint(48323),uint(63256),uint(19026),uint(63212),uint(10926),uint(50822),uint(2166),uint(30153),uint(62926),uint(15616),uint(48653),uint(51152),uint(48411),uint(48631),uint(56951),uint(4775),uint(63036),uint(24244),uint(30241),uint(48521),uint(13227),uint(62521),uint(59921),uint(62433),uint(62411),uint(11357),uint(62631),uint(62653),uint(62257),uint(59811),uint(60251),uint(59833),uint(11005),uint(45551),uint(60031),uint(60053),uint(63225),uint(55112),uint(10697),uint(55222),uint(14758),uint(63247),uint(63115),uint(17737),uint(63137),uint(62851),uint(12325),uint(52723),uint(21952),uint(59723),uint(38472),uint(63027),uint(63005),uint(55332),uint(14846),uint(62917),uint(59613),uint(8616),uint(63885),uint(48732),uint(1955),uint(48622),uint(13812),uint(63995),uint(63621),uint(7085),uint(18617),uint(64017),uint(18221),uint(18683),uint(63511),uint(14296),uint(17957),uint(63467),uint(63445),uint(52353),uint(48952),uint(63335),uint(63423),uint(18815),uint(52331),uint(63313),uint(3486),uint(56652),uint(63357),uint(33787),uint(52221),uint(23087),uint(33677),uint(52111),uint(52133),uint(3816),uint(53823),uint(54021),uint(11775),uint(53911),uint(63665),uint(63687),uint(1427),uint(11423),uint(11445),uint(18485),uint(63775),uint(63797),uint(53713),uint(3451),uint(59551),uint(33017),uint(32995),uint(63612),uint(11353),uint(11837),uint(63524),uint(33347),uint(63436),uint(3715),uint(3737),uint(64052),uint(60013),uint(17081),uint(63216),uint(63326),uint(33127),uint(54852),uint(24213),uint(14776),uint(14754),uint(7996),uint(14842),uint(3825),uint(11001),uint(2505),uint(52551),uint(59331),uint(12585),uint(59353),uint(63656),uint(63722),uint(6016),uint(23487),uint(18181),uint(56832),uint(49212),uint(56722),uint(17675),uint(58011),uint(58033),uint(56612),uint(22915),uint(8656),uint(17895),uint(13786),uint(18687),uint(22871),uint(64514),uint(38613),uint(18489),uint(49432),uint(52151),uint(9272),uint(54311),uint(65077),uint(51711),uint(51821),uint(54333),uint(54113),uint(37082),uint(34086),uint(54223),uint(13126),uint(5937),uint(54751),uint(48222),uint(51513),uint(48112),uint(64351),uint(51051),uint(5497),uint(48332),uint(1436),uint(5475),uint(5607),uint(50831),uint(50853),uint(33316),uint(13258),uint(15977),uint(54553),uint(19215),uint(23276),uint(8955),uint(33448),uint(23452),uint(61245),uint(48552),uint(33426),uint(20843),uint(54421),uint(15537),uint(22132),uint(4815),uint(61157),uint(20821),uint(16716),uint(62512),uint(16738),uint(57052),uint(62622),uint(5167),uint(33206),uint(60651),uint(21956),uint(43224),uint(33096),uint(22880),uint(14833),uint(63106),uint(62996),uint(2712),uint(60233),uint(57712),uint(14855),uint(12312),uint(60211),uint(60123),uint(62732),uint(22572),uint(55323),uint(5057),uint(55433),uint(55411),uint(57932),uint(14987),uint(55213),uint(2316),uint(57822),uint(60321),uint(65385)})))|(.Peel:->contains($uint,[]uint{uint(22427),uint(22445),uint(22446),uint(22407)})&.Rotten:== uint(20105)))|(.Rotten:== uint(2018)&.Peel:->contains($uint,[]uint{uint(38032),uint(38031),uint(31340),uint(32620),uint(32862),uint(32841),uint(32842),uint(32371),uint(46662),uint(32011),uint(46661),uint(32372),uint(32350),uint(32012),uint(32861),uint(32280)})))|(.Peel:->contains($uint,[]uint{uint(16623),uint(19311),uint(15321),uint(19831),uint(19791),uint(16333),uint(19312),uint(15322),uint(11701),uint(19792),uint(19801),uint(19793),uint(19811),uint(16621),uint(11702),uint(15323),uint(16331),uint(19802),uint(11703),uint(19821),uint(16622),uint(19803),uint(16332)})&.Rotten:== uint(40052)))|(.Peel:->contains($uint,[]uint{uint(306),uint(5354442),uint(5351243),uint(5357341),uint(5351842),uint(5357342),uint(333),uint(311),uint(5350742),uint(320),uint(298),uint(307),uint(5354443),uint(5350941),uint(5350743),uint(5357343),uint(334),uint(312),uint(5351843),uint(321),uint(299),uint(308),uint(5351241),uint(5350141),uint(5350942),uint(335),uint(313),uint(322),uint(309),uint(318),uint(5351242),uint(5350142),uint(314),uint(5350943),uint(5351841),uint(323),uint(5350741),uint(310),uint(5350143),uint(5354441),uint(297),uint(319)})&.Rotten:== uint(3031)))|(.Peel:->contains($uint,[]uint{uint(46227),uint(34277),uint(34035),uint(34145),uint(34057),uint(34867),uint(46456),uint(34466),uint(31087),uint(34986),uint(34457),uint(34347),uint(34677),uint(34985),uint(34106),uint(34906),uint(34537),uint(34295),uint(38857),uint(34075),uint(31897),uint(34695),uint(34915),uint(34937),uint(34066),uint(34067),uint(34146),uint(34036),uint(46686),uint(34965),uint(34987),uint(34555),uint(46457),uint(34467),uint(34335),uint(34907),uint(34995),uint(34415),uint(34107),uint(34085),uint(46685),uint(34696),uint(34916),uint(34296),uint(34076),uint(46835),uint(34935),uint(31085),uint(46687),uint(34966),uint(46225),uint(34455),uint(34235),uint(34345),uint(34147),uint(34037),uint(34015),uint(34865),uint(34997),uint(34556),uint(34468),uint(34336),uint(46585),uint(34996),uint(34557),uint(34535),uint(34337),uint(31895),uint(34675),uint(34697),uint(34917),uint(34416),uint(34086),uint(34297),uint(34077),uint(34055),uint(34275),uint(46836),uint(38855),uint(34276),uint(34056),uint(34967),uint(34465),uint(31086),uint(46455),uint(46587),uint(34866),uint(46226),uint(34456),uint(34346),uint(34236),uint(34016),uint(34017),uint(34237),uint(34105),uint(34676),uint(34536),uint(46586),uint(34905),uint(38856),uint(31896),uint(34417),uint(34087),uint(34065),uint(34936)})&.Rotten:== uint(40114)))|(.Peel:->contains($uint,[]uint{uint(53),uint(31),uint(14451121),uint(163),uint(185),uint(295),uint(1953111),uint(1539111),uint(15871112),uint(19411122),uint(61201122),uint(1465111),uint(1879111),uint(15391122),uint(1111111),uint(13911122),uint(16831123),uint(1444111),uint(172),uint(304),uint(458),uint(370),uint(19891123),uint(1467113),uint(1992111),uint(1391113),uint(13891121),uint(1446113),uint(1556112),uint(1065111),uint(71),uint(181),uint(1294113),uint(15871121),uint(225),uint(1453113),uint(1557111),uint(18791122),uint(1674112),uint(10651121),uint(467),uint(12241122),uint(1447112),uint(1423113),uint(6126111),uint(15571122),uint(13051123),uint(1176111),uint(1587111),uint(1354111),uint(14461122),uint(1539116),uint(16391121),uint(15371121),uint(1225111),uint(1639111),uint(1270112),uint(5240113),uint(1957111),uint(80),uint(1426113),uint(300),uint(278),uint(1966113),uint(52401122),uint(1389112),uint(19571122),uint(14441121),uint(13901121),uint(23331121),uint(89),uint(18551123),uint(133),uint(243),uint(199),uint(441),uint(1190111),uint(1224112),uint(14671121),uint(12251122),uint(19591123),uint(1701113),uint(1388113),uint(1941112),uint(1855112),uint(1445115),uint(1953112),uint(1879112),uint(15881122),uint(1959113),uint(17071122),uint(32),uint(164),uint(16021121),uint(296),uint(1556116),uint(12241121),uint(1444112),uint(19891122),uint(16831122),uint(19411121),uint(173),uint(15871122),uint(305),uint(371),uint(14451122),uint(18791123),uint(15871113),uint(61201121),uint(15391121),uint(24821121),uint(13911123),uint(1065112),uint(1176112),uint(12701121),uint(1966111),uint(1445111),uint(1674111),uint(226),uint(182),uint(336),uint(1556111),uint(18551121),uint(13541123),uint(1423112),uint(14461123),uint(1294112),uint(26911122),uint(15571123),uint(1587112),uint(1391112),uint(13891122),uint(1354112),uint(147),uint(345),uint(301),uint(1447113),uint(1465112),uint(1993113),uint(13051122),uint(13901122),uint(1537113),uint(6126112),uint(1602111),uint(19931121),uint(1426112),uint(1588111),uint(1225112),uint(1639112),uint(18551122),uint(12251121),uint(26911123),uint(200),uint(134),uint(442),uint(1539115),uint(244),uint(1176113),uint(1190112),uint(1966112),uint(1270111),uint(14441122),uint(1389111),uint(19571121),uint(1423111),uint(52401123),uint(1805113),uint(1683113),uint(14251123),uint(1879113),uint(11501123),uint(15881123),uint(1855111),uint(1554113),uint(17011123),uint(16021122),uint(1224113),uint(363),uint(1445116),uint(1993117),uint(1425113),uint(19591122),uint(1556115),uint(1150113),uint(1388112),uint(1959112),uint(17071123),uint(1941113),uint(1701112),uint(1444113),uint(1391117),uint(306),uint(19891121),uint(15871123),uint(1992113),uint(11901122),uint(24821122),uint(1665112),uint(1111113),uint(1294111),uint(51),uint(1993116),uint(227),uint(183),uint(22841122),uint(337),uint(14451123),uint(14251122),uint(1445112),uint(1354113),uint(1465113),uint(1557113),uint(1587113),uint(1537111),uint(1993112),uint(1453111),uint(1957113),uint(5240116),uint(148),uint(1446111),uint(302),uint(346),uint(456),uint(12701122),uint(13891123),uint(1391111),uint(26911121),uint(1539113),uint(13541122),uint(1588112),uint(1391116),uint(14441123),uint(1388111),uint(69),uint(245),uint(1190113),uint(465),uint(443),uint(14671123),uint(13901123),uint(6126113),uint(1602112),uint(19931122),uint(13051121),uint(1065113),uint(1390113),uint(1993111),uint(1639113),uint(1445117),uint(1225113),uint(5240115),uint(10651123),uint(15371123),uint(17011122),uint(78),uint(1426111),uint(1537112),uint(276),uint(16021123),uint(364),uint(1150112),uint(1467111),uint(16391123),uint(1223111),uint(11501122),uint(5240111),uint(22841121),uint(1959111),uint(1701111),uint(1683112),uint(87),uint(1383113),uint(1805112),uint(307),uint(11901123),uint(1425112),uint(1665113),uint(1554112),uint(16831121),uint(19591121),uint(1665111),uint(15391123),uint(1554111),uint(11901121),uint(1223113),uint(1111112),uint(22841123),uint(1993115),uint(1445113),uint(13911121),uint(14251121),uint(52),uint(30),uint(184),uint(162),uint(15871111),uint(294),uint(338),uint(1467112),uint(1383111),uint(1556113),uint(23331123),uint(149),uint(1446112),uint(171),uint(457),uint(18791121),uint(347),uint(1453112),uint(303),uint(10651122),uint(369),uint(1390111),uint(1539112),uint(13541121),uint(24821123),uint(14461121),uint(1992112),uint(5240117),uint(12241123),uint(12701123),uint(1557112),uint(70),uint(1588113),uint(19411123),uint(180),uint(1674113),uint(466),uint(1447111),uint(1389113),uint(1425111),uint(52401121),uint(15571121),uint(19571123),uint(1683111),uint(1391115),uint(15881121),uint(15371122),uint(17071121),uint(1539117),uint(1270113),uint(17011121),uint(79),uint(365),uint(277),uint(1941111),uint(16391122),uint(23331122),uint(1224111),uint(14671122),uint(1957112),uint(1390112),uint(1150111),uint(1602113),uint(19931123),uint(1383112),uint(132),uint(12251123),uint(88),uint(308),uint(198),uint(1556117),uint(11501121),uint(1223112),uint(1805111),uint(1855113),uint(1953113),uint(5240112)})&.Rotten:== uint(4051)))|(.Peel:->contains($uint,[]uint{uint(1449112),uint(1487113),uint(1234112),uint(1147113),uint(1265113),uint(1450115),uint(1460116),uint(1267115),uint(1811113),uint(2121113),uint(1360111),uint(1356116),uint(1266112),uint(1450111),uint(1262117),uint(1360115),uint(1452113),uint(1423116),uint(1235111),uint(1359112),uint(1355117),uint(1460112),uint(1234117),uint(1356111),uint(1359116),uint(1268113),uint(1223112),uint(1453112),uint(1358113),uint(1449117),uint(1265117),uint(6102113),uint(1541112),uint(1262112),uint(1358117),uint(6114111),uint(1289113),uint(224),uint(1355112),uint(1461115),uint(1266116),uint(1423111),uint(1234113),uint(1416111),uint(1487117),uint(1235116),uint(1450116),uint(57),uint(1147112),uint(1360112),uint(1460117),uint(1449113),uint(1266115),uint(1356117),uint(1265112),uint(1486111),uint(1118113),uint(1289117),uint(2121112),uint(1146113),uint(1268117),uint(6114113),uint(1234111),uint(1811112),uint(1359113),uint(1461111),uint(1423115),uint(1450112),uint(1262116),uint(1266111),uint(1268112),uint(1453113),uint(1356112),uint(1541111),uint(1333111),uint(1386113),uint(1146117),uint(1360116),uint(1289112),uint(1357111),uint(1223113),uint(1234116),uint(1461112),uint(1147111),uint(1118117),uint(1461116),uint(1355113),uint(1235115),uint(1450117),uint(1262111),uint(6114112),uint(1265116),uint(58),uint(1359117),uint(1460113),uint(1333115),uint(1357115),uint(1289116),uint(1448111),uint(1146112),uint(1333116),uint(1267117),uint(1811111),uint(2121111),uint(1355115),uint(1360113),uint(1357117),uint(1487115),uint(1461117),uint(1450113),uint(1486112),uint(1118112),uint(1235113),uint(1487111),uint(1265111),uint(1268116),uint(1262115),uint(1267113),uint(1146116),uint(1358111),uint(1386112),uint(1452111),uint(1262114),uint(1461113),uint(1423113),uint(1358115),uint(1333112),uint(1268111),uint(1357112),uint(1416113),uint(1360117),uint(1289111),uint(1449115),uint(59),uint(1234115),uint(1357116),uint(1118116),uint(1146111),uint(6102111),uint(1265115),uint(1448112),uint(1356113),uint(222),uint(1267116),uint(1235112),uint(1359111),uint(1486113),uint(1289115),uint(1333117),uint(1356115),uint(1449111),uint(1262118),uint(1266113),uint(1460115),uint(1146115),uint(1268115),uint(1118111),uint(1358112),uint(1487112),uint(1267112),uint(1355116),uint(1423117),uint(1223111),uint(1423112),uint(1267111),uint(6102112),uint(1416112),uint(1460111),uint(1357113),uint(1235117),uint(1541113),uint(1262113),uint(1359115),uint(1452112),uint(1333113),uint(1266117),uint(1487116),uint(1449116),uint(223),uint(1453111),uint(1386111),uint(1448113),uint(1358116),uint(1118115),uint(1355111)})&.Rotten:== uint(5051)))|(.Peel:->contains($uint,[]uint{uint(35161),uint(35592),uint(35593),uint(35162),uint(35410),uint(35591)})&.Rotten:== uint(1111)))|(.Peel:->contains($uint,[]uint{uint(45055),uint(46877),uint(46247),uint(46876),uint(46256),uint(35147),uint(45056),uint(46257),uint(35145),uint(46245),uint(45057),uint(46875),uint(35146),uint(46255),uint(46246)})&.Rotten:== uint(20110)))|(.Peel:->contains($uint,[]uint{uint(2573113),uint(2942112),uint(2571111),uint(2955113),uint(2948113),uint(2903112),uint(2915111),uint(2903113),uint(2924112),uint(2932111),uint(2942113),uint(2573112),uint(2924113),uint(2915112),uint(2902111),uint(2932112),uint(2955111),uint(2948111),uint(2573111),uint(2909111),uint(2902112),uint(2909112),uint(2571113),uint(2932113),uint(2942111),uint(2571112),uint(2955112),uint(2948112),uint(2903111),uint(2909113),uint(2924111)})&.Rotten:== uint(4131)))|(.Peel:->contains($uint,[]uint{uint(2118113),uint(2657113),uint(2234111),uint(22411121),uint(61),uint(2206111),uint(2222113),uint(2123111),uint(1464111),uint(48),uint(2233112),uint(2215113),uint(2134111),uint(2238111),uint(2113111),uint(2209111),uint(57),uint(35),uint(233),uint(2232113),uint(2202111),uint(44),uint(1464112),uint(2105112),uint(2241112),uint(2112112),uint(53),uint(2205112),uint(2211113),uint(2101113),uint(2206112),uint(2228111),uint(62),uint(2118112),uint(2101111),uint(2234112),uint(49),uint(27),uint(2207111),uint(22411122),uint(2209113),uint(2214111),uint(2128113),uint(2202113),uint(2110113),uint(58),uint(36),uint(2233113),uint(1464113),uint(2202112),uint(45),uint(2105111),uint(2203111),uint(2209112),uint(2666111),uint(2101112),uint(2205113),uint(54),uint(2112111),uint(2241111),uint(2110112),uint(2228112),uint(2206113),uint(2207112),uint(50),uint(28),uint(2657111),uint(2238113),uint(2234113),uint(2123113),uint(37),uint(59),uint(2134113),uint(2232111),uint(2128112),uint(22411123),uint(2214112),uint(46),uint(2128111),uint(33),uint(55),uint(2203112),uint(231),uint(2211111),uint(2666112),uint(42),uint(2118111),uint(2113113),uint(2657112),uint(2214113),uint(51),uint(29),uint(2110111),uint(2205111),uint(2228113),uint(2222112),uint(2112113),uint(2207113),uint(2134112),uint(38),uint(60),uint(2123112),uint(2105113),uint(2215112),uint(2233111),uint(2238112),uint(47),uint(2232112),uint(34),uint(56),uint(2203113),uint(232),uint(2241113),uint(2215111),uint(2222111),uint(43),uint(2666113),uint(2113112),uint(2211112),uint(52)})&.Rotten:== uint(4081)))|(.Rotten:== uint(4101)&.Peel:->contains($uint,[]uint{uint(16311122),uint(1426112),uint(15211123),uint(1631111),uint(14471121),uint(11491122),uint(1805112),uint(1554113),uint(12711123),uint(1383113),uint(19671121),uint(1665113),uint(11111122),uint(13831121),uint(16641123),uint(1426116),uint(14261123),uint(1294111),uint(1674111),uint(14651123),uint(11491121),uint(12941123),uint(1111117),uint(14471122),uint(1447111),uint(22651121),uint(387),uint(1426111),uint(1664113),uint(1967113),uint(1271113),uint(15211122),uint(1426115),uint(14261122),uint(1383112),uint(1665112),uint(1554112),uint(19671122),uint(1414113),uint(16311123),uint(1805111),uint(1554111),uint(1414112),uint(1149113),uint(11761123),uint(1111113),uint(11111123),uint(61261123),uint(16741121),uint(15541123),uint(1631112),uint(1447112),uint(1465111),uint(1176111),uint(14651122),uint(14471123),uint(388),uint(1111116),uint(6126112),uint(1271112),uint(1521112),uint(12941122),uint(12711121),uint(22651122),uint(1664112),uint(16741122),uint(14261121),uint(15211121),uint(61261122),uint(1149112),uint(16641121),uint(1674113),uint(1665111),uint(14651121),uint(19671123),uint(13831123),uint(11761122),uint(1111112),uint(1383111),uint(1414111),uint(1967112),uint(22651123),uint(1447113),uint(1176112),uint(16651121),uint(15541122),uint(389),uint(1631113),uint(1521113),uint(1465112),uint(6126111),uint(1294113),uint(1521111),uint(16651123),uint(15541121),uint(12711122),uint(1176113),uint(6126113),uint(16311121),uint(12941121),uint(61261121),uint(1805113),uint(16641122),uint(11491123),uint(16741123),uint(1149111),uint(1271111),uint(1426113),uint(1664111),uint(13831122),uint(1111111),uint(11761121),uint(11111121),uint(1426117),uint(1294112),uint(1967111),uint(1465113),uint(1674112),uint(16651122),uint(1111115)})))|(.Rotten:== uint(1010)&.Peel:->contains($uint,[]uint{uint(33871),uint(33862),uint(33831),uint(33941),uint(33303),uint(33832),uint(33942),uint(33801),uint(33911),uint(33902),uint(33872),uint(33841),uint(33811),uint(33921),uint(33802),uint(33912),uint(33881),uint(33882),uint(33301),uint(33851),uint(33842),uint(33821),uint(33812),uint(33922),uint(33803),uint(33913),uint(33891),uint(33861),uint(33852),uint(33302),uint(33822),uint(33813),uint(33901),uint(33892)})))|(.Rotten:== uint(7021)&.Peel:->contains($uint,[]uint{uint(4464582),uint(4349642),uint(4342743),uint(4344644),uint(4340741),uint(4344142),uint(4342343),uint(4462241),uint(4446442),uint(4348643),uint(4341441),uint(4340143),uint(4464542),uint(4340341),uint(4466843),uint(4349941),uint(4341041),uint(4349141),uint(4310842),uint(4318942),uint(4345542),uint(4446441),uint(4344143),uint(4468343),uint(4344543),uint(4340742),uint(4343342),uint(4346941),uint(4464581),uint(4346743),uint(4303243),uint(4349643),uint(4349841),uint(4340641),uint(4349942),uint(4464541),uint(4318941),uint(4466842),uint(4341442),uint(4340342),uint(4341042),uint(4349142),uint(4387441),uint(4468342),uint(4349943),uint(4388541),uint(4310841),uint(4340642),uint(4343343),uint(4344641),uint(4340743),uint(4346942),uint(4345543),uint(4341443),uint(4348641),uint(4340343),uint(4466841),uint(4345341),uint(4303242),uint(4342741),uint(4349842),uint(4344541),uint(4468341),uint(4462243),uint(4342341),uint(4341043),uint(4346741),uint(4340141),uint(4345342),uint(4346943),uint(4340643),uint(4388542),uint(4344642),uint(4387442),uint(4349143),uint(4342742),uint(4464583),uint(4349641),uint(4349843),uint(4344141),uint(4340142),uint(4303241),uint(4462242),uint(4348642),uint(4346742),uint(4343341),uint(4464543),uint(4310843),uint(4345343),uint(4345541),uint(4342342),uint(4318943),uint(4388543),uint(4344643),uint(4387443),uint(4344542)})))|(.Rotten:== uint(3173)&.Peel:->contains($uint,[]uint{uint(39323),uint(43472),uint(39411),uint(31091),uint(39521),uint(55611),uint(51352),uint(30761),uint(47115),uint(34976),uint(55413),uint(34536),uint(34492),uint(34316),uint(34426),uint(34382),uint(34822),uint(31861),uint(34646),uint(40511),uint(32037),uint(30321),uint(40621),uint(44902),uint(48853),uint(45056),uint(40335),uint(48611),uint(41712),uint(34272),uint(34052),uint(41822),uint(48721),uint(34162),uint(53521),uint(50912),uint(39851),uint(48413),uint(51022),uint(47951),uint(59452),uint(28812),uint(54102),uint(54212),uint(48822),uint(54322),uint(48712),uint(44981),uint(41721),uint(41831),uint(45113),uint(42623),uint(45091),uint(42711),uint(38452),uint(58053),uint(41853),uint(54652),uint(55092),uint(57723),uint(55224),uint(52311),uint(54982),uint(57921),uint(42513),uint(57811),uint(49812),uint(52553),uint(45575),uint(57613),uint(49922),uint(31082),uint(40731),uint(40753),uint(40687),uint(46257),uint(51651),uint(39552),uint(35143),uint(51321),uint(51123),uint(51013),uint(34813),uint(55422),uint(40951),uint(34901),uint(46037),uint(34967),uint(34395),uint(41413),uint(46873),uint(34351),uint(34461),uint(41523),uint(34417),uint(44242),uint(41611),uint(34307),uint(46455),uint(49152),uint(46587),uint(31896),uint(34593),uint(48954),uint(34527),uint(38936),uint(44845),uint(54304),uint(34021),uint(34043),uint(49412),uint(44537),uint(44647),uint(54414),uint(54612),uint(58013),uint(54392),uint(40322),uint(52923),uint(44515),uint(40212),uint(48752),uint(53011),uint(34065),uint(34087),uint(48422),uint(41422),uint(54722),uint(45571),uint(41752),uint(57221),uint(57353),uint(48312),uint(51713),uint(51823),uint(51911),uint(27021),uint(46451),uint(38351),uint(46033),uint(30642),uint(43723),uint(56152),uint(46253),uint(51251),uint(46583),uint(64252),uint(55822),uint(58321),uint(40652),uint(46222),uint(56922),uint(43776),uint(34672),uint(50613),uint(27012),uint(57252),uint(34782),uint(34826),uint(53772),uint(38857),uint(64353),uint(34276),uint(34342),uint(30303),uint(50921),uint(30325),uint(38747),uint(34166),uint(40551),uint(51053),uint(34232),uint(40595),uint(64023),uint(40683),uint(31843),uint(50723),uint(53222),uint(34452),uint(54071),uint(34386),uint(34496),uint(54181),uint(40705),uint(30193),uint(50811),uint(64221),uint(54313),uint(58022),uint(54621),uint(41906),uint(52826),uint(54511),uint(57912),uint(34056),uint(54533),uint(40331),uint(34012),uint(49623),uint(40221),uint(54863),uint(57824),uint(49821),uint(54841),uint(54753),uint(49711),uint(57714),uint(39913),uint(42522),uint(31095),uint(34211),uint(44413),uint(34145),uint(34233),uint(44523),uint(34277),uint(34255),uint(34101),uint(34057),uint(52821),uint(30326),uint(34167),uint(40682),uint(34497),uint(44061),uint(34365),uint(34321),uint(34453),uint(52711),uint(45051),uint(34431),uint(48452),uint(34387),uint(39912),uint(45117),uint(43775),uint(45095),uint(41122),uint(27013),uint(49552),uint(34013),uint(34035),uint(53921),uint(54031),uint(45821),uint(51083),uint(54251),uint(54141),uint(54273),uint(31096),uint(57652),uint(43423),uint(51721),uint(42521),uint(50951),uint(54713),uint(54691),uint(57212),uint(49112),uint(55021),uint(42653),uint(51523),uint(48914),uint(59821),uint(54911),uint(54823),uint(46283),uint(57322),uint(55571),uint(31131),uint(38931),uint(46032),uint(31087),uint(49323),uint(55153),uint(45812),uint(30647),uint(50423),uint(50621),uint(46582),uint(34642),uint(50313),uint(31945),uint(34906),uint(32033),uint(34532),uint(34972),uint(48751),uint(52922),uint(59852),uint(58312),uint(46252),uint(34026),uint(47176),uint(56913),uint(40251),uint(34422),uint(34356),uint(34466),uint(57111),uint(57023),uint(39921),uint(34312),uint(64212),uint(39811),uint(51822),uint(42222),uint(64322),uint(49411),uint(56451),uint(39613),uint(56583),uint(54062),uint(41901),uint(41813),uint(50111),uint(49913),uint(55223),uint(54981),uint(42011),uint(46226),uint(50023),uint(41681),uint(55091),uint(50221),uint(53622),uint(55113),uint(53512),uint(64313),uint(49121),uint(55421),uint(50551),uint(58052),uint(59812),uint(28821),uint(44642),uint(48923),uint(42143),uint(44532),uint(40493),uint(40823),uint(34985),uint(34963),uint(40713),uint(40911),uint(56851),uint(34655),uint(41153),uint(31892),uint(38412),uint(34787),uint(34435),uint(34413),uint(34523),uint(34457),uint(38852),uint(47172),uint(41351),uint(38742),uint(34677),uint(53912),uint(51312),uint(44673),uint(54022),uint(40612),uint(34105),uint(34061),uint(34083),uint(34017),uint(40326),uint(44563),uint(40722),uint(57951),uint(44541),uint(34325),uint(46833),uint(34303),uint(34391),uint(44453),uint(57621),uint(46877),uint(44431),uint(34215),uint(54352),uint(34237),uint(57313),uint(39952),uint(57423),uint(58853),uint(57511),uint(44101),uint(39512),uint(54902),uint(43771),uint(39622),uint(55254),uint(48813),uint(53811),uint(38223),uint(53723),uint(48351),uint(50322),uint(55012),uint(50212),uint(53613),uint(55122),uint(38421),uint(47911),uint(35702),uint(53151),uint(37265),uint(57724),uint(49712),uint(28813),uint(41612),uint(57812),uint(49822),uint(54103),uint(45585),uint(54213),uint(54323),uint(46245),uint(46223),uint(54301),uint(48722),uint(54411),uint(40336),uint(41722),uint(54653),uint(52827),uint(41832),uint(48612),uint(55093),uint(54983),uint(52321),uint(54961),uint(46685),uint(54851),uint(35703),uint(31862),uint(40512),uint(52365),uint(38937),uint(40622),uint(64051),uint(55621),uint(40732),uint(38211),uint(51771),uint(34823),uint(55423),uint(30045),uint(34867),uint(34911),uint(34977),uint(57922),uint(34933),uint(38431),uint(40952),uint(38453),uint(43473),uint(40103),uint(30322),uint(34427),uint(34405),uint(34493),uint(34383),uint(40015),uint(34273),uint(34251),uint(34295),uint(34361),uint(50913),uint(34317),uint(56853),uint(56831),uint(40521),uint(34691),uint(34647),uint(40653),uint(34537),uint(34515),uint(39751),uint(51551),uint(39421),uint(39553),uint(40851),uint(51353),uint(34053),uint(34075),uint(34185),uint(34031),uint(51023),uint(34163),uint(51111),uint(34141),uint(39311),uint(53522),uint(57953),uint(47952),uint(57821),uint(57513),uint(49813),uint(49923),uint(57711),uint(54332),uint(57623),uint(50121),uint(31092),uint(54552),uint(44903),uint(60012),uint(50011),uint(57051),uint(45057),uint(40323),uint(54662),uint(30762),uint(40213),uint(42941),uint(10211),uint(50953),uint(31831),uint(42611),uint(50711),uint(42523),uint(31897),uint(56681),uint(50821),uint(31941),uint(51723),uint(31083),uint(64253),uint(38352),uint(42721),uint(30643),uint(56153),uint(34902),uint(40222),uint(41511),uint(49721),uint(49611),uint(41423),uint(34308),uint(34396),uint(41621),uint(34352),uint(48212),uint(41753),uint(53452),uint(54072),uint(34418),uint(48322),uint(34462),uint(56923),uint(42171),uint(44846),uint(53012),uint(45097),uint(45053),uint(54182),uint(50623),uint(57253),uint(44516),uint(54622),uint(41907),uint(34022),uint(34066),uint(57011),uint(54512),uint(48313),uint(54842),uint(41652),uint(48423),uint(37261),uint(51912),uint(59453),uint(55612),uint(49413),uint(58023),uint(40332),uint(57913),uint(38933),uint(44261),uint(50922),uint(45572),uint(44415),uint(40552),uint(40596),uint(50812),uint(44151),uint(40706),uint(34915),uint(48951),uint(34981),uint(34937),uint(43425),uint(43777),uint(27022),uint(34695),uint(34673),uint(34651),uint(48621),uint(64011),uint(51252),uint(48753),uint(53773),uint(43711),uint(34783),uint(34827),uint(54692),uint(42223),uint(50411),uint(50323),uint(42751),uint(58313),uint(54912),uint(42905),uint(51313),uint(53812),uint(55022),uint(31097),uint(57653),uint(49311),uint(34828),uint(64222),uint(34916),uint(53152),uint(39812),uint(34696),uint(47912),uint(34652),uint(34982),uint(49421),uint(56452),uint(49553),uint(55572),uint(41123),uint(38932),uint(34102),uint(41651),uint(34036),uint(34212),uint(34256),uint(52822),uint(34146),uint(50213),uint(44062),uint(34432),uint(52712),uint(34322),uint(31845),uint(34366),uint(64213),uint(64323),uint(57222),uint(44841),uint(41352),uint(47111),uint(44643),uint(44511),uint(54063),uint(54151),uint(44533),uint(40252),uint(41902),uint(54393),uint(44291),uint(51722),uint(39922),uint(41682),uint(38413),uint(54811),uint(45052),uint(54723),uint(49113),uint(45096),uint(50622),uint(55031),uint(54613),uint(31946),uint(59853),uint(38853),uint(58322),uint(38743),uint(48453),uint(30041),uint(45822),uint(55581),uint(48211),uint(30305),uint(30327),uint(53451),uint(34995),uint(30195),uint(40912),uint(50952),uint(48321),uint(55251),uint(39821),uint(34665),uint(34643),uint(34533),uint(44102),uint(34511),uint(34863),uint(34907),uint(48251),uint(34555),uint(47921),uint(34973),uint(34467),uint(39513),uint(43772),uint(39623),uint(52312),uint(34027),uint(53913),uint(40613),uint(40591),uint(40701),uint(54023),uint(40723),uint(34115),uint(51652),uint(34071),uint(34357),uint(44982),uint(34313),uint(56852),uint(34335),uint(40811),uint(34423),uint(34401),uint(34181),uint(54353),uint(54331),uint(45092),uint(40921),uint(34291),uint(54551),uint(60011),uint(49153),uint(54903),uint(42012),uint(50552),uint(59813),uint(48911),uint(54661),uint(45576),uint(48713),uint(57952),uint(55211),uint(48823),uint(31132),uint(40327),uint(51322),uint(53821),uint(53711),uint(57512),uint(57622),uint(40107),uint(39953),uint(53513),uint(53623),uint(55123),uint(31893),uint(49122),uint(42901),uint(48924),uint(42945),uint(10251),uint(42175),uint(59822),uint(50112),uint(52941),uint(34986),uint(48352),uint(50222),uint(38422),uint(52721),uint(46601),uint(57411),uint(57213),uint(57521),uint(34392),uint(39852),uint(34436),uint(34414),uint(46227),uint(39522),uint(51511),uint(28822),uint(34656),uint(53922),uint(57323),uint(54032),uint(54142),uint(39412),uint(44432),uint(34062),uint(44542),uint(42021),uint(34216),uint(34304),uint(34326),uint(34106),uint(54252),uint(41713),uint(51775),uint(41823),uint(39312),uint(39422),uint(35141),uint(64052),uint(55622),uint(51253),uint(34965),uint(51913),uint(34987),uint(51121),uint(34525),uint(42713),uint(34437),uint(34305),uint(34327),uint(34415),uint(34393),uint(34811),uint(40522),uint(34591),uint(48952),uint(42141),uint(57052),uint(50021),uint(41613),uint(45111),uint(34107),uint(34217),uint(34063),uint(41723),uint(34085),uint(34041),uint(41811),uint(41833),uint(48622),uint(40016),uint(50923),uint(50813),uint(45573),uint(51011),uint(28823),uint(56832),uint(39752),uint(48811),uint(42172),uint(48723),uint(54333),uint(48921),uint(54553),uint(54311),uint(54531),uint(38221),uint(38353),uint(54751),uint(48613),uint(38551),uint(54663),uint(54641),uint(57822),uint(57712),uint(55213),uint(42612),uint(49713),uint(47953),uint(54861),uint(49823),uint(45586),uint(52322),uint(52366),uint(31093),uint(49911),uint(44847),uint(46246),uint(51354),uint(44671),uint(44561),uint(40852),uint(51772),uint(51112),uint(30046),uint(44451),uint(34824),uint(44517),uint(55411),uint(34912),uint(39321),uint(34362),uint(41512),uint(34406),uint(31863),uint(34252),uint(41622),uint(31841),uint(34296),uint(46686),uint(49251),uint(34692),uint(34648),uint(51552),uint(34516),uint(54183),uint(40751),uint(48851),uint(54271),uint(54513),uint(34032),uint(49423),uint(54623),uint(34186),uint(40333),uint(44416),uint(52912),uint(34142),uint(53022),uint(49621),uint(34076),uint(40223),uint(54843),uint(48323),uint(44152),uint(41653),uint(40091),uint(54821),uint(41411),uint(48213),uint(48411),uint(45582),uint(52362),uint(55151),uint(44262),uint(54711),uint(37262),uint(41521),uint(55613),uint(51812),uint(51922),uint(64021),uint(43426),uint(43712),uint(30763),uint(46242),uint(52142),uint(30301),uint(30323),uint(30191),uint(10221),uint(46836),uint(42942),uint(30015),uint(46682),uint(40597),uint(49313),uint(40553),uint(40685),uint(40707),uint(64351),uint(55811),uint(57021),uint(56911),uint(34991),uint(46255),uint(35145),uint(27023),uint(34661),uint(46035),uint(34815),uint(34903),uint(43721),uint(42951),uint(46871),uint(34353),uint(34111),uint(34331),uint(10212),uint(40496),uint(64012),uint(46585),uint(31942),uint(56581),uint(31832),uint(46453),uint(34551),uint(50712),uint(34463),uint(34397),uint(50822),uint(53013),uint(54302),uint(53211),uint(54412),uint(42621),uint(54654),uint(58011),uint(47113),uint(41851),uint(34067),uint(42753),uint(34045),uint(57923),uint(34023),uint(49612),uint(54962),uint(57813),uint(54852),uint(49722),uint(57351),uint(40012),uint(42511),uint(52551),uint(44512),uint(34112),uint(40253),uint(44292),uint(40495),uint(48221),uint(34552),uint(57113),uint(34464),uint(40011),uint(48353),uint(39813),uint(34332),uint(52722),uint(39923),uint(47913),uint(10252),uint(40913),uint(41111),uint(34046),uint(54152),uint(31085),uint(51776),uint(49321),uint(57421),uint(46602),uint(57223),uint(49123),uint(55032),uint(51512),uint(42906),uint(30645),uint(57311),uint(51314),uint(54812),uint(53813),uint(55582),uint(45581),uint(49312),uint(55252),uint(31846),uint(43421),uint(34785),uint(34697),uint(34675),uint(50412),uint(53153),uint(53351),uint(42651),uint(34917),uint(34521),uint(34983),uint(34961),uint(30306),uint(58323),uint(52911),uint(46241),uint(53021),uint(41771),uint(34081),uint(41683),uint(34037),uint(34015),uint(56682),uint(34213),uint(41903),uint(34147),uint(52361),uint(52823),uint(34103),uint(34411),uint(34455),uint(34367),uint(46835),uint(52713),uint(34433),uint(34235),uint(57012),uint(34257),uint(46681),uint(34323),uint(34301),uint(34345),uint(56154),uint(51811),uint(58851),uint(64223),uint(39822),uint(64311),uint(44842),uint(51921),uint(49422),uint(52141),uint(42145),uint(42013),uint(42211),uint(54073),uint(55212),uint(50122),uint(42022),uint(50012),uint(53721),uint(53611),uint(53523),uint(60021),uint(46281),uint(59823),uint(46457),uint(48912),uint(42176),uint(44543),uint(44521),uint(40592),uint(44411),uint(40702),uint(47117),uint(44433),uint(39413),uint(40812),uint(30196),uint(34996),uint(46831),uint(46875),uint(40922),uint(30042),uint(34644),uint(32035),uint(34556),uint(38423),uint(34468),uint(34402),uint(34512),uint(52313),uint(43773),uint(34666),uint(53923),uint(51323),uint(40623),uint(54011),uint(34116),uint(54033),uint(34072),uint(40337),uint(54143),uint(51653),uint(40711),uint(40733),uint(54253),uint(40953),uint(34292),uint(51081),uint(40821),uint(34336),uint(54231),uint(30011),uint(40095),uint(34182),uint(37266),uint(54693),uint(57412),uint(54451),uint(57522),uint(41151),uint(39853),uint(54913),uint(39523),uint(51521),uint(39611),uint(53822),uint(31133),uint(38212),uint(53712),uint(50311),uint(50223),uint(44983),uint(38432),uint(45093),uint(55111),uint(55221),uint(45115),uint(47922),uint(50421),uint(48252),uint(42946),uint(45577),uint(52942),uint(42902),uint(55573),uint(50553),uint(40491),uint(40513),uint(57713),uint(57823),uint(49613),uint(41513),uint(49723),uint(41623),uint(49811),uint(53212),uint(49151),uint(49921),uint(57053),uint(54312),uint(44672),uint(48953),uint(48711),uint(42173),uint(44562),uint(56833),uint(46256),uint(48821),uint(56921),uint(40325),uint(41711),uint(54642),uint(54752),uint(57251),uint(44452),uint(54532),uint(46036),uint(41821),uint(48623),uint(46872),uint(38552),uint(55214),uint(31895),uint(46586),uint(52552),uint(40523),uint(35142),uint(40611),uint(40853),uint(38222),uint(40721),uint(34812),uint(55412),uint(57911),uint(34966),uint(58021),uint(44153),uint(34416),uint(51012),uint(30487),uint(34306),uint(44241),uint(46687),uint(47171),uint(34592),uint(34526),uint(43471),uint(40752),uint(43427),uint(40686),uint(64053),uint(34086),uint(30047),uint(43713),uint(34042),uint(53621),uint(51122),uint(39322),uint(53511),uint(42613),uint(42943),uint(54013),uint(54101),uint(59451),uint(64251),uint(57722),uint(54321),uint(49912),uint(54211),uint(57612),uint(54233),uint(37263),uint(31081),uint(50022),uint(54453),uint(45112),uint(30641),uint(54651),uint(42723),uint(51052),uint(42952),uint(64352),uint(10222),uint(46837),uint(56582),uint(50722),uint(46683),uint(55812),uint(42512),uint(59851),uint(31842),uint(38935),uint(51712),uint(30764),uint(34693),uint(38451),uint(42622),uint(34781),uint(34825),uint(34935),uint(34913),uint(53771),uint(34297),uint(34341),uint(48421),uint(41522),uint(49622),uint(40211),uint(34385),uint(41412),uint(34363),uint(34165),uint(48223),uint(40013),uint(34187),uint(34231),uint(34275),uint(34253),uint(34671),uint(57352),uint(34495),uint(34517),uint(54061),uint(48311),uint(34451),uint(56912),uint(53023),uint(39551),uint(54391),uint(53221),uint(50612),uint(54303),uint(41852),uint(34011),uint(52825),uint(54611),uint(54413),uint(34143),uint(52913),uint(34055),uint(34077),uint(44417),uint(57022),uint(34033),uint(52363),uint(54853),uint(41421),uint(54721),uint(41751),uint(48412),uint(41773),uint(54963),uint(55623),uint(44901),uint(45055),uint(42147),uint(51813),uint(42213),uint(44646),uint(51923),uint(58012),uint(41905),uint(57814),uint(52143),uint(40321),uint(44536),uint(45583),uint(30192),uint(30302),uint(50911),uint(38746),uint(51021),uint(38856),uint(40497),uint(35146),uint(50713),uint(50823),uint(40651),uint(44052),uint(55821),uint(46243),uint(46221),uint(32031),uint(27011),uint(34662),uint(34992),uint(48852),uint(64022),uint(51351),uint(56151),uint(41113),uint(43722),uint(34816),uint(46581),uint(46603),uint(42212),uint(50422),uint(58852),uint(50312),uint(42652),uint(32032),uint(55011),uint(38745),uint(54901),uint(42146),uint(46251),uint(54813),uint(51324),uint(53823),uint(53713),uint(31086),uint(55033),uint(35147),uint(51082),uint(55121),uint(49322),uint(55253),uint(34817),uint(64211),uint(64321),uint(34861),uint(47923),uint(39823),uint(34905),uint(34663),uint(34641),uint(34993),uint(34971),uint(44843),uint(64013),uint(34553),uint(52921),uint(44645),uint(52943),uint(55583),uint(44535),uint(41112),uint(44513),uint(47175),uint(44293),uint(34025),uint(34047),uint(41772),uint(38855),uint(44051),uint(34531),uint(34421),uint(34465),uint(34311),uint(52723),uint(34333),uint(45116),uint(34355),uint(41121),uint(51821),uint(57651),uint(57211),uint(64312),uint(51513),uint(57321),uint(56683),uint(44522),uint(54272),uint(44412),uint(57013),uint(39911),uint(51711),uint(51777),uint(54822),uint(50413),uint(30646),uint(31891),uint(50611),uint(54712),uint(50721),uint(58311),uint(45811),uint(51051),uint(48222),uint(46031),uint(40593),uint(55152),uint(43422),uint(40681),uint(40703),uint(40923),uint(53352),uint(40813),uint(34676),uint(34786),uint(57413),uint(34522),uint(34962),uint(34456),uint(30307),uint(52323),uint(51553),uint(52367),uint(30483),uint(39612),uint(40492),uint(34016),uint(54012),uint(40712),uint(34082),uint(51773),uint(34346),uint(30197),uint(54232),uint(34412),uint(40822),uint(31847),uint(34236),uint(34302),uint(30043),uint(49252),uint(54452),uint(60022),uint(37267),uint(42177),uint(42023),uint(42221),uint(48922),uint(58051),uint(42947),uint(45587),uint(55222),uint(48812),uint(51311),uint(46247),uint(46225),uint(53722),uint(57523),uint(57611),uint(51113),uint(57721),uint(53612),uint(55112),uint(49551),uint(35701),uint(49111),uint(48913),uint(38851),uint(38741),uint(32036),uint(42142),uint(59811),uint(50013),uint(48253),uint(50321),uint(34931),uint(38213),uint(34997),uint(34975),uint(38411),uint(38433),uint(48451),uint(50211),uint(39951),uint(34557),uint(34491),uint(40017),uint(34535),uint(34513),uint(57422),uint(34381),uint(41152),uint(34821),uint(34865),uint(34425),uint(46282),uint(28811),uint(39621),uint(51522),uint(39753),uint(34667),uint(53911),uint(57312),uint(34645),uint(44641),uint(39313),uint(54021),uint(39423),uint(34051),uint(34073),uint(39511),uint(44531),uint(34271),uint(34161),uint(46876),uint(34315),uint(34293),uint(34337),uint(41812),uint(46832),uint(34183),uint(54351)}))))|(.Brown:== "03"&(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.Rotten:== uint(23162)&.Peel:->contains($uint,[]uint{uint(11052),uint(11021),uint(673),uint(849),uint(11017),uint(748),uint(31031),uint(20551),uint(20842),uint(3916),uint(23913),uint(31001),uint(31023),uint(678),uint(20741),uint(11026),uint(11022),uint(841),uint(11057),uint(3912),uint(11031),uint(31006),uint(20671),uint(551),uint(31041),uint(11027),uint(3917),uint(20552),uint(846),uint(31032),uint(11036),uint(20676),uint(20742),uint(31011),uint(31033),uint(842),uint(556),uint(20746),uint(31002),uint(3913),uint(11023),uint(11001),uint(20843),uint(741),uint(11041),uint(552),uint(11032),uint(20747),uint(31007),uint(31051),uint(20553),uint(3918),uint(11006),uint(11028),uint(671),uint(847),uint(31042),uint(20672),uint(746),uint(20743),uint(20677),uint(23911),uint(31012),uint(843),uint(557),uint(11037),uint(20844),uint(11011),uint(11033),uint(742),uint(676),uint(11002),uint(11046),uint(11042),uint(553),uint(20748),uint(672),uint(31052),uint(848),uint(11016),uint(11038),uint(11007),uint(11051),uint(20673),uint(747),uint(31021),uint(11047),uint(844),uint(31022),uint(558),uint(20841),uint(23912),uint(743),uint(677),uint(3911),uint(11012),uint(11056),uint(20678)}))|(.Rotten:== uint(10498)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(20164)&.Peel:->contains($uint,[]uint{uint(20441),uint(12143),uint(11923),uint(92),uint(20463),uint(11461),uint(3251),uint(422),uint(32822),uint(1302),uint(1522),uint(21343),uint(63053),uint(21123),uint(32162),uint(10062),uint(12473),uint(3911),uint(30072),uint(2402),uint(21893),uint(101),uint(20692),uint(20362),uint(22201),uint(32153),uint(11021),uint(22223),uint(20582),uint(761),uint(673),uint(25052),uint(12992),uint(32901),uint(431),uint(453),uint(10581),uint(563),uint(10603),uint(22821),uint(1311),uint(6032),uint(1993),uint(30613),uint(30591),uint(31713),uint(30063),uint(10071),uint(11061),uint(2873),uint(4162),uint(11171),uint(11281),uint(22271),uint(2191),uint(2213),uint(22601),uint(11052),uint(462),uint(21202),uint(22192),uint(10392),uint(3621),uint(25043),uint(5051),uint(10612),uint(572),uint(20872),uint(31462),uint(1892),uint(12152),uint(2002),uint(9301),uint(23451),uint(31463),uint(3872),uint(2222),uint(4092),uint(30583),uint(10982),uint(581),uint(383),uint(361),uint(20732),uint(20072),uint(22571),uint(691),uint(603),uint(20402),uint(801),uint(22901),uint(1791),uint(12491),uint(1923),uint(22272),uint(1461),uint(12821),uint(2143),uint(22602),uint(12161),uint(22822),uint(11523),uint(21172),uint(3133),uint(3001),uint(24221),uint(2693),uint(62),uint(2583),uint(2561),uint(21902),uint(4563),uint(612),uint(12993),uint(12223),uint(392),uint(33623),uint(3573),uint(20912),uint(32831),uint(10582),uint(1272),uint(2152),uint(3903),uint(3881),uint(4101),uint(4123),uint(4343),uint(4321),uint(12751),uint(1712),uint(3252),uint(20613),uint(20701),uint(20723),uint(20393),uint(20921),uint(10551),uint(31621),uint(3912),uint(32171),uint(20063),uint(20371),uint(21911),uint(93),uint(71),uint(21933),uint(63052),uint(731),uint(23002),uint(12962),uint(401),uint(423),uint(1303),uint(10881),uint(33812),uint(841),uint(11101),uint(21163),uint(10063),uint(2271),uint(10591),uint(10613),uint(2161),uint(33813),uint(1523),uint(31622),uint(10393),uint(25053),uint(2601),uint(11031),uint(2821),uint(2403),uint(102),uint(22202),uint(11462),uint(762),uint(21221),uint(32163),uint(32141),uint(432),uint(20913),uint(564),uint(20451),uint(1312),uint(20693),uint(21991),uint(20363),uint(22211),uint(11022),uint(20583),uint(30601),uint(2192),uint(3811),uint(4163),uint(20873),uint(32902),uint(20741),uint(111),uint(11062),uint(11282),uint(12822),uint(20411),uint(463),uint(551),uint(30073),uint(573),uint(12492),uint(21621),uint(1321),uint(21203),uint(12162),uint(3622),uint(2223),uint(2201),uint(24151),uint(12461),uint(12153),uint(9302),uint(1893),uint(31362),uint(36031),uint(2003),uint(1981),uint(22193),uint(32871),uint(10072),uint(2861),uint(22831),uint(362),uint(30592),uint(22941),uint(20442),uint(4841),uint(582),uint(802),uint(692),uint(20821),uint(20601),uint(1462),uint(22273),uint(20931),uint(12171),uint(10552),uint(24222),uint(3873),uint(10882),uint(30593),uint(2562),uint(4093),uint(1792),uint(32872),uint(12831),uint(12963),uint(35041),uint(3882),uint(4102),uint(10741),uint(20412),uint(63),uint(393),uint(4322),uint(3002),uint(613),uint(591),uint(11621),uint(22691),uint(22603),uint(10983),uint(1273),uint(20742),uint(11023),uint(11001),uint(1801),uint(1713),uint(1911),uint(2131),uint(2153),uint(10583),uint(12101),uint(20922),uint(72),uint(22871),uint(3253),uint(20702),uint(31521),uint(20372),uint(732),uint(2901),uint(23003),uint(11463),uint(402),uint(22572),uint(842),uint(22902),uint(32832),uint(11102),uint(23452),uint(2602),uint(3913),uint(3891),uint(32172),uint(20073),uint(2822),uint(20403),uint(12752),uint(21912),uint(4661),uint(2272),uint(2162),uint(20452),uint(81),uint(103),uint(11362),uint(741),uint(763),uint(411),uint(433),uint(32833),uint(1313),uint(31381),uint(9303),uint(1621),uint(31623),uint(63042),uint(32151),uint(21222),uint(10073),uint(31711),uint(32173),uint(3812),uint(12462),uint(2831),uint(30061),uint(12761),uint(2171),uint(2193),uint(26031),uint(112),uint(20461),uint(20351),uint(20703),uint(21992),uint(20373),uint(32142),uint(11032),uint(3623),uint(22212),uint(30611),uint(12871),uint(25041),uint(22872),uint(10592),uint(552),uint(22832),uint(1322),uint(1982),uint(30602),uint(22942),uint(12493),uint(12471),uint(21622),uint(2862),uint(10984),uint(20421),uint(2202),uint(10742),uint(21521),uint(11063),uint(11041),uint(451),uint(11283),uint(21191),uint(363),uint(22203),uint(32221),uint(4842),uint(803),uint(32903),uint(21081),uint(10601),uint(561),uint(583),uint(671),uint(20861),uint(693),uint(1463),uint(1793),uint(11921),uint(12163),uint(12141),uint(1991),uint(24152),uint(3003),uint(11103),uint(11521),uint(2871),uint(35051),uint(3883),uint(2211),uint(10883),uint(4103),uint(2563),uint(32222),uint(10971),uint(20611),uint(12181),uint(20743),uint(20721),uint(20061),uint(22692),uint(33621),uint(592),uint(20391),uint(20413),uint(32873),uint(1912),uint(1802),uint(12832),uint(1274),uint(2132),uint(12172),uint(21623),uint(22833),uint(11622),uint(21161),uint(4323),uint(2902),uint(73),uint(21931),uint(381),uint(601),uint(12872),uint(22221),uint(4662),uint(403),uint(22573),uint(16031),uint(21341),uint(21121),uint(12102),uint(22903),uint(20923),uint(843),uint(1921),uint(2163),uint(2273),uint(10593),uint(2141),uint(3892),uint(12762),uint(21891),uint(20602),uint(31522),uint(3131),uint(3813),uint(3901),uint(2691),uint(4121),uint(24223),uint(4341),uint(12753),uint(63041),uint(2603),uint(82),uint(2581),uint(742),uint(764),uint(412),uint(3571),uint(20932),uint(11002),uint(10602),uint(31171),uint(2172),uint(22873),uint(30071),uint(1622),uint(21223),uint(31523),uint(25042),uint(12991),uint(4561),uint(2832),uint(11042),uint(11064),uint(91),uint(113),uint(22213),uint(22191),uint(21122),uint(25051),uint(32152),uint(31712),uint(421),uint(553),uint(20462),uint(21892),uint(1301),uint(1323),uint(20352),uint(22222),uint(11033),uint(11011),uint(30612),uint(1983),uint(2203),uint(12463),uint(2401),uint(12111),uint(12221),uint(1521),uint(63043),uint(21342),uint(20862),uint(11623),uint(21082),uint(2863),uint(4161),uint(11051),uint(11381),uint(12833),uint(20422),uint(452),uint(30062),uint(562),uint(672),uint(21522),uint(32143),uint(21192),uint(12173),uint(12151),uint(2212),uint(12472),uint(12142),uint(31461),uint(6031),uint(11922),uint(1992),uint(4843),uint(21201),uint(5041),uint(10611),uint(10743),uint(10061),uint(20871),uint(2872),uint(461),uint(30581),uint(30603),uint(10391),uint(20453),uint(593),uint(571),uint(12754),uint(21932),uint(21162),uint(20722),uint(20612),uint(12182),uint(32223),uint(2221),uint(30582),uint(10981),uint(1803),uint(2001),uint(1913),uint(1891),uint(2133),uint(20071),uint(3893),uint(3871),uint(20401),uint(20423),uint(4091),uint(10972),uint(602),uint(4663),uint(2903),uint(382),uint(33622),uint(21523),uint(11522),uint(21171),uint(21083),uint(844),uint(20731),uint(2692),uint(11012),uint(63051),uint(2582),uint(1922),uint(2142),uint(12222),uint(12112),uint(20933),uint(20911),uint(3572),uint(83),uint(61),uint(20581),uint(20603),uint(3132),uint(391),uint(20691),uint(20361),uint(611),uint(413),uint(22693),uint(1271),uint(23001),uint(33811),uint(743),uint(1623),uint(1711),uint(12873),uint(12961),uint(3902),uint(4122),uint(32161),uint(20062),uint(2833),uint(20392),uint(4342),uint(12763),uint(21901),uint(4562),uint(32821),uint(2151),uint(2173)})))|(.Peel:->contains($uint,[]uint{uint(3),uint(4),uint(1),uint(2)})&.Rotten:== uint(10511)))|(.Rotten:== uint(10868)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10036)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(4811)&.Peel:->contains($uint,[]uint{uint(10111),uint(10112)})))|(.Peel:->contains($uint,[]uint{uint(3017),uint(23221),uint(23551),uint(7241),uint(7246),uint(21211),uint(3551),uint(3221),uint(30922),uint(23372),uint(3226),uint(3556),uint(1211),uint(23012),uint(1216),uint(3372),uint(10922),uint(10927),uint(27241),uint(3377),uint(3012)})&.Rotten:== uint(33163)))|(.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})&.Rotten:== uint(10436)))|(.Rotten:== uint(11090)&.Peel:->contains($uint,[]uint{uint(82),uint(83),uint(84),uint(81)})))|(.Peel:->contains($uint,[]uint{uint(83),uint(81),uint(82)})&.Rotten:== uint(20180)))|(.Rotten:== uint(10058)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10422)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(4),uint(1)})))|(.Rotten:== uint(10222)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(82),uint(83),uint(81)})&.Rotten:== uint(10126)))|(.Rotten:== uint(10376)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Peel:->contains($uint,[]uint{uint(6),uint(2),uint(7),uint(3),uint(8),uint(4),uint(9),uint(5),uint(1)})&.Rotten:== uint(10288)))|(.Rotten:== uint(10742)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(5811)&.Peel:->contains($uint,[]uint{uint(10481),uint(50532),uint(10142),uint(10072),uint(10512),uint(10121),uint(10231),uint(10112),uint(10222),uint(10482),uint(10513),uint(10223),uint(10091),uint(50533),uint(10122),uint(10232),uint(10131),uint(10092),uint(10132),uint(10233),uint(10123),uint(50531),uint(10141),uint(10071),uint(10511),uint(10111),uint(10221)})))|(.Rotten:== uint(10347)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10411)))|(.Rotten:== uint(10717)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10219)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10060)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(40173),uint(40063),uint(40041),uint(40261),uint(40393),uint(40503),uint(41251),uint(41163),uint(40943),uint(40732),uint(40402),uint(40512),uint(40952),uint(40072),uint(40182),uint(40081),uint(40433),uint(40411),uint(40213),uint(40191),uint(40212),uint(40432),uint(10101),uint(40542),uint(40023),uint(40331),uint(40353),uint(40221),uint(40441),uint(40551),uint(41013),uint(41123),uint(40472),uint(41022),uint(40692),uint(40032),uint(41252),uint(40042),uint(40262),uint(40183),uint(40051),uint(40733),uint(40711),uint(40381),uint(40513),uint(41151),uint(40931),uint(41182),uint(40082),uint(40192),uint(40742),uint(40412),uint(40741),uint(40543),uint(41181),uint(40552),uint(10102),uint(40332),uint(40222),uint(40442),uint(40011),uint(40033),uint(40451),uint(40231),uint(40341),uint(41111),uint(41023),uint(41001),uint(40693),uint(40781),uint(41221),uint(40052),uint(41253),uint(40712),uint(40382),uint(41152),uint(40932),uint(40721),uint(40391),uint(40413),uint(40501),uint(41161),uint(41183),uint(41051),uint(40941),uint(40061),uint(40193),uint(40171),uint(40312),uint(40422),uint(40202),uint(40201),uint(40311),uint(40333),uint(40421),uint(40223),uint(40553),uint(40531),uint(10103),uint(40012),uint(41222),uint(40342),uint(40232),uint(40452),uint(41002),uint(41112),uint(40782),uint(40461),uint(40351),uint(41121),uint(41011),uint(40021),uint(40043),uint(41153),uint(41021),uint(40933),uint(40031),uint(40053),uint(40471),uint(40691),uint(40713),uint(40172),uint(40062),uint(40722),uint(40392),uint(40502),uint(41162),uint(41052),uint(40942),uint(40951),uint(40071),uint(40313),uint(40203),uint(40181),uint(40731),uint(40401),uint(40511),uint(40532),uint(41003),uint(40541),uint(40783),uint(41113),uint(40211),uint(40431),uint(40022),uint(40462),uint(40352),uint(41122),uint(41012)})&.Rotten:== uint(40111)))|(.Peel:->contains($uint,[]uint{uint(3952),uint(3842),uint(1),uint(7683),uint(4612),uint(11392),uint(4722),uint(9201),uint(7441),uint(661),uint(1233),uint(1321),uint(903),uint(881),uint(4084),uint(33822),uint(12813),uint(6152),uint(2443),uint(10732),uint(10534),uint(3851),uint(10292),uint(6042),uint(8541),uint(912),uint(3433),uint(5602),uint(8321),uint(8343),uint(8211),uint(1242),uint(14393),uint(6161),uint(14591),uint(8572),uint(12501),uint(11014),uint(4203),uint(10794),uint(11102),uint(11212),uint(4423),uint(4401),uint(10442),uint(4533),uint(4511),uint(4643),uint(4621),uint(4841),uint(7604),uint(4731),uint(2452),uint(10904),uint(4212),uint(10763),uint(10741),uint(11093),uint(8163),uint(4542),uint(3772),uint(10323),uint(4652),uint(10411),uint(10433),uint(3442),uint(7393),uint(7371),uint(613),uint(1273),uint(1251),uint(11643),uint(11111),uint(2813),uint(2681),uint(10803),uint(10781),uint(11353),uint(11331),uint(10913),uint(3913),uint(3781),uint(3803),uint(952),uint(622),uint(8581),uint(3253),uint(8383),uint(1282),uint(3262),uint(4441),uint(4463),uint(4573),uint(4551),uint(8172),uint(10451),uint(7424),uint(5211),uint(4472),uint(8621),uint(4582),uint(653),uint(631),uint(8071),uint(4692),uint(3812),uint(12132),uint(1181),uint(7521),uint(873),uint(10161),uint(1973),uint(7411),uint(1291),uint(1313),uint(10293),uint(3271),uint(7442),uint(2),uint(14433),uint(662),uint(3953),uint(3821),uint(1322),uint(3843),uint(882),uint(33831),uint(6043),uint(5603),uint(10742),uint(10764),uint(33832),uint(10412),uint(6153),uint(10324),uint(4591),uint(4481),uint(8542),uint(4723),uint(4613),uint(8322),uint(11644),uint(8212),uint(11094),uint(4732),uint(4622),uint(11261),uint(8573),uint(891),uint(11393),uint(4842),uint(8221),uint(671),uint(10733),uint(1243),uint(1221),uint(3852),uint(913),uint(7561),uint(2453),uint(7451),uint(33823),uint(12141),uint(9202),uint(4402),uint(4512),uint(3421),uint(3443),uint(7372),uint(3201),uint(4213),uint(11103),uint(4521),uint(11213),uint(4653),uint(4631),uint(4543),uint(6162),uint(4081),uint(3861),uint(3773),uint(14592),uint(1252),uint(6171),uint(12502),uint(8582),uint(2682),uint(10531),uint(10421),uint(10443),uint(953),uint(623),uint(8481),uint(8173),uint(1283),uint(3782),uint(1261),uint(7381),uint(10901),uint(2471),uint(11011),uint(7601),uint(4442),uint(10791),uint(4552),uint(10452),uint(3263),uint(7522),uint(2801),uint(4561),uint(4583),uint(10804),uint(10782),uint(4473),uint(4451),uint(632),uint(7412),uint(4671),uint(4693),uint(1182),uint(11112),uint(11332),uint(3791),uint(1292),uint(3813),uint(10162),uint(14421),uint(3822),uint(5221),uint(12142),uint(3),uint(11262),uint(11394),uint(3272),uint(663),uint(641),uint(8072),uint(12133),uint(861),uint(883),uint(8543),uint(8622),uint(8213),uint(8323),uint(1301),uint(1323),uint(7971),uint(4482),uint(4592),uint(12221),uint(7443),uint(7421),uint(3853),uint(3831),uint(4161),uint(4381),uint(4403),uint(4623),uint(4733),uint(4513),uint(7562),uint(4843),uint(672),uint(7452),uint(11645),uint(1222),uint(892),uint(12811),uint(12503),uint(33833),uint(9203),uint(17061),uint(6163),uint(10721),uint(10743),uint(3862),uint(10413),uint(10391),uint(901),uint(3422),uint(8222),uint(10765),uint(3202),uint(1253),uint(1231),uint(6172),uint(10321),uint(8583),uint(8341),uint(4082),uint(10783),uint(10761),uint(11113),uint(11091),uint(2683),uint(10453),uint(10431),uint(4522),uint(7373),uint(4632),uint(7681),uint(2441),uint(4201),uint(4421),uint(14593),uint(4553),uint(3783),uint(4531),uint(4443),uint(10532),uint(4641),uint(10444),uint(10422),uint(7602),uint(3431),uint(624),uint(7382),uint(1262),uint(2802),uint(10792),uint(10902),uint(2472),uint(11012),uint(8623),uint(12222),uint(3792),uint(611),uint(633),uint(8482),uint(14391),uint(1271),uint(1293),uint(1183),uint(11641),uint(8381),uint(3251),uint(3273),uint(4452),uint(2811),uint(4672),uint(8073),uint(4562),uint(8161),uint(7413),uint(7391),uint(7523),uint(4461),uint(4483),uint(4571),uint(4593),uint(642),uint(3911),uint(3823),uint(5231),uint(3801),uint(12143),uint(7972),uint(862),uint(7422),uint(1302),uint(10392),uint(7563),uint(7453),uint(4162),uint(10163),uint(14422),uint(4382),uint(11351),uint(10801),uint(673),uint(651),uint(3832),uint(1311),uint(16041),uint(3854),uint(1223),uint(871),uint(10911),uint(893),uint(1971),uint(10731),uint(33821),uint(10423),uint(10533),uint(10291),uint(11391),uint(3423),uint(3203),uint(8223),uint(4721),uint(4633),uint(4611),uint(902),uint(8342),uint(4083),uint(10766),uint(10722),uint(1232),uint(3951),uint(3841),uint(3863),uint(5601),uint(7682),uint(12812),uint(2442),uint(12504),uint(14431),uint(4523),uint(17062),uint(3432),uint(7603),uint(7383),uint(11642),uint(4202),uint(11092),uint(4422),uint(4642),uint(4532),uint(6151),uint(6041),uint(911),uint(1263),uint(1241),uint(6173),uint(2451),uint(2473),uint(10322),uint(3441),uint(8571),uint(8483),uint(2803),uint(10784),uint(10762),uint(10432),uint(634),uint(612),uint(8382),uint(8162),uint(12223),uint(3793),uint(1272),uint(3771),uint(7414),uint(7392),uint(10912),uint(4211),uint(4453),uint(10802),uint(4563),uint(4673),uint(4541),uint(4651),uint(14392),uint(10441),uint(7973),uint(3252),uint(10903),uint(4572),uint(2812),uint(10793),uint(4462),uint(7423),uint(643),uint(621),uint(951),uint(863),uint(11013),uint(11101),uint(11211),uint(3802),uint(3912),uint(1281),uint(1303),uint(10393),uint(14432),uint(10723),uint(3833),uint(3811),uint(12131),uint(17063),uint(3261),uint(8171),uint(652),uint(872),uint(11352),uint(1312),uint(4163),uint(4383),uint(14423),uint(4471),uint(1972),uint(4581),uint(4691)})&.Rotten:== uint(10164)))|(.Rotten:== uint(10369)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10035)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10113)&.Peel:->contains($uint,[]uint{uint(12542),uint(13532),uint(12652),uint(18231),uint(14082),uint(13972),uint(10373),uint(10351),uint(10461),uint(10483),uint(10263),uint(10043),uint(10153),uint(15151),uint(10813),uint(10791),uint(10232),uint(10342),uint(14403),uint(15041),uint(10782),uint(14711),uint(10452),uint(11552),uint(18152),uint(13963),uint(10492),uint(14553),uint(10382),uint(19951),uint(14333),uint(10272),uint(15081),uint(10822),uint(11812),uint(13233),uint(12032),uint(11702),uint(14223),uint(11592),uint(14113),uint(14091),uint(11482),uint(18112),uint(11803),uint(11693),uint(11561),uint(12023),uint(11583),uint(11451),uint(12551),uint(17593),uint(17571),uint(14742),uint(12041),uint(12063),uint(11931),uint(11843),uint(15552),uint(11711),uint(11733),uint(11623),uint(19921),uint(11513),uint(11491),uint(14452),uint(12833),uint(12723),uint(10202),uint(12912),uint(12692),uint(12582),uint(14122),uint(10413),uint(10523),uint(10303),uint(11051),uint(10193),uint(10391),uint(10171),uint(10281),uint(19952),uint(10743),uint(18702),uint(10321),uint(12842),uint(12732),uint(10211),uint(10233),uint(10783),uint(10761),uint(10343),uint(10453),uint(10431),uint(19912),uint(10752),uint(14791),uint(10532),uint(11082),uint(14461),uint(10422),uint(10312),uint(15253),uint(15011),uint(13603),uint(17334),uint(13713),uint(14131),uint(11522),uint(19173),uint(11742),uint(11632),uint(10792),uint(14743),uint(11452),uint(10462),uint(15271),uint(12552),uint(17572),uint(14083),uint(13973),uint(11562),uint(65534),uint(18153),uint(11553),uint(11641),uint(11531),uint(11751),uint(13533),uint(18681),uint(14712),uint(10352),uint(12851),uint(12521),uint(12543),uint(12583),uint(12671),uint(18113),uint(11813),uint(12033),uint(11703),uint(13661),uint(11901),uint(10392),uint(10172),uint(12913),uint(12693),uint(10282),uint(12781),uint(17581),uint(14092),uint(10471),uint(10273),uint(10361),uint(10383),uint(10823),uint(10801),uint(11483),uint(18232),uint(11593),uint(10181),uint(14132),uint(10511),uint(10533),uint(14792),uint(10423),uint(10401),uint(10203),uint(14462),uint(10291),uint(10313),uint(11523),uint(11501),uint(11743),uint(19953),uint(11721),uint(11633),uint(10753),uint(11083),uint(15553),uint(11492),uint(11052),uint(14123),uint(11932),uint(12042),uint(14761),uint(11712),uint(14453),uint(11532),uint(11642),uint(11752),uint(14251),uint(12852),uint(14361),uint(14471),uint(12522),uint(14713),uint(12843),uint(12821),uint(12711),uint(12733),uint(19922),uint(11941),uint(11831),uint(13591),uint(12051),uint(10212),uint(10762),uint(10432),uint(10322),uint(12553),uint(12531),uint(14093),uint(14071),uint(13961),uint(10362),uint(10472),uint(18682),uint(10802),uint(10221),uint(10331),uint(10353),uint(10111),uint(17573),uint(10793),uint(10771),uint(17331),uint(10441),uint(10463),uint(11651),uint(11563),uint(11541),uint(11761),uint(10991),uint(11453),uint(10481),uint(14762),uint(10371),uint(10393),uint(10151),uint(10173),uint(10283),uint(10261),uint(11053),uint(17591),uint(10811),uint(12021),uint(11801),uint(12043),uint(11691),uint(11713),uint(13662),uint(11933),uint(11581),uint(18233),uint(11493),uint(11594),uint(11902),uint(12782),uint(12672),uint(14401),uint(10041),uint(17582),uint(15061),uint(12052),uint(11942),uint(11832),uint(11722),uint(11502),uint(14793),uint(14551),uint(12712),uint(12822),uint(10213),uint(10191),uint(14331),uint(19171),uint(14221),uint(14111),uint(14133),uint(10512),uint(10292),uint(10182),uint(10402),uint(13231),uint(13711),uint(13601),uint(17332),uint(12831),uint(10332),uint(12853),uint(10112),uint(10222),uint(12721),uint(12391),uint(19021),uint(12523),uint(10992),uint(10772),uint(10442),uint(19923),uint(10763),uint(10741),uint(10521),uint(14472),uint(10433),uint(10411),uint(10301),uint(10323),uint(13592),uint(12061),uint(11511),uint(11533),uint(14252),uint(14362),uint(11841),uint(11731),uint(11753),uint(11621),uint(11643),uint(10781),uint(10803),uint(10473),uint(10451),uint(12541),uint(13962),uint(14402),uint(11551),uint(11903),uint(11652),uint(11542),uint(16021),uint(11762),uint(19022),uint(10363),uint(10341),uint(10231),uint(15251),uint(12532),uint(13232),uint(11802),uint(12022),uint(11692),uint(15181),uint(15071),uint(14763),uint(14741),uint(10513),uint(10381),uint(10403),uint(10491),uint(10183),uint(10293),uint(10271),uint(15291),uint(13663),uint(17592),uint(14081),uint(13971),uint(10482),uint(10372),uint(10042),uint(12783),uint(10262),uint(12651),uint(10152),uint(10812),uint(18111),uint(11582),uint(18683),uint(13531),uint(14253),uint(14363),uint(14121),uint(10522),uint(14451),uint(10412),uint(12911),uint(14473),uint(10192),uint(12823),uint(10302),uint(11512),uint(19172),uint(11732),uint(10742),uint(11622),uint(13593),uint(11591),uint(11701),uint(10821),uint(11481),uint(11503),uint(12691),uint(12713),uint(12581),uint(14222),uint(14112),uint(12031),uint(12053),uint(11833),uint(11811),uint(11723),uint(14332),uint(14552),uint(11521),uint(11543),uint(15252),uint(11653),uint(11741),uint(11631),uint(11763),uint(10993),uint(11081),uint(12841),uint(12731),uint(18151),uint(12533),uint(18701),uint(17333),uint(12832),uint(12722),uint(19911),uint(12392),uint(11842),uint(13602),uint(13712),uint(12062),uint(10113),uint(15551),uint(10223),uint(10201),uint(15001),uint(10773),uint(10751),uint(10443),uint(10531),uint(10311),uint(10333),uint(10421)})))|(.Rotten:== uint(10250)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10283)))|(.Rotten:== uint(10082)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10135)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(10021),uint(41233),uint(18002),uint(41822),uint(10092),uint(14061),uint(10022),uint(18003),uint(10093),uint(11061),uint(10023),uint(41231),uint(10331),uint(14062),uint(11031),uint(41262),uint(41261),uint(11062),uint(14063),uint(41232),uint(41263),uint(18001),uint(11032),uint(11063),uint(41821),uint(10091)})&.Rotten:== uint(40119)))|(.Rotten:== uint(20116)&.Peel:->contains($uint,[]uint{uint(20951)})))|(.Peel:->contains($uint,[]uint{uint(7),uint(3),uint(8),uint(4),uint(9),uint(5),uint(1),uint(6),uint(2)})&.Rotten:== uint(10525)))|(.Rotten:== uint(50111)&.Peel:->contains($uint,[]uint{uint(51391),uint(51413),uint(50841),uint(10011),uint(10033),uint(50753),uint(51193),uint(51061),uint(50951),uint(50973),uint(50093),uint(50071),uint(50203),uint(50291),uint(50423),uint(50643),uint(50621),uint(50533),uint(8713),uint(51382),uint(50722),uint(50832),uint(51052),uint(50942),uint(51312),uint(51422),uint(50982),uint(50872),uint(51202),uint(51092),uint(50102),uint(50542),uint(50652),uint(50212),uint(51012),uint(51342),uint(50572),uint(50792),uint(50902),uint(50682),uint(50132),uint(50242),uint(10711),uint(50352),uint(50022),uint(51421),uint(50282),uint(50414),uint(10333),uint(50062),uint(53093),uint(51571),uint(51351),uint(51153),uint(51131),uint(51021),uint(51043),uint(51241),uint(8331),uint(51263),uint(50581),uint(50911),uint(60753),uint(50141),uint(50163),uint(50251),uint(50273),uint(50361),uint(50053),uint(50031),uint(50103),uint(50081),uint(51392),uint(50622),uint(50842),uint(10012),uint(51062),uint(50952),uint(50292),uint(50072),uint(51212),uint(51102),uint(50332),uint(50442),uint(50662),uint(50112),uint(50222),uint(10712),uint(51313),uint(51423),uint(51401),uint(50851),uint(51203),uint(51181),uint(51093),uint(50411),uint(50521),uint(50653),uint(50582),uint(50032),uint(50912),uint(50142),uint(50252),uint(8332),uint(50362),uint(51431),uint(51101),uint(51013),uint(50903),uint(51343),uint(51211),uint(50353),uint(50331),uint(50441),uint(50573),uint(50661),uint(50683),uint(50111),uint(50133),uint(50221),uint(51383),uint(51361),uint(51053),uint(50591),uint(50921),uint(51031),uint(50833),uint(50063),uint(50041),uint(50151),uint(50283),uint(50261),uint(50371),uint(10013),uint(10334),uint(51572),uint(51242),uint(51352),uint(51022),uint(51402),uint(50852),uint(51182),uint(50082),uint(50522),uint(50412),uint(8711),uint(51393),uint(51151),uint(51261),uint(50623),uint(51063),uint(51041),uint(50843),uint(50953),uint(50931),uint(51411),uint(51433),uint(50971),uint(51213),uint(51191),uint(51103),uint(51081),uint(50223),uint(50333),uint(50091),uint(50443),uint(50421),uint(50751),uint(50531),uint(50663),uint(50641),uint(50113),uint(50201),uint(10713),uint(10031),uint(60751),uint(53091),uint(51573),uint(51243),uint(51331),uint(50913),uint(51023),uint(51221),uint(50583),uint(50561),uint(50781),uint(50891),uint(50121),uint(50143),uint(50231),uint(50253),uint(50363),uint(50341),uint(50011),uint(50033),uint(8333),uint(51432),uint(50161),uint(50271),uint(50293),uint(50073),uint(50051),uint(51362),uint(51032),uint(50592),uint(50922),uint(50152),uint(50262),uint(50372),uint(50042),uint(8712),uint(50092),uint(10032),uint(51183),uint(51403),uint(51381),uint(50853),uint(50831),uint(50721),uint(51051),uint(50941),uint(50083),uint(50281),uint(50413),uint(50523),uint(50061),uint(10331),uint(50981),uint(50871),uint(50893),uint(51333),uint(51311),uint(51223),uint(51201),uint(51091),uint(50343),uint(50651),uint(50541),uint(50563),uint(50783),uint(50123),uint(50211),uint(50101),uint(50013),uint(8334),uint(51412),uint(50972),uint(50752),uint(51192),uint(51082),uint(50202),uint(50422),uint(50532),uint(50642),uint(50681),uint(50593),uint(50571),uint(50043),uint(50021),uint(50901),uint(50791),uint(50131),uint(50241),uint(50263),uint(50351),uint(60752),uint(50892),uint(51332),uint(51222),uint(50342),uint(50562),uint(50782),uint(50012),uint(50122),uint(50232),uint(51152),uint(51262),uint(10332),uint(51042),uint(50932),uint(50052),uint(50162),uint(50272),uint(53092),uint(51341),uint(51033),uint(51363),uint(51011),uint(51231)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10276)))|(.Rotten:== uint(10057)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10221)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(10068),uint(10046),uint(10222),uint(10332),uint(34192),uint(10266),uint(30043),uint(30021),uint(31121),uint(31011),uint(31341),uint(9892),uint(11498),uint(11542),uint(41522),uint(28028),uint(28072),uint(11278),uint(11212),uint(8031),uint(10552),uint(10948),uint(8053),uint(8339),uint(30351),uint(30263),uint(11291),uint(11203),uint(789),uint(11027),uint(28063),uint(28041),uint(11181),uint(8066),uint(8022),uint(10697),uint(30342),uint(30716),uint(30782),uint(28943),uint(9188),uint(31002),uint(9012),uint(14208),uint(8946),uint(9122),uint(11511),uint(11533),uint(31112),uint(9056),uint(11529),uint(29022),uint(28692),uint(11507),uint(11287),uint(11309),uint(8062),uint(8216),uint(10781),uint(11023),uint(11001),uint(10693),uint(11111),uint(8942),uint(31543),uint(9052),uint(9008),uint(31301),uint(29902),uint(31521),uint(8788),uint(32203),uint(9118),uint(8713),uint(30223),uint(1876),uint(30333),uint(30553),uint(29893),uint(8691),uint(31191),uint(31213),uint(29123),uint(9021),uint(10077),uint(10297),uint(10341),uint(28076),uint(10363),uint(28032),uint(12202),uint(9901),uint(10033),uint(9017),uint(9127),uint(28948),uint(30334),uint(28552),uint(10337),uint(10293),uint(10711),uint(10557),uint(9897),uint(10073),uint(10051),uint(10227),uint(10262),uint(10218),uint(14191),uint(31117),uint(31051),uint(30941),uint(34342),uint(31491),uint(31513),uint(31183),uint(31271),uint(10042),uint(31293),uint(28068),uint(11494),uint(11516),uint(11538),uint(11296),uint(28332),uint(8071),uint(8027),uint(30061),uint(11208),uint(11186),uint(10346),uint(10368),uint(10786),uint(28213),uint(10698),uint(40787),uint(9906),uint(10038),uint(14341),uint(1872),uint(30712),uint(8023),uint(29027),uint(8067),uint(34201),uint(11512),uint(29181),uint(8551),uint(11182),uint(8331),uint(11292),uint(11006),uint(11028),uint(11116),uint(8058),uint(8036),uint(11503),uint(11547),uint(12207),uint(40048),uint(11283),uint(8212),uint(8696),uint(11217),uint(8718),uint(9026),uint(30052),uint(21873),uint(12203),uint(8076),uint(8032),uint(28711),uint(11521),uint(11543),uint(8692),uint(11301),uint(11499),uint(28073),uint(28051),uint(11213),uint(11191),uint(31122),uint(31012),uint(30946),uint(31342),uint(9022),uint(9902),uint(14196),uint(34193),uint(9123),uint(30066),uint(8947),uint(9057),uint(9893),uint(9013),uint(30352),uint(10553),uint(10047),uint(30022),uint(10267),uint(10223),uint(10333),uint(31003),uint(31201),uint(30783),uint(10021),uint(31113),uint(10043),uint(14192),uint(29903),uint(31531),uint(11011),uint(11121),uint(30211),uint(1877),uint(10351),uint(10263),uint(28042),uint(30717),uint(8028),uint(10782),uint(10716),uint(28341),uint(11002),uint(10078),uint(10056),uint(10342),uint(10298),uint(28077),uint(28033),uint(8063),uint(8041),uint(8217),uint(31192),uint(11508),uint(28781),uint(29023),uint(31522),uint(29001),uint(29111),uint(8943),uint(28693),uint(11112),uint(31302),uint(11288),uint(31523),uint(31501),uint(11218),uint(11196),uint(31193),uint(31281),uint(31303),uint(10228),uint(10338),uint(10712),uint(12208),uint(8037),uint(10558),uint(28782),uint(30291),uint(29002),uint(8213),uint(28716),uint(29024),uint(29112),uint(9027),uint(28078),uint(11548),uint(9181),uint(14201),uint(8697),uint(28342),uint(11306),uint(11526),uint(8072),uint(28553),uint(1873),uint(8556),uint(8336),uint(9018),uint(11517),uint(28333),uint(11297),uint(11187),uint(30071),uint(40788),uint(11341),uint(31492),uint(31118),uint(31514),uint(9898),uint(10052),uint(9128),uint(31272),uint(14346),uint(34343),uint(30062),uint(21874),uint(8332),uint(8552),uint(11513),uint(31052),uint(30942),uint(29028),uint(40049),uint(29116),uint(29182),uint(8948),uint(11491),uint(10048),uint(10026),uint(10356),uint(10334),uint(10268),uint(9907),uint(31021),uint(10061),uint(14342),uint(30053),uint(30031),uint(34202),uint(11117),uint(11183),uint(11293),uint(11271),uint(10941),uint(11007),uint(11051),uint(30361),uint(10347),uint(30691),uint(8068),uint(10787),uint(8046),uint(30713),uint(10057),uint(10211),uint(34203),uint(30032),uint(30692),uint(31022),uint(9903),uint(14206),uint(11531),uint(28061),uint(11113),uint(11201),uint(10717),uint(11003),uint(8042),uint(30362),uint(8218),uint(10783),uint(11302),uint(11346),uint(11016),uint(28052),uint(11126),uint(11192),uint(31541),uint(8077),uint(8033),uint(32201),uint(8341),uint(30331),uint(1878),uint(8693),uint(30353),uint(8781),uint(30551),uint(31013),uint(31211),uint(30947),uint(31343),uint(28712),uint(9001),uint(14197),uint(11522),uint(9111),uint(9023),uint(31123),uint(29011),uint(29121),uint(11496),uint(11518),uint(11188),uint(11342),uint(11276),uint(11298),uint(8073),uint(10946),uint(8051),uint(11012),uint(11056),uint(11122),uint(30067),uint(8337),uint(30221),uint(14193),uint(14347),uint(8557),uint(30023),uint(29891),uint(8711),uint(31532),uint(30212),uint(30718),uint(31202),uint(9186),uint(31026),uint(10066),uint(10352),uint(28043),uint(28021),uint(10022),uint(9006),uint(9028),uint(9116),uint(29113),uint(8698),uint(8786),uint(28783),uint(28717),uint(30213),uint(29003),uint(21871),uint(9182),uint(10348),uint(1874),uint(9908),uint(10062),uint(10216),uint(10361),uint(14202),uint(10339),uint(31502),uint(31524),uint(31282),uint(10053),uint(31304),uint(10031),uint(28211),uint(11527),uint(11307),uint(40789),uint(8038),uint(30072),uint(11021),uint(8346),uint(11197),uint(10713),uint(10691),uint(30292),uint(28026),uint(10357),uint(14198),uint(28334),uint(10071),uint(10027),uint(10291),uint(8078),uint(8056),uint(30943),uint(11501),uint(11523),uint(11193),uint(11281),uint(8716),uint(31493),uint(8342),uint(11303),uint(8782),uint(11347),uint(11017),uint(11127),uint(31273),uint(29183),uint(8047),uint(11492),uint(11514),uint(28941),uint(11536),uint(29029),uint(29051),uint(29117),uint(11118),uint(30063),uint(11272),uint(8333),uint(11206),uint(10788),uint(30261),uint(10942),uint(8553),uint(11008),uint(11052),uint(30041),uint(14343),uint(8043),uint(8021),uint(11532),uint(28062),uint(11026),uint(11202),uint(31111),uint(31023),uint(31001),uint(9011),uint(9187),uint(9891),uint(14207),uint(9121),uint(40047),uint(29118),uint(28942),uint(29052),uint(9112),uint(9024),uint(9002),uint(1879),uint(29021),uint(30341),uint(30363),uint(30781),uint(30693),uint(10696),uint(32202),uint(10718),uint(10036),uint(10058),uint(30033),uint(10366),uint(10212),uint(29901),uint(30948),uint(31212),uint(10032),uint(10076),uint(14203),uint(788),uint(29892),uint(31542),uint(12201),uint(11022),uint(10692),uint(28691),uint(28713),uint(30068),uint(30222),uint(30332),uint(10362),uint(10296),uint(30552),uint(28053),uint(28031),uint(10947),uint(10551),uint(11057),uint(11013),uint(10067),uint(10023),uint(14348),uint(10221),uint(10331),uint(28022),uint(10353),uint(28066),uint(8052),uint(31203),uint(31181),uint(31027),uint(8338),uint(11497),uint(11519),uint(28946),uint(11541),uint(31511),uint(31533),uint(29012),uint(8558),uint(29122),uint(11123),uint(11211),uint(31291),uint(11343),uint(8712),uint(11277),uint(31512),uint(11207),uint(31182),uint(31292),uint(10943),uint(28023),uint(10261),uint(10217),uint(10349),uint(8026),uint(8048),uint(34341),uint(8334),uint(21872),uint(28947),uint(29013),uint(28067),uint(9016),uint(9126),uint(31116),uint(28551),uint(11273),uint(11493),uint(11537),uint(28331),uint(31028),uint(28718),uint(8061),uint(8347),uint(8941),uint(9117),uint(28212),uint(11506),uint(9007),uint(11528),uint(9051),uint(9029),uint(11308),uint(11286),uint(11198),uint(8787),uint(31503),uint(9183),uint(10063),uint(10041),uint(31283),uint(29026),uint(30073),uint(8717),uint(8783),uint(30293),uint(30711),uint(9113),uint(11524),uint(11546),uint(9003),uint(11502),uint(10037),uint(10213),uint(10367),uint(1871),uint(12206),uint(30051),uint(9896),uint(31494),uint(10028),uint(10072),uint(10292),uint(10226),uint(30042),uint(34191),uint(11128),uint(11216),uint(11348),uint(11304),uint(11282),uint(30262),uint(11018),uint(10336),uint(10556),uint(28027),uint(10358),uint(28071),uint(8057),uint(8211)})&.Rotten:== uint(43162)))|(.Rotten:== uint(13112)&.Peel:->contains($uint,[]uint{uint(14148),uint(10197),uint(14038),uint(14258),uint(10219),uint(13928),uint(10527),uint(10417),uint(18649),uint(10439),uint(14478),uint(12938),uint(12828),uint(10307),uint(11539),uint(11517),uint(11759),uint(19177),uint(13158),uint(11737),uint(11649),uint(13598),uint(13378),uint(13488),uint(11099),uint(11077),uint(13708),uint(11209),uint(11728),uint(11508),uint(11068),uint(15327),uint(14007),uint(14227),uint(12608),uint(12278),uint(12058),uint(11838),uint(17188),uint(17298),uint(14337),uint(14557),uint(11948),uint(11548),uint(11658),uint(15257),uint(11768),uint(17518),uint(11108),uint(11218),uint(14289),uint(12978),uint(14069),uint(14509),uint(51498),uint(12318),uint(14949),uint(12208),uint(12098),uint(17118),uint(12837),uint(12727),uint(12749),uint(13299),uint(13387),uint(12199),uint(13607),uint(13519),uint(12309),uint(11847),uint(13937),uint(12089),uint(10228),uint(10118),uint(10338),uint(10448),uint(13229),uint(17048),uint(12899),uint(12789),uint(17818),uint(13537),uint(12327),uint(12349),uint(12547),uint(14087),uint(12129),uint(12107),uint(13977),uint(13999),uint(12217),uint(10488),uint(10378),uint(10048),uint(10818),uint(11038),uint(10158),uint(10598),uint(13009),uint(13097),uint(10347),uint(10369),uint(14408),uint(10237),uint(10127),uint(10567),uint(10589),uint(10457),uint(17237),uint(17259),uint(10479),uint(13000),uint(13088),uint(17127),uint(11887),uint(17519),uint(11909),uint(11557),uint(17039),uint(13418),uint(11007),uint(11117),uint(51497),uint(13968),uint(10607),uint(10519),uint(14558),uint(10387),uint(10409),uint(10827),uint(10189),uint(10299),uint(10277),uint(10123),uint(10079),uint(14338),uint(11069),uint(15328),uint(13238),uint(12059),uint(11839),uint(17299),uint(12037),uint(12147),uint(11817),uint(11707),uint(11729),uint(17189),uint(3519),uint(11157),uint(14228),uint(11597),uint(14008),uint(11509),uint(18117),uint(11808),uint(12028),uint(11698),uint(15297),uint(18997),uint(14549),uint(12908),uint(10057),uint(14989),uint(12248),uint(14857),uint(12138),uint(14967),uint(12358),uint(14769),uint(11848),uint(15557),uint(11738),uint(8997),uint(2978),uint(11518),uint(13388),uint(14457),uint(14479),uint(10119),uint(12838),uint(10097),uint(10207),uint(12728),uint(10229),uint(15117),uint(13379),uint(13489),uint(13709),uint(12939),uint(12917),uint(12829),uint(13599),uint(14039),uint(12697),uint(13907),uint(14259),uint(13929),uint(12587),uint(12279),uint(12257),uint(12367),uint(10528),uint(10308),uint(11078),uint(10418),uint(10198),uint(11210),uint(18487),uint(13969),uint(13947),uint(17238),uint(12979),uint(10238),uint(10348),uint(14409),uint(17128),uint(10128),uint(14057),uint(12627),uint(11008),uint(11118),uint(10568),uint(10458),uint(13089),uint(13419),uint(13397),uint(10449),uint(10427),uint(10537),uint(11109),uint(10317),uint(10339),uint(11219),uint(15258),uint(51499),uint(13608),uint(12209),uint(12319),uint(12297),uint(17097),uint(17119),uint(12099),uint(11527),uint(11549),uint(13938),uint(19178),uint(11747),uint(11769),uint(11637),uint(11659),uint(11127),uint(11017),uint(14968),uint(14858),uint(10599),uint(10467),uint(10577),uint(10489),uint(10797),uint(10819),uint(12557),uint(12359),uint(12139),uint(14088),uint(12117),uint(12337),uint(13978),uint(17247),uint(12227),uint(11699),uint(11567),uint(17049),uint(12029),uint(11809),uint(12328),uint(12108),uint(12218),uint(13098),uint(18488),uint(11888),uint(11558),uint(13538),uint(10379),uint(10357),uint(10247),uint(10027),uint(10049),uint(12548),uint(15157),uint(12588),uint(12698),uint(12258),uint(18118),uint(12368),uint(11818),uint(11708),uint(12038),uint(12148),uint(15329),uint(10067),uint(14977),uint(18998),uint(10529),uint(10419),uint(10397),uint(10287),uint(12918),uint(10309),uint(10177),uint(10199),uint(13877),uint(2979),uint(14009),uint(41718),uint(13987),uint(14559),uint(12997),uint(12887),uint(12909),uint(10388),uint(14229),uint(14339),uint(10278),uint(14317),uint(10058),uint(11158),uint(17819),uint(11598),uint(13107),uint(10608),uint(13217),uint(13239),uint(10828),uint(13547),uint(10208),uint(10098),uint(13939),uint(10538),uint(10428),uint(14467),uint(10318),uint(12839),uint(17098),uint(11528),uint(13037),uint(11748),uint(11638),uint(13609),uint(13389),uint(13477),uint(15558),uint(11717),uint(11519),uint(11057),uint(18119),uint(11079),uint(12707),uint(12729),uint(12597),uint(13908),uint(18647),uint(8998),uint(12047),uint(11849),uint(12267),uint(12157),uint(17177),uint(11739),uint(17067),uint(14458),uint(11937),uint(11559),uint(11537),uint(11647),uint(11889),uint(11757),uint(11009),uint(11097),uint(11207),uint(17947),uint(12967),uint(18057),uint(14058),uint(12747),uint(12307),uint(12329),uint(12197),uint(12219),uint(17239),uint(12109),uint(12087),uint(17129),uint(19179),uint(12628),uint(13398),uint(12298),uint(13948),uint(10217),uint(10129),uint(10239),uint(15259),uint(10459),uint(10569),uint(10349),uint(10437),uint(17257),uint(13108),uint(12998),uint(13218),uint(17037),uint(12888),uint(13548),uint(13878),uint(12338),uint(12558),uint(12118),uint(12228),uint(13988),uint(10477),uint(10389),uint(18489),uint(10279),uint(10367),uint(10059),uint(10829),uint(15167),uint(10609),uint(10587),uint(10358),uint(14507),uint(10248),uint(14089),uint(10798),uint(10028),uint(14287),uint(14969),uint(14947),uint(14859),uint(10578),uint(10468),uint(17248),uint(13099),uint(11590),uint(11568),uint(13297),uint(13517),uint(11018),uint(18058),uint(17948),uint(13539),uint(11128),uint(14067),uint(13979),uint(14767),uint(14547),uint(10398),uint(10178),uint(10288),uint(11058),uint(14459),uint(14987),uint(13227),uint(12048),uint(17178),uint(11718),uint(12158),uint(13557),uint(17068),uint(11938),uint(13997),uint(13909),uint(11819),uint(11907),uint(12039),uint(11709),uint(11599),uint(11159),uint(13007),uint(12897),uint(12919),uint(12699),uint(14318),uint(12787),uint(12589),uint(10068),uint(14978),uint(12149),uint(12127),uint(12369),uint(12347),uint(12057),uint(12277),uint(12299),uint(11837),uint(11947),uint(3517),uint(11507),uint(11749),uint(13157),uint(11727),uint(2967),uint(11529),uint(13377),uint(11639),uint(14468),uint(12937),uint(12827),uint(10218),uint(12607),uint(18648),uint(17297),uint(13478),uint(17099),uint(17187),uint(12708),uint(10121),uint(10077),uint(12598),uint(10099),uint(12268),uint(10517),uint(10539),uint(10319),uint(11067),uint(10429),uint(10407),uint(10187),uint(10209),uint(10297),uint(15427),uint(15559),uint(13038),uint(13518),uint(17249),uint(12968),uint(10249),uint(17117),uint(10337),uint(10359),uint(10117),uint(14508),uint(14068),uint(12748),uint(10227),uint(14288),uint(10029),uint(11019),uint(11107),uint(10579),uint(11217),uint(10469),uint(10447),uint(13298),uint(10799),uint(17517),uint(10438),uint(14477),uint(11098),uint(11208),uint(13487),uint(13597),uint(12198),uint(12308),uint(13707),uint(12088),uint(11538),uint(14257),uint(40260),uint(14037),uint(14059),uint(13949),uint(13927),uint(11758),uint(14147),uint(11648),uint(14979),uint(10588),uint(10478),uint(12348),uint(12128),uint(13989),uint(13967),uint(17258),uint(13879),uint(14407),uint(11908),uint(17038),uint(17817),uint(14319),uint(12317),uint(17949),uint(12339),uint(18059),uint(12097),uint(12207),uint(12119),uint(12229),uint(11657),uint(13109),uint(13087),uint(11569),uint(11547),uint(13417),uint(13549),uint(11767),uint(14948),uint(10368),uint(12999),uint(12977),uint(12889),uint(12559),uint(12599),uint(12247),uint(13237),uint(12357),uint(11939),uint(11807),uint(12027),uint(11719),uint(13479),uint(12049),uint(12159),uint(12137),uint(11697),uint(10122),uint(15428),uint(10078),uint(14988),uint(14768),uint(10408),uint(10518),uint(10298),uint(10188),uint(12907),uint(12709),uint(2968),uint(13998),uint(14548),uint(10487),uint(13008),uint(10399),uint(17179),uint(10377),uint(12898),uint(10157),uint(10047),uint(10069),uint(17069),uint(12788),uint(10289),uint(17047),uint(10179),uint(10597),uint(13228),uint(10817),uint(11059),uint(13558),uint(11037)})))|(.Peel:->contains($uint,[]uint{uint(21468),uint(20579),uint(23628),uint(21807),uint(21279),uint(20567),uint(21469),uint(23629),uint(21808),uint(20577),uint(21809),uint(20568),uint(21277),uint(20578),uint(23627),uint(20569),uint(21467),uint(21278)})&.Rotten:== uint(23111)))|(.Rotten:== uint(10375)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Peel:->contains($uint,[]uint{uint(14163),uint(13503),uint(4721),uint(24661),uint(12293),uint(24001),uint(32897),uint(32281),uint(2781),uint(23301),uint(3397),uint(12896),uint(12808),uint(22782),uint(4717),uint(13508),uint(4726),uint(32801),uint(12298),uint(12892),uint(14181),uint(23302),uint(3393),uint(2786),uint(32286),uint(34151),uint(14221),uint(4713),uint(32893),uint(4722),uint(34182),uint(14168),uint(24662),uint(12281),uint(24002),uint(12897),uint(3301),uint(14186),uint(33501),uint(3398),uint(32291),uint(2782),uint(14182),uint(22783),uint(4718),uint(4661),uint(4727),uint(32898),uint(32282),uint(14151),uint(4001),uint(3306),uint(32283),uint(23391),uint(23303),uint(12286),uint(12893),uint(32802),uint(2787),uint(34152),uint(24711),uint(12801),uint(4723),uint(32287),uint(34183),uint(34161),uint(14156),uint(14222),uint(3302),uint(4006),uint(2783),uint(14152),uint(12898),uint(24663),uint(4666),uint(12282),uint(14187),uint(33502),uint(12806),uint(4002),uint(32292),uint(14183),uint(14161),uint(24003),uint(13501),uint(3307),uint(4662),uint(4728),uint(12291),uint(24712),uint(12287),uint(34153),uint(2788),uint(32803),uint(32891),uint(34162),uint(3391),uint(14188),uint(34184),uint(14166),uint(3303),uint(13506),uint(23392),uint(12296),uint(12802),uint(4007),uint(32288),uint(4667),uint(4711),uint(14223),uint(14157),uint(12292),uint(34181),uint(22781),uint(14153),uint(12283),uint(32896),uint(12807),uint(4663),uint(4003),uint(33503),uint(4716),uint(32293),uint(13502),uint(14184),uint(14162),uint(3396),uint(3308),uint(12297),uint(14158),uint(34163),uint(12288),uint(4668),uint(4712),uint(3392),uint(32892),uint(4008),uint(14189),uint(14167),uint(24713),uint(12803),uint(12891),uint(23393),uint(13507)})&.Rotten:== uint(63112)))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10269)))|(.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})&.Rotten:== uint(10326)))|(.Rotten:== uint(43115)&.Peel:->contains($uint,[]uint{uint(40107),uint(40019),uint(40459),uint(40358),uint(40468),uint(40357),uint(40467),uint(41259),uint(41158),uint(40938),uint(40388),uint(40177),uint(40108),uint(40227),uint(40359),uint(41159),uint(40939),uint(40178),uint(30081),uint(40957),uint(40737),uint(30082),uint(40087),uint(40109),uint(40228),uint(40017),uint(40457),uint(41257),uint(40179),uint(40958),uint(40738),uint(40229),uint(40458),uint(40018),uint(41258),uint(41157),uint(40387),uint(40739),uint(40937),uint(40088)})))|(.Rotten:== uint(20114)&.Peel:->contains($uint,[]uint{uint(20601),uint(20843),uint(20821),uint(20403),uint(20931),uint(20073),uint(20381),uint(23452),uint(1792),uint(23892),uint(23571),uint(23131),uint(3882),uint(23901),uint(2562),uint(22163),uint(22141),uint(22273),uint(20082),uint(22691),uint(22603),uint(22581),uint(20412),uint(1801),uint(2131),uint(1273),uint(23003),uint(21991),uint(20702),uint(20372),uint(22211),uint(20592),uint(22563),uint(22871),uint(21912),uint(22132),uint(22572),uint(22902),uint(20922),uint(21802),uint(81),uint(22401),uint(22203),uint(21222),uint(433),uint(1313),uint(22863),uint(20562),uint(20452),uint(26031),uint(22872),uint(25041),uint(21992),uint(22212),uint(22172),uint(21622),uint(22942),uint(1322),uint(22832),uint(11921),uint(20861),uint(21081),uint(20091),uint(20113),uint(21983),uint(20553),uint(20421),uint(23382),uint(21521),uint(21323),uint(21301),uint(21191),uint(22692),uint(22582),uint(2563),uint(1793),uint(23132),uint(20083),uint(20061),uint(20391),uint(20413),uint(22142),uint(21271),uint(21931),uint(21161),uint(20721),uint(22151),uint(22173),uint(20611),uint(23902),uint(3883),uint(23572),uint(1802),uint(2132),uint(21623),uint(21121),uint(20923),uint(21803),uint(21891),uint(20461),uint(22001),uint(20703),uint(20373),uint(20351),uint(22221),uint(22133),uint(20593),uint(20571),uint(381),uint(21341),uint(23893),uint(23871),uint(2581),uint(22573),uint(20932),uint(22903),uint(82),uint(3571),uint(20602),uint(20382),uint(21311),uint(21223),uint(21201),uint(22213),uint(22191),uint(25042),uint(20871),uint(20352),uint(20462),uint(91),uint(20572),uint(1323),uint(22873),uint(21342),uint(21122),uint(20092),uint(23911),uint(20422),uint(22833),uint(21522),uint(21192),uint(21302),uint(21082),uint(20862),uint(23251),uint(23383),uint(11922),uint(20563),uint(20453),uint(20431),uint(22402),uint(20101),uint(20722),uint(20612),uint(20062),uint(20392),uint(571),uint(21932),uint(1803),uint(23001),uint(23133),uint(2001),uint(23903),uint(21272),uint(23573),uint(21162),uint(23252),uint(2133),uint(23912),uint(20841),uint(22152),uint(382),uint(20731),uint(20071),uint(20093),uint(20401),uint(20423),uint(23872),uint(21892),uint(20691),uint(20361),uint(22002),uint(20383),uint(20603),uint(20581),uint(22222),uint(25051),uint(83),uint(2582),uint(21791),uint(22143),uint(21461),uint(22693),uint(22583),uint(3572),uint(22561),uint(20933),uint(20911),uint(1271),uint(20111),uint(92),uint(20573),uint(20551),uint(11923),uint(20441),uint(20463),uint(22861),uint(21321),uint(21343),uint(25052),uint(21893),uint(22003),uint(21981),uint(22223),uint(22201),uint(22161),uint(22271),uint(431),uint(22601),uint(22403),uint(21523),uint(1311),uint(22821),uint(21303),uint(21083),uint(21171),uint(25043),uint(20872),uint(20102),uint(20432),uint(22192),uint(572),uint(21312),uint(21202),uint(22571),uint(22901),uint(23451),uint(23253),uint(2002),uint(20072),uint(20402),uint(21801),uint(21911),uint(21933),uint(22131),uint(22153),uint(383),uint(21172),uint(20732),uint(22162),uint(20842),uint(22272),uint(23913),uint(23891),uint(2583),uint(2561),uint(1791),uint(3881),uint(3573),uint(20912),uint(20692),uint(20362),uint(20582),uint(23873),uint(21792),uint(21462),uint(1272),uint(20063),uint(22562),uint(21163),uint(21273),uint(20921),uint(93),uint(20591),uint(20613),uint(20701),uint(20723),uint(20371),uint(20393),uint(23002),uint(21322),uint(21982),uint(22202),uint(25053),uint(20363),uint(20451),uint(20693),uint(20583),uint(20561),uint(432),uint(21793),uint(1312),uint(22862),uint(21463),uint(21221),uint(20913),uint(20103),uint(20081),uint(20411),uint(20433),uint(22822),uint(22602),uint(21203),uint(21313),uint(20873),uint(573),uint(22831),uint(1321),uint(2003),uint(22941),uint(21621),uint(23381),uint(20112),uint(20552),uint(20442),uint(22171),uint(22193)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10021)))|(.Rotten:== uint(10397)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})&.Rotten:== uint(10737)))|(.Peel:->contains($uint,[]uint{uint(1),uint(81),uint(2),uint(82),uint(3),uint(83)})&.Rotten:== uint(20007)))|(.Rotten:== uint(23161)&.Peel:->contains($uint,[]uint{uint(30983),uint(22861),uint(10392),uint(2138),uint(2226),uint(10986),uint(2402),uint(40073),uint(1808),uint(2006),uint(1918),uint(1896),uint(40381),uint(20098),uint(41802),uint(20076),uint(20428),uint(20406),uint(21981),uint(20362),uint(22003),uint(21893),uint(32998),uint(387),uint(431),uint(3128),uint(453),uint(22223),uint(22201),uint(563),uint(101),uint(22421),uint(2732),uint(2908),uint(16468),uint(36892),uint(21528),uint(21462),uint(21308),uint(21792),uint(607),uint(4998),uint(761),uint(22166),uint(10977),uint(24841),uint(12759),uint(22606),uint(1311),uint(20582),uint(22562),uint(20692),uint(32492),uint(22452),uint(40601),uint(3766),uint(2367),uint(2411),uint(2587),uint(18743),uint(2279),uint(31062),uint(3898),uint(2213),uint(3876),uint(2697),uint(4096),uint(23873),uint(31282),uint(23763),uint(12473),uint(1927),uint(2191),uint(2147),uint(1993),uint(24093),uint(3907),uint(21312),uint(29302),uint(3621),uint(3577),uint(4127),uint(88),uint(4347),uint(66),uint(3467),uint(36461),uint(3401),uint(4567),uint(20564),uint(20586),uint(21928),uint(20608),uint(462),uint(11281),uint(20388),uint(20762),uint(20432),uint(43901),uint(12997),uint(572),uint(20366),uint(3137),uint(616),uint(22368),uint(2873),uint(22192),uint(22412),uint(396),uint(418),uint(43461),uint(23921),uint(23877),uint(23811),uint(18747),uint(1628),uint(1716),uint(40082),uint(6032),uint(12491),uint(21466),uint(3753),uint(32461),uint(1276),uint(20067),uint(24128),uint(20111),uint(23908),uint(2398),uint(2838),uint(30393),uint(23754),uint(9301),uint(23622),uint(1892),uint(2002),uint(42832),uint(2222),uint(3696),uint(2178),uint(3762),uint(2156),uint(3916),uint(3872),uint(22588),uint(22456),uint(22566),uint(21321),uint(21277),uint(11061),uint(42392),uint(3476),uint(5051),uint(97),uint(603),uint(23402),uint(3256),uint(23468),uint(581),uint(691),uint(20419),uint(20463),uint(12878),uint(383),uint(361),uint(12966),uint(427),uint(20573),uint(23138),uint(1307),uint(1461),uint(21986),uint(1527),uint(22008),uint(22162),uint(22272),uint(21348),uint(1791),uint(21326),uint(24991),uint(16891),uint(22426),uint(22822),uint(20732),uint(12478),uint(22602),uint(43403),uint(2737),uint(10881),uint(2693),uint(42831),uint(32497),uint(2451),uint(2407),uint(4092),uint(10397),uint(2561),uint(23913),uint(2583),uint(23891),uint(11101),uint(1923),uint(12962),uint(42391),uint(2363),uint(32871),uint(2143),uint(63057),uint(4123),uint(62),uint(4101),uint(20587),uint(20411),uint(20433),uint(20367),uint(20763),uint(10982),uint(4343),uint(3573),uint(4321),uint(106),uint(23922),uint(3463),uint(4563),uint(766),uint(3133),uint(392),uint(3001),uint(436),uint(458),uint(612),uint(20081),uint(20103),uint(568),uint(1316),uint(1272),uint(21621),uint(22866),uint(21467),uint(1712),uint(23878),uint(23812),uint(21313),uint(3903),uint(3991),uint(3881),uint(24322),uint(2878),uint(11066),uint(20063),uint(20107),uint(20569),uint(20591),uint(23926),uint(41463),uint(23882),uint(20437),uint(20393),uint(11286),uint(2152),uint(2218),uint(2196),uint(3692),uint(1998),uint(3758),uint(23992),uint(2416),uint(24102),uint(3912),uint(32752),uint(31102),uint(12496),uint(71),uint(93),uint(23002),uint(401),uint(423),uint(21317),uint(21273),uint(6037),uint(3626),uint(21251),uint(3472),uint(731),uint(3406),uint(20613),uint(467),uint(577),uint(3252),uint(23121),uint(23253),uint(1303),uint(1897),uint(12751),uint(2007),uint(22901),uint(23693),uint(12993),uint(23627),uint(23473),uint(30882),uint(1523),uint(23407),uint(21713),uint(20402),uint(20578),uint(21801),uint(21911),uint(2601),uint(9306),uint(22197),uint(32963),uint(37301),uint(22153),uint(20468),uint(22131),uint(2821),uint(2271),uint(2227),uint(42563),uint(22417),uint(5056),uint(2161),uint(20072),uint(20116),uint(2403),uint(366),uint(24842),uint(388),uint(102),uint(20561),uint(432),uint(12461),uint(20451),uint(12967),uint(20583),uint(36893),uint(20693),uint(20077),uint(20407),uint(20429),uint(21793),uint(564),uint(586),uint(608),uint(20363),uint(21991),uint(9302),uint(762),uint(696),uint(38741),uint(63041),uint(1796),uint(1312),uint(1928),uint(2148),uint(21463),uint(40602),uint(3767),uint(3811),uint(40382),uint(23896),uint(3921),uint(3877),uint(1466),uint(4097),uint(3138),uint(3006),uint(43902),uint(40083),uint(23993),uint(40391),uint(24103),uint(3754),uint(2412),uint(2368),uint(10393),uint(3886),uint(30984),uint(2566),uint(2588),uint(3996),uint(2192),uint(3908),uint(2698),uint(43462),uint(23927),uint(67),uint(111),uint(4128),uint(23883),uint(4106),uint(23751),uint(36462),uint(2456),uint(22167),uint(397),uint(22277),uint(463),uint(573),uint(617),uint(22211),uint(22563),uint(20592),uint(17301),uint(32493),uint(22453),uint(32471),uint(22871),uint(3622),uint(3578),uint(23003),uint(22607),uint(20108),uint(20086),uint(3468),uint(20416),uint(3402),uint(20438),uint(10987),uint(42833),uint(23403),uint(1981),uint(1893),uint(2157),uint(18748),uint(1321),uint(2223),uint(2201),uint(1277),uint(2003),uint(23623),uint(42393),uint(1717),uint(3257),uint(12756),uint(4568),uint(4326),uint(4348),uint(22171),uint(22193),uint(12998),uint(22391),uint(2861),uint(20596),uint(22567),uint(2421),uint(20068),uint(22457),uint(22831),uint(22413),uint(10983),uint(98),uint(31063),uint(31283),uint(20112),uint(76),uint(582),uint(21982),uint(11282),uint(11106),uint(692),uint(736),uint(22202),uint(4841),uint(32462),uint(22422),uint(362),uint(406),uint(428),uint(21322),uint(22862),uint(21278),uint(10886),uint(3477),uint(11062),uint(12492),uint(3697),uint(2276),uint(3763),uint(2166),uint(1308),uint(3917),uint(3873),uint(4093),uint(1462),uint(29303),uint(1528),uint(21806),uint(1792),uint(16896),uint(23813),uint(24121),uint(3002),uint(23461),uint(20082),uint(23571),uint(3816),uint(3882),uint(24341),uint(3926),uint(3992),uint(2826),uint(2452),uint(2408),uint(4102),uint(10882),uint(32463),uint(12752),uint(2562),uint(4322),uint(23923),uint(11102),uint(23901),uint(63),uint(2606),uint(107),uint(22427),uint(591),uint(613),uint(22273),uint(767),uint(22361),uint(20764),uint(22691),uint(393),uint(437),uint(22603),uint(12466),uint(569),uint(22581),uint(23131),uint(20412),uint(1317),uint(1273),uint(20368),uint(20588),uint(22867),uint(9307),uint(20566),uint(22568),uint(16892),uint(2153),uint(2131),uint(12963),uint(22392),uint(22458),uint(22832),uint(22876),uint(2417),uint(32872),uint(2197),uint(21622),uint(21468),uint(1713),uint(1911),uint(1801),uint(3473),uint(3407),uint(3253),uint(20091),uint(20113),uint(3121),uint(72),uint(24561),uint(116),uint(32498),uint(402),uint(2901),uint(22172),uint(10398),uint(732),uint(22198),uint(4991),uint(22418),uint(22176),uint(468),uint(578),uint(21626),uint(12497),uint(1348),uint(1326),uint(23122),uint(21274),uint(21252),uint(21318),uint(3627),uint(22902),uint(40571),uint(2206),uint(2162),uint(2272),uint(2228),uint(3693),uint(3759),uint(3913),uint(32753),uint(2426),uint(3891),uint(20073),uint(24323),uint(21802),uint(21912),uint(1986),uint(37302),uint(2008),uint(22132),uint(12871),uint(1898),uint(24992),uint(3768),uint(3812),uint(3878),uint(3922),uint(4098),uint(2822),uint(103),uint(2866),uint(367),uint(42001),uint(20117),uint(81),uint(433),uint(411),uint(20601),uint(21921),uint(2602),uint(21987),uint(20403),uint(22163),uint(20381),uint(22141),uint(23628),uint(587),uint(23408),uint(30883),uint(763),uint(1467),uint(30971),uint(46031),uint(697),uint(41803),uint(31103),uint(11067),uint(1313),uint(16461),uint(21349),uint(21327),uint(11287),uint(23892),uint(30972),uint(22872),uint(43463),uint(2171),uint(2567),uint(2193),uint(22586),uint(22608),uint(10887),uint(2457),uint(2391),uint(2413),uint(1621),uint(26031),uint(1797),uint(42561),uint(38742),uint(23466),uint(23136),uint(3623),uint(20087),uint(3403),uint(16897),uint(20461),uint(20417),uint(21926),uint(4846),uint(21992),uint(41461),uint(36463),uint(24843),uint(398),uint(11283),uint(3007),uint(11063),uint(22212),uint(596),uint(68),uint(11107),uint(22168),uint(112),uint(25041),uint(22278),uint(17302),uint(22366),uint(2831),uint(21803),uint(21891),uint(618),uint(21253),uint(21913),uint(22001),uint(22221),uint(22177),uint(10988),uint(22133),uint(1322),uint(20571),uint(20593),uint(1278),uint(12968),uint(2422),uint(40392),uint(3887),uint(23928),uint(23906),uint(4107),uint(3997),uint(23752),uint(9303),uint(63042),uint(1806),uint(12462),uint(1718),uint(1916),uint(43903),uint(4327),uint(2136),uint(2202),uint(1982),uint(2158),uint(21627),uint(24126),uint(21279),uint(21301),uint(21323),uint(3918),uint(17306),uint(3896),uint(77),uint(3478),uint(21807),uint(21983),uint(20597),uint(451),uint(561),uint(3258),uint(12876),uint(693),uint(20421),uint(4842),uint(583),uint(3126),uint(2862),uint(22423),uint(22203),uint(22401),uint(363),uint(2906),uint(407),uint(1463),uint(737),uint(30391),uint(40071),uint(21521),uint(3698),uint(32472),uint(2607),uint(20078),uint(2453),uint(23897),uint(2827),uint(20386),uint(31064),uint(2563),uint(1793),uint(1991),uint(42821),uint(12471),uint(12493),uint(2211),uint(2277),uint(3751),uint(3817),uint(16466),uint(2167),uint(3883),uint(22863),uint(10984),uint(4996),uint(86),uint(108),uint(22731),uint(20562),uint(12757),uint(592),uint(768),uint(32991),uint(20408),uint(20452),uint(2871),uint(438),uint(416),uint(20606),uint(3003),uint(1274),uint(1318),uint(21623),uint(22151),uint(1626),uint(9308),uint(21271),uint(1802),uint(22173),uint(22393),uint(22833),uint(12467),uint(3993),uint(3927),uint(24562),uint(16462),uint(2902),uint(4103),uint(2836),uint(2418),uint(32992),uint(4323),uint(11288),uint(11068),uint(23902),uint(12753),uint(1912),uint(2132),uint(24122),uint(2396),uint(2198),uint(2176),uint(24342),uint(21711),uint(63046),uint(46032),uint(20466),uint(20576),uint(73),uint(20598),uint(20422),uint(10883),uint(11103),uint(3628),uint(10971),uint(117),uint(23911),uint(3408),uint(4992),uint(17307),uint(381),uint(3122),uint(403),uint(601),uint(21808),uint(20092),uint(1349),uint(1327),uint(23251),uint(22877),uint(21522),uint(1921),uint(21302),uint(16893),uint(23691),uint(3892),uint(23471),uint(2867),uint(10989),uint(41694),uint(20118),uint(20096),uint(42002),uint(37303),uint(32961),uint(2581),uint(2603),uint(23893),uint(23871),uint(20426),uint(2691),uint(20382),uint(23761),uint(2141),uint(2163),uint(2207),uint(1987),uint(3813),uint(3901),uint(32873),uint(24091),uint(2427),uint(3923),uint(2361),uint(2273),uint(12463),uint(39041),uint(82),uint(23123),uint(21526),uint(368),uint(412),uint(21306),uint(21328),uint(40572),uint(22903),uint(3571),uint(764),uint(3461),uint(20602),uint(43401),uint(456),uint(588),uint(566),uint(698),uint(3131),uint(23132),uint(1622),uint(40383),uint(1996),uint(1798),uint(22868),uint(18741),uint(12872),uint(40603),uint(23572),uint(23462),uint(1468),uint(30981),uint(20413),uint(20391),uint(2876),uint(4341),uint(4121),uint(20611),uint(21922),uint(3008),uint(4561),uint(21988),uint(20567),uint(2832),uint(22142),uint(32996),uint(22362),uint(2216),uint(24993),uint(22428),uint(2172),uint(2568),uint(22736),uint(32754),uint(20061),uint(20083),uint(22692),uint(12498),uint(12476),uint(2458),uint(22582),uint(4847),uint(2392),uint(12472),uint(12758),uint(113),uint(91),uint(421),uint(4328),uint(20462),uint(20572),uint(25051),uint(16467),uint(17303),uint(20066),uint(20088),uint(24127),uint(41801),uint(20418),uint(21892),uint(597),uint(22002),uint(32997),uint(23467),uint(63052),uint(23401),uint(1807),uint(23137),uint(1983),uint(1301),uint(1323),uint(2137),uint(1917),uint(1279),uint(21628),uint(3756),uint(32491),uint(10391),uint(40393),uint(23907),uint(21276),uint(23863),uint(3888),uint(23753),uint(3998),uint(23621),uint(1521),uint(4108),uint(3127),uint(40072),uint(2731),uint(2907),uint(24092),uint(2863),uint(2423),uint(2401),uint(3897),uint(2203),uint(29301),uint(31061),uint(78),uint(23872),uint(16898),uint(23762),uint(31281),uint(408),uint(386),uint(22178),uint(452),uint(606),uint(562),uint(11064),uint(22222),uint(11108),uint(36891),uint(20581),uint(20603),uint(12991),uint(20691),uint(20097),uint(20427),uint(20361),uint(10976),uint(20383),uint(10888),uint(42822),uint(6031),uint(1926),uint(2168),uint(2146),uint(2212),uint(1992),uint(23898),uint(23876),uint(30392),uint(20563),uint(12877),uint(20453),uint(20761),uint(20431),uint(3136),uint(22006),uint(20387),uint(4843),uint(2872),uint(20607),uint(2586),uint(2608),uint(2696),uint(22402),uint(2366),uint(2278),uint(10972),uint(87),uint(20101),uint(5041),uint(4997),uint(22732),uint(593),uint(4566),uint(26032),uint(21993),uint(571),uint(22213),uint(22191),uint(22411),uint(22367),uint(32473),uint(22279),uint(461),uint(417),uint(21311),uint(22873),uint(22587),uint(18746),uint(3576),uint(769),uint(3466),uint(40081),uint(1891),uint(2001),uint(1913),uint(3752),uint(63056),uint(2133),uint(2221),uint(3818),uint(2177),uint(3928),uint(3906),uint(4126),uint(4346),uint(1627),uint(1803),uint(21927),uint(23692),uint(23626),uint(20093),uint(20071),uint(23472),uint(63047),uint(3761),uint(2903),uint(3123),uint(3871),uint(3893),uint(23406),uint(4091),uint(2837),uint(10981),uint(2397),uint(32496),uint(118),uint(11069),uint(23912),uint(12873),uint(96),uint(22416),uint(602),uint(17308),uint(382),uint(426),uint(12477),uint(20423),uint(20467),uint(1328),uint(1306),uint(20401),uint(20577),uint(20731),uint(23252),uint(22878),uint(22601),uint(1922),uint(2142),uint(12996),uint(22403),uint(1988),uint(2428),uint(12468),uint(2406),uint(22821),uint(16463),uint(2362),uint(2208),uint(32751),uint(1526),uint(32993),uint(21523),uint(21303),uint(21347),uint(3462),uint(4993),uint(3132),uint(43402),uint(20102),uint(83),uint(2736),uint(61),uint(2868),uint(391),uint(22007),uint(22161),uint(22271),uint(40573),uint(2582),uint(2692),uint(12754),uint(12992),uint(22363),uint(5046),uint(457),uint(413),uint(22561),uint(22583),uint(30881),uint(611),uint(567),uint(22451),uint(4848),uint(23001),uint(31101),uint(21527),uint(21461),uint(22737),uint(22693),uint(23133),uint(1271),uint(39042),uint(21307),uint(18742),uint(3572),uint(2151),uint(2173),uint(2217),uint(3902),uint(20062),uint(20106),uint(2393),uint(4122),uint(1711),uint(1623),uint(21791),uint(42003),uint(21923),uint(4562),uint(32962),uint(1997),uint(22143),uint(4342),uint(42562),uint(3691),uint(3757),uint(3471),uint(3251),uint(3911),uint(21712),uint(24321),uint(2833),uint(24343),uint(24563),uint(2877),uint(92),uint(422),uint(20612),uint(63051),uint(466),uint(20568),uint(10396),uint(22196),uint(20392),uint(22152),uint(20436),uint(12961),uint(23991),uint(23573),uint(598),uint(24101),uint(23463),uint(24123),uint(576),uint(1522),uint(30982),uint(41462),uint(1302),uint(21316),uint(38743),uint(6036),uint(23903),uint(23881),uint(21272)})))|(.Rotten:== uint(10803)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10034)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10425)))|(.Rotten:== uint(10081)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10184)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10527)&.Peel:->contains($uint,[]uint{uint(1)})))|(.Rotten:== uint(10134)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10121)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Peel:->contains($uint,[]uint{uint(82),uint(83),uint(84),uint(81)})&.Rotten:== uint(21032)))|(.Rotten:== uint(10056)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10418)))|(.Rotten:== uint(10220)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10284)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(83),uint(81),uint(82)})&.Rotten:== uint(10378)))|(.Peel:->contains($uint,[]uint{uint(6021),uint(6022),uint(6023)})&.Rotten:== uint(10166)))|(.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})&.Rotten:== uint(10252)))|(.Rotten:== uint(10370)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10156)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(18413),uint(60013),uint(17203),uint(1360),uint(10041),uint(60012),uint(50883),uint(1361),uint(10121),uint(10042),uint(50881),uint(17201),uint(18411),uint(1362),uint(10131),uint(10122),uint(17202),uint(18412),uint(10123),uint(10132),uint(50882),uint(60011)})&.Rotten:== uint(60119)))|(.Rotten:== uint(13162)&.Peel:->contains($uint,[]uint{uint(5668),uint(5646),uint(17939),uint(1497),uint(5558),uint(1563),uint(1541),uint(1761),uint(21802),uint(13768),uint(1937),uint(21692),uint(63446),uint(17499),uint(1101),uint(2113),uint(21582),uint(5426),uint(2047),uint(22528),uint(5448),uint(1211),uint(2091),uint(18687),uint(31112),uint(21516),uint(25643),uint(17169),uint(10367),uint(62192),uint(6108),uint(12778),uint(1717),uint(25401),uint(27183),uint(1651),uint(4282),uint(4348),uint(24851),uint(27491),uint(3103),uint(8277),uint(3081),uint(11357),uint(11137),uint(4458),uint(11599),uint(8057),uint(8123),uint(4502),uint(7903),uint(10697),uint(2883),uint(24961),uint(7947),uint(11467),uint(24983),uint(4986),uint(2311),uint(2333),uint(58197),uint(44452),uint(2201),uint(2223),uint(4942),uint(28151),uint(4788),uint(5250),uint(10851),uint(10829),uint(10939),uint(7463),uint(24521),uint(7507),uint(2553),uint(7573),uint(22022),uint(2531),uint(318),uint(4401),uint(296),uint(362),uint(20777),uint(4313),uint(15277),uint(14947),uint(4511),uint(186),uint(208),uint(4467),uint(31565),uint(25256),uint(11458),uint(8132),uint(3983),uint(582),uint(3961),uint(58096),uint(58118),uint(35252),uint(4797),uint(538),uint(472),uint(516),uint(27592),uint(3873),uint(406),uint(11348),uint(428),uint(20821),uint(24222),uint(28142),uint(28252),uint(24332),uint(20271),uint(5259),uint(4973),uint(3543),uint(4951),uint(30751),uint(4863),uint(20183),uint(24552),uint(27812),uint(758),uint(20491),uint(7516),uint(20293),uint(20513),uint(22031),uint(22053),uint(7582),uint(802),uint(49261),uint(20381),uint(3411),uint(20403),uint(7098),uint(1726),uint(13759),uint(1748),uint(7142),uint(18058),uint(7032),uint(13737),uint(1638),uint(1814),uint(1594),uint(1836),uint(1902),uint(1528),uint(23562),uint(8673),uint(1506),uint(1946),uint(21833),uint(2122),uint(12184),uint(7362),uint(60639),uint(7318),uint(21811),uint(2056),uint(17358),uint(7252),uint(7186),uint(28428),uint(21723),uint(21701),uint(7208),uint(21503),uint(21547),uint(24112),uint(21591),uint(11590),uint(11568),uint(11634),uint(11656),uint(21481),uint(24002),uint(4071),uint(14177),uint(4093),uint(14199),uint(4137),uint(9267),uint(4181),uint(4291),uint(9223),uint(15427),uint(28683),uint(24556),uint(28661),uint(7173),uint(28551),uint(20363),uint(7041),uint(7107),uint(7437),uint(15207),uint(3222),uint(20451),uint(20473),uint(2848),uint(15559),uint(2826),uint(7063),uint(7503),uint(24952),uint(29013),uint(24226),uint(14987),uint(20803),uint(2892),uint(20781),uint(11652),uint(24138),uint(14899),uint(14877),uint(11564),uint(24072),uint(4036),uint(2342),uint(2782),uint(24292),uint(41),uint(2738),uint(20187),uint(173),uint(2672),uint(4256),uint(151),uint(24402),uint(20341),uint(4366),uint(58606),uint(20297),uint(8537),uint(20231),uint(24512),uint(63),uint(437),uint(8647),uint(481),uint(21947),uint(21903),uint(13997),uint(21881),uint(371),uint(35441),uint(393),uint(5677),uint(23082),uint(261),uint(283),uint(30333),uint(217),uint(327),uint(701),uint(12598),uint(31468),uint(5413),uint(63327),uint(3992),uint(591),uint(3948),uint(3926),uint(21551),uint(1207),uint(24006),uint(1031),uint(23962),uint(1053),uint(17178),uint(3486),uint(27108),uint(811),uint(767),uint(27042),uint(17068),uint(14437),uint(3596),uint(3376),uint(3552),uint(14459),uint(943),uint(12589),uint(12699),uint(1933),uint(1713),uint(8682),uint(2021),uint(1691),uint(2043),uint(23531),uint(1647),uint(23091),uint(1581),uint(1493),uint(1537),uint(12193),uint(2153),uint(2131),uint(2351),uint(9012),uint(1361),uint(5642),uint(1383),uint(2241),uint(50194),uint(24081),uint(11819),uint(23993),uint(46023),uint(11709),uint(9078),uint(23971),uint(13667),uint(23597),uint(27121),uint(9342),uint(1757),uint(27033),uint(1801),uint(3297),uint(4476),uint(4432),uint(27143),uint(8427),uint(20482),uint(8273),uint(59112),uint(8207),uint(8251),uint(59068),uint(4872),uint(4718),uint(20812),uint(4806),uint(20768),uint(30852),uint(8141),uint(7943),uint(2593),uint(2527),uint(22673),uint(20042),uint(22541),uint(7811),uint(8053),uint(2571),uint(5422),uint(5444),uint(20152),uint(4982),uint(28111),uint(28133),uint(49072),uint(7591),uint(226),uint(182),uint(10288),uint(20372),uint(20262),uint(12919),uint(292),uint(2813),uint(10332),uint(2791),uint(72),uint(2703),uint(22783),uint(116),uint(468),uint(512),uint(4551),uint(12827),uint(732),uint(402),uint(776),uint(446),uint(20817),uint(336),uint(20751),uint(798),uint(358),uint(20773),uint(13289),uint(9206),uint(9228),uint(4947),uint(4793),uint(4881),uint(25252),uint(12189),uint(13597),uint(20311),uint(5321),uint(20443),uint(24526),uint(40263),uint(20421),uint(20223),uint(7908),uint(8128),uint(1216),uint(20333),uint(13927),uint(3693),uint(47461),uint(29071),uint(3451),uint(20531),uint(3473),uint(1062),uint(12057),uint(5255),uint(3561),uint(1018),uint(15568),uint(2052),uint(1942),uint(7292),uint(7226),uint(23602),uint(7468),uint(7248),uint(7182),uint(7512),uint(1722),uint(7116),uint(1656),uint(7578),uint(30281),uint(2272),uint(1546),uint(1568),uint(1502),uint(1392),uint(21763),uint(4001),uint(35257),uint(59116),uint(21741),uint(4133),uint(4111),uint(27122),uint(21653),uint(4221),uint(21631),uint(4331),uint(50752),uint(7072),uint(21521),uint(21543),uint(1766),uint(7028),uint(4507),uint(23932),uint(1832),uint(4463),uint(3372),uint(23963),uint(7587),uint(3482),uint(23941),uint(7257),uint(7213),uint(7191),uint(3108),uint(3086),uint(20298),uint(62196),uint(24403),uint(20232),uint(3152),uint(4032),uint(20188),uint(4098),uint(4076),uint(2602),uint(27201),uint(4142),uint(14908),uint(31262),uint(27223),uint(4252),uint(4296),uint(27091),uint(2558),uint(10517),uint(59103),uint(2536),uint(27113),uint(24227),uint(367),uint(323),uint(7147),uint(4406),uint(301),uint(411),uint(4362),uint(7103),uint(10429),uint(59213),uint(27311),uint(2822),uint(191),uint(17099),uint(4516),uint(7037),uint(213),uint(4472),uint(24007),uint(11463),uint(807),uint(763),uint(521),uint(851),uint(433),uint(477),uint(22533),uint(11397),uint(5673),uint(32903),uint(22841),uint(26022),uint(11639),uint(11661),uint(22731),uint(1401),uint(20452),uint(23083),uint(3988),uint(58091),uint(58113),uint(3966),uint(1423),uint(60634),uint(3922),uint(20342),uint(3878),uint(20826),uint(11111),uint(1071),uint(3702),uint(20782),uint(28147),uint(28257),uint(11133),uint(1203),uint(3592),uint(30756),uint(8612),uint(8678),uint(63441),uint(1093),uint(10337),uint(23593),uint(2061),uint(2083),uint(10359),uint(58601),uint(2193),uint(1731),uint(35446),uint(14178),uint(1621),uint(2501),uint(2523),uint(2303),uint(1643),uint(1599),uint(1511),uint(1533),uint(24253),uint(59107),uint(59217),uint(59063),uint(63322),uint(24121),uint(14948),uint(1753),uint(23923),uint(24011),uint(1819),uint(24033),uint(1841),uint(17337),uint(44113),uint(17359),uint(1907),uint(28138),uint(4802),uint(3557),uint(3601),uint(29062),uint(11657),uint(3381),uint(11547),uint(29172),uint(11569),uint(3183),uint(22581),uint(22537),uint(3227),uint(26026),uint(22691),uint(13298),uint(8423),uint(4956),uint(4978),uint(3293),uint(4912),uint(10997),uint(22911),uint(112),uint(8137),uint(20192),uint(31121),uint(2787),uint(46),uint(156),uint(2721),uint(222),uint(5418),uint(2743),uint(178),uint(13738),uint(8203),uint(60638),uint(2677),uint(25322),uint(20302),uint(22823),uint(11349),uint(486),uint(442),uint(58095),uint(20522),uint(376),uint(11459),uint(398),uint(11261),uint(7961),uint(20412),uint(288),uint(266),uint(332),uint(2831),uint(17957),uint(4921),uint(816),uint(4943),uint(11648),uint(29031),uint(22524),uint(992),uint(32872),uint(26101),uint(22722),uint(22788),uint(22546),uint(21842),uint(21732),uint(772),uint(21754),uint(4987),uint(21622),uint(1542),uint(10856),uint(25661),uint(8256),uint(1498),uint(8278),uint(8146),uint(22832),uint(21512),uint(3931),uint(5647),uint(21556),uint(8533),uint(58192),uint(5251),uint(1212),uint(25441),uint(11318),uint(8643),uint(1102),uint(1058),uint(8058),uint(5449),uint(8687),uint(7948),uint(5427),uint(14257),uint(7596),uint(2202),uint(2312),uint(12858),uint(7816),uint(9017),uint(14477),uint(49221),uint(20047),uint(2532),uint(42692),uint(3997),uint(1718),uint(4063),uint(1696),uint(20201),uint(1652),uint(25111),uint(7508),uint(12528),uint(1586),uint(20113),uint(9171),uint(24363),uint(4173),uint(4283),uint(12198),uint(27148),uint(4371),uint(24451),uint(29911),uint(1762),uint(1806),uint(7222),uint(4503),uint(7178),uint(22062),uint(1938),uint(7068),uint(7112),uint(24803),uint(2092),uint(7046),uint(24781),uint(17218),uint(2026),uint(2048),uint(24113),uint(28152),uint(24091),uint(11666),uint(24003),uint(24333),uint(23981),uint(3566),uint(20382),uint(4006),uint(49073),uint(24553),uint(20492),uint(20272),uint(4072),uint(7517),uint(4116),uint(4182),uint(3412),uint(4138),uint(4226),uint(7033),uint(4336),uint(11138),uint(11116),uint(231),uint(8551),uint(4292),uint(297),uint(4512),uint(32873),uint(3082),uint(4468),uint(121),uint(4402),uint(8661),uint(187),uint(8683),uint(583),uint(7363),uint(561),uint(11468),uint(517),uint(4798),uint(473),uint(7253),uint(4556),uint(58097),uint(429),uint(58119),uint(407),uint(7187),uint(11358),uint(451),uint(7231),uint(7121),uint(341),uint(24223),uint(363),uint(7143),uint(21482),uint(1001),uint(21526),uint(9013),uint(21548),uint(22551),uint(1111),uint(31113),uint(29912),uint(14187),uint(6021),uint(671),uint(781),uint(803),uint(9343),uint(1551),uint(15067),uint(1507),uint(1441),uint(10047),uint(29032),uint(29076),uint(23101),uint(18059),uint(12194),uint(3962),uint(20822),uint(20778),uint(22912),uint(22692),uint(12867),uint(2321),uint(2343),uint(12757),uint(12779),uint(2673),uint(2541),uint(1727),uint(13527),uint(18697),uint(13769),uint(12537),uint(1837),uint(1947),uint(13747),uint(1881),uint(1903),uint(2057),uint(21812),uint(26027),uint(21592),uint(2211),uint(21702),uint(2101),uint(2123),uint(29221),uint(20193),uint(20171),uint(4952),uint(3751),uint(3597),uint(20303),uint(20281),uint(25323),uint(10368),uint(5326),uint(63447),uint(25257),uint(20523),uint(3377),uint(3487),uint(10852),uint(152),uint(3531),uint(25411),uint(22032),uint(20391),uint(27096),uint(20413),uint(42),uint(372),uint(49262),uint(27492),uint(328),uint(5678),uint(306),uint(416),uint(3091),uint(3223),uint(218),uint(59219),uint(2827),uint(196),uint(702),uint(2761),uint(2783),uint(262),uint(8111),uint(35253),uint(22582),uint(10698),uint(8133),uint(592),uint(2871),uint(2893),uint(24971),uint(526),uint(482),uint(59109),uint(438),uint(22538),uint(5181),uint(22542),uint(5291),uint(1032),uint(1208),uint(30752),uint(63328),uint(4983),uint(9176),uint(5401),uint(4961),uint(31126),uint(27043),uint(27021),uint(768),uint(812),uint(12907),uint(1758),uint(13677),uint(21882),uint(1736),uint(1692),uint(8428),uint(1648),uint(1626),uint(14227),uint(23092),uint(1582),uint(1516),uint(1538),uint(12599),uint(8208),uint(8252),uint(21552),uint(3993),uint(3971),uint(27593),uint(3927),uint(27571),uint(5643),uint(8142),uint(1362),uint(27461),uint(21486),uint(58101),uint(2572),uint(7812),uint(28253),uint(2528),uint(10518),uint(20043),uint(2352),uint(4037),uint(47463),uint(2396),uint(28143),uint(4081),uint(28121),uint(20263),uint(2836),uint(44361),uint(2792),uint(20153),uint(20351),uint(2726),uint(7592),uint(20373),uint(4191),uint(27813),uint(4301),uint(27901),uint(4257),uint(11112),uint(1802),uint(4433),uint(24513),uint(4367),uint(1846),uint(7108),uint(28671),uint(24557),uint(15428),uint(24711),uint(2022),uint(7042),uint(4521),uint(2132),uint(4807),uint(4851),uint(59113),uint(24953),uint(4873),uint(2066),uint(4741),uint(2242),uint(13237),uint(25402),uint(10597),uint(58198),uint(4002),uint(4112),uint(28112),uint(62193),uint(183),uint(4222),uint(10157),uint(3562),uint(51),uint(10333),uint(3606),uint(227),uint(3452),uint(4332),uint(73),uint(14438),uint(117),uint(7293),uint(28662),uint(513),uint(22023),uint(35442),uint(4552),uint(491),uint(403),uint(7183),uint(4508),uint(7227),uint(447),uint(24852),uint(7117),uint(337),uint(381),uint(733),uint(7073),uint(20461),uint(293),uint(7491),uint(28552),uint(271),uint(711),uint(777),uint(3298),uint(7513),uint(20483),uint(4948),uint(4882),uint(20813),uint(10751),uint(14988),uint(59056),uint(10707),uint(20791),uint(30853),uint(601),uint(24962),uint(14878),uint(1217),uint(24016),uint(23972),uint(1151),uint(18688),uint(17179),uint(12181),uint(23598),uint(821),uint(17069),uint(13668),uint(23532),uint(24522),uint(1063),uint(1767),uint(1811),uint(1833),uint(8538),uint(8648),uint(1723),uint(1701),uint(65431),uint(1657),uint(11301),uint(21803),uint(11631),uint(1547),uint(11653),uint(1591),uint(11565),uint(1481),uint(1503),uint(21693),uint(1393),uint(21517),uint(1371),uint(24082),uint(21561),uint(58110),uint(13998),uint(60631),uint(21583),uint(3936),uint(2581),uint(10857),uint(10747),uint(58092),uint(19177),uint(58114),uint(22842),uint(27101),uint(2537),uint(2911),uint(27123),uint(7038),uint(7126),uint(14478),uint(11121),uint(11319),uint(2823),uint(27431),uint(2691),uint(2141),uint(2031),uint(2053),uint(2273),uint(2251),uint(30282),uint(2361),uint(26023),uint(4011),uint(5322),uint(28641),uint(20453),uint(20431),uint(3967),uint(20321),uint(13598),uint(3923),uint(28531),uint(3901),uint(28553),uint(12199),uint(28421),uint(20343),uint(20761),uint(20783),uint(17219),uint(28201),uint(236),uint(346),uint(8556),uint(3703),uint(28113),uint(302),uint(8666),uint(17087),uint(192),uint(3571),uint(3593),uint(25671),uint(5256),uint(8688),uint(6026),uint(14258),uint(522),uint(3483),uint(456),uint(808),uint(478),uint(22556),uint(49222),uint(786),uint(368),uint(13928),uint(3373),uint(852),uint(412),uint(9172),uint(22732),uint(9018),uint(20233),uint(8151),uint(3131),uint(3087),uint(20211),uint(11649),uint(28663),uint(5441),uint(12058),uint(1402),uint(21751),uint(21641),uint(5551),uint(5111),uint(28126),uint(21487),uint(21531),uint(1754),uint(21553),uint(50753),uint(28258),uint(1886),uint(1842),uint(29072),uint(1072),uint(1908),uint(28148),uint(63442),uint(22521),uint(8701),uint(11398),uint(6101),uint(11266),uint(15569),uint(1732),uint(20827),uint(22543),uint(9031),uint(1622),uint(5661),uint(1512),uint(1556),uint(35258),uint(4033),uint(8116),uint(2722),uint(8138),uint(4077),uint(24558),uint(31263),uint(14667),uint(2678),uint(4121),uint(2546),uint(7962),uint(24712),uint(59104),uint(9207),uint(2524),uint(24228),uint(4253),uint(4363),uint(4407),uint(4297),uint(24976),uint(31461),uint(24096),uint(4341),uint(15327),uint(24008),uint(4517),uint(23942),uint(59214),uint(2832),uint(4473),uint(14557),uint(2788),uint(4451),uint(2062),uint(12828),uint(4803),uint(4781),uint(7258),uint(7236),uint(47462),uint(7148),uint(7192),uint(2502),uint(12520),uint(4913),uint(62197),uint(4957),uint(14909),uint(21883),uint(9911),uint(25662),uint(8257),uint(21557),uint(47),uint(91),uint(113),uint(157),uint(21623),uint(3976),uint(4372),uint(3932),uint(8147),uint(21491),uint(21513),uint(421),uint(443),uint(333),uint(7817),uint(22041),uint(25442),uint(377),uint(22063),uint(12186),uint(201),uint(17958),uint(3602),uint(223),uint(311),uint(267),uint(4526),uint(4856),uint(29063),uint(773),uint(11636),uint(751),uint(11658),uint(3382),uint(11570),uint(3536),uint(9071),uint(7597),uint(817),uint(21051),uint(993),uint(531),uint(7311),uint(971),uint(11548),uint(29173),uint(5186),uint(487),uint(3096),uint(42693),uint(22547),uint(22723),uint(29261),uint(13528),uint(16027),uint(4922),uint(4988),uint(31131),uint(4966),uint(3228),uint(27092),uint(1521),uint(1411),uint(24122),uint(27202),uint(59218),uint(24452),uint(1301),uint(14949),uint(14927),uint(24012),uint(1763),uint(7201),uint(1103),uint(1807),uint(7223),uint(1081),uint(1213),uint(7113),uint(30757),uint(24782),uint(2027),uint(7091),uint(24716),uint(27312),uint(59108),uint(7047),uint(10369),uint(12868),uint(10281),uint(21931),uint(12758),uint(1741),uint(1697),uint(21843),uint(21733),uint(3998),uint(1653),uint(21711),uint(12538),uint(1631),uint(1543),uint(1587),uint(4086),uint(2841),uint(31122),uint(13717),uint(59117),uint(20202),uint(24461),uint(13739),uint(20422),uint(59051),uint(2731),uint(24527),uint(27061),uint(2621),uint(24131),uint(20312),uint(13607),uint(3083),uint(17338),uint(7232),uint(7188),uint(27171),uint(20532),uint(24791),uint(23933),uint(7122),uint(2203),uint(10338),uint(2093),uint(30286),uint(2313),uint(12859),uint(27501),uint(2291),uint(12727),uint(2533),uint(4007),uint(4051),uint(14157),uint(14179),uint(4117),uint(4183),uint(20048),uint(12529),uint(188),uint(21742),uint(44453),uint(276),uint(10998),uint(232),uint(21522),uint(21566),uint(5648),uint(21632),uint(28271),uint(22833),uint(122),uint(3963),uint(3941),uint(496),uint(5252),uint(11262),uint(518),uint(452),uint(5296),uint(27941),uint(58193),uint(5406),uint(386),uint(408),uint(63323),uint(298),uint(28051),uint(3721),uint(342),uint(11306),uint(3567),uint(826),uint(23603),uint(3413),uint(20818),uint(20796),uint(20752),uint(6022),uint(562),uint(1002),uint(13299),uint(26102),uint(672),uint(10756),uint(3391),uint(782),uint(1596),uint(30287),uint(1508),uint(1552),uint(21901),uint(1816),uint(26028),uint(1486),uint(21813),uint(1838),uint(9916),uint(13757),uint(30331),uint(1882),uint(1442),uint(14197),uint(5327),uint(21703),uint(1112),uint(22583),uint(59110),uint(21527),uint(2102),uint(59066),uint(2036),uint(13999),uint(21593),uint(2058),uint(22781),uint(18698),uint(21483),uint(22693),uint(22671),uint(12877),uint(10048),uint(27062),uint(14439),uint(1728),uint(27106),uint(1706),uint(25412),uint(22913),uint(27172),uint(10158),uint(4337),uint(4227),uint(3092),uint(11126),uint(27502),uint(2828),uint(3136),uint(11302),uint(8156),uint(2762),uint(4403),uint(4557),uint(8112),uint(10752),uint(10708),uint(4513),uint(4711),uint(2872),uint(24972),uint(58098),uint(2916),uint(10598),uint(24136),uint(28272),uint(2322),uint(4953),uint(2212),uint(5151),uint(27942),uint(2696),uint(2586),uint(13669),uint(7496),uint(7518),uint(43),uint(2542),uint(21),uint(22033),uint(28052),uint(44111),uint(307),uint(351),uint(11117),uint(263),uint(27493),uint(20766),uint(373),uint(24981),uint(31466),uint(24783),uint(4368),uint(4346),uint(4522),uint(8253),uint(241),uint(4456),uint(197),uint(21052),uint(8143),uint(10699),uint(4742),uint(8121),uint(10677),uint(593),uint(3972),uint(58107),uint(571),uint(3928),uint(4808),uint(527),uint(4786),uint(461),uint(483),uint(27581),uint(11337),uint(417),uint(11359),uint(5116),uint(28153),uint(7813),uint(1011),uint(3752),uint(3532),uint(4962),uint(4852),uint(24453),uint(7901),uint(20172),uint(1121),uint(3598),uint(7461),uint(681),uint(44362),uint(703),uint(3488),uint(10853),uint(20282),uint(24717),uint(17937),uint(22042),uint(17959),uint(791),uint(7593),uint(7571),uint(813),uint(20392),uint(3378),uint(13748),uint(1759),uint(1693),uint(7043),uint(1803),uint(1847),uint(1627),uint(28681),uint(29033),uint(8552),uint(29011),uint(29077),uint(1583),uint(1561),uint(21932),uint(8662),uint(7021),uint(1517),uint(1363),uint(2067),uint(2023),uint(2111),uint(7241),uint(2221),uint(2133),uint(21712),uint(21492),uint(9036),uint(21558),uint(24123),uint(24013),uint(11557),uint(4016),uint(23991),uint(4038),uint(4082),uint(14188),uint(4126),uint(4192),uint(4302),uint(18707),uint(1737),uint(4258),uint(7228),uint(11311),uint(7206),uint(3101),uint(11267),uint(28672),uint(11399),uint(7096),uint(7118),uint(7492),uint(3211),uint(2837),uint(20462),uint(24963),uint(11707),uint(11597),uint(20792),uint(2881),uint(24083),uint(29266),uint(24853),uint(29222),uint(7316),uint(24017),uint(24941),uint(2529),uint(4003),uint(58199),uint(10827),uint(2331),uint(4091),uint(2353),uint(2397),uint(4113),uint(20176),uint(2793),uint(52),uint(118),uint(10937),uint(206),uint(2727),uint(20352),uint(4223),uint(2551),uint(15328),uint(24523),uint(4311),uint(24501),uint(11113),uint(4333),uint(448),uint(12697),uint(426),uint(382),uint(23093),uint(23291),uint(8702),uint(5666),uint(272),uint(12587),uint(14228),uint(228),uint(338),uint(35254),uint(712),uint(316),uint(21562),uint(5402),uint(9076),uint(5446),uint(602),uint(60632),uint(3981),uint(17497),uint(5556),uint(18117),uint(21496),uint(3937),uint(21518),uint(536),uint(9032),uint(492),uint(1152),uint(12059),uint(3871),uint(14668),uint(1218),uint(23973),uint(18689),uint(63448),uint(3607),uint(11817),uint(17167),uint(9208),uint(12191),uint(27097),uint(756),uint(27141),uint(27031),uint(778),uint(3541),uint(822),uint(23533),uint(6106),uint(46021),uint(14558),uint(21056),uint(3453),uint(1702),uint(2032),uint(1658),uint(1636),uint(8671),uint(23102),uint(1592),uint(1548),uint(1526),uint(12182),uint(2142),uint(1482),uint(1372),uint(2252),uint(9221),uint(9177),uint(13238),uint(23982),uint(24092),uint(11632),uint(11654),uint(13678),uint(31127),uint(42532),uint(1746),uint(27066),uint(6027),uint(1768),uint(27022),uint(1812),uint(15297),uint(22046),uint(20471),uint(4553),uint(2912),uint(4883),uint(14989),uint(27572),uint(59101),uint(4861),uint(59057),uint(3088),uint(20823),uint(20801),uint(14879),uint(8152),uint(3132),uint(27462),uint(62194),uint(2538),uint(30753),uint(25403),uint(5257),uint(22552),uint(5323),uint(10519),uint(2582),uint(5081),uint(2362),uint(4971),uint(28122),uint(5411),uint(193),uint(237),uint(59211),uint(20273),uint(12908),uint(20361),uint(20383),uint(2846),uint(303),uint(281),uint(2736),uint(61),uint(27902),uint(2692),uint(171),uint(35443),uint(523),uint(457),uint(4716),uint(4518),uint(24977),uint(391),uint(413),uint(12728),uint(20828),uint(347),uint(787),uint(20762),uint(9173),uint(4958),uint(8271),uint(4782),uint(32901),uint(28642),uint(3968),uint(8051),uint(20322),uint(3946),uint(13608),uint(5442),uint(20432),uint(3902),uint(1381),uint(20212),uint(24471),uint(8117),uint(5552),uint(7941),uint(7963),uint(9261),uint(24801),uint(3572),uint(941),uint(853),uint(24713),uint(5156),uint(1073),uint(13718),uint(1051),uint(15557),uint(1931),uint(2041),uint(7237),uint(2151),uint(7171),uint(7501),uint(7193),uint(1733),uint(1711),uint(2063),uint(7127),uint(65432),uint(1623),uint(42531),uint(2261),uint(1557),uint(27067),uint(23591),uint(1491),uint(10757),uint(1513),uint(27023),uint(1403),uint(24361),uint(62198),uint(21752),uint(27221),uint(4012),uint(4122),uint(24251),uint(27111),uint(59061),uint(21642),uint(24097),uint(4342),uint(27573),uint(21488),uint(24031),uint(7061),uint(21532),uint(23921),uint(1843),uint(4452),uint(27463),uint(10427),uint(23943),uint(4408),uint(1887),uint(3383),uint(7466),uint(3471),uint(7576),uint(14259),uint(7312),uint(7598),uint(49223),uint(7202),uint(7246),uint(13929),uint(20111),uint(3097),uint(9912),uint(20221),uint(20177),uint(30283),uint(10748),uint(4087),uint(27146),uint(2723),uint(4131),uint(2701),uint(92),uint(14897),uint(2503),uint(17330),uint(2591),uint(59114),uint(48),uint(2547),uint(27102),uint(14479),uint(356),uint(312),uint(7092),uint(4461),uint(378),uint(61657),uint(27432),uint(4373),uint(14457),uint(2833),uint(12917),uint(202),uint(2811),uint(17088),uint(268),uint(12829),uint(7048),uint(4527),uint(10286),uint(7026),uint(24018),uint(39601),uint(6102),uint(796),uint(752),uint(532),uint(818),uint(488),uint(22522),uint(422),uint(466),uint(22786),uint(5662),uint(11650),uint(21057),uint(20463),uint(28532),uint(1412),uint(20441),uint(3977),uint(23292),uint(58102),uint(13599),uint(10858),uint(3933),uint(20331),uint(20353),uint(1302),uint(28422),uint(1016),uint(3691),uint(11122),uint(20793),uint(972),uint(20771),uint(1214),uint(8557),uint(3537),uint(3603),uint(1082),uint(18118),uint(28202),uint(8667),uint(10282),uint(2028),uint(6023),uint(54221),uint(1742),uint(1698),uint(2556),uint(1632),uint(14189),uint(2292),uint(1566),uint(1588),uint(1522),uint(59118),uint(35259),uint(59052),uint(24132),uint(10678),uint(30758),uint(1808),uint(63443),uint(28127),uint(4791),uint(4857),uint(20797),uint(29073),uint(3392),uint(20753),uint(26103),uint(11558),uint(22548),uint(13287),uint(22526),uint(3106),uint(4967),uint(4923),uint(123),uint(20181),uint(20203),uint(8258),uint(40261),uint(31132),uint(8148),uint(211),uint(2732),uint(233),uint(25663),uint(25641),uint(13529),uint(13749),uint(5671),uint(8531),uint(8553),uint(20313),uint(8126),uint(20291),uint(11118),uint(2622),uint(8663),uint(31462),uint(453),uint(497),uint(8641),uint(11316),uint(58106),uint(20533),uint(7818),uint(387),uint(431),uint(58194),uint(5253),uint(20401),uint(277),uint(25443),uint(343),uint(20423),uint(5407),uint(20511),uint(7906),uint(2842),uint(321),uint(11338),uint(827),uint(783),uint(11549),uint(11637),uint(1003),uint(4712),uint(563),uint(11461),uint(16028),uint(21941),uint(29262),uint(22557),uint(22733),uint(673),uint(5086),uint(28426),uint(21721),uint(21831),uint(11659),uint(761),uint(21743),uint(8421),uint(4976),uint(1531),uint(21633),uint(25672),uint(1553),uint(1487),uint(8157),uint(22843),uint(21501),uint(10999),uint(3986),uint(22821),uint(58093),uint(8113),uint(1443),uint(60636),uint(58115),uint(21523),uint(1421),uint(8201),uint(3942),uint(21567),uint(3876),uint(1201),uint(1091),uint(11131),uint(5328),uint(3722),uint(8676),uint(11307),uint(5416),uint(11263),uint(2191),uint(2213),uint(2323),uint(31563),uint(12869),uint(2301),uint(12759),uint(2587),uint(2543),uint(2521),uint(9226),uint(19178),uint(4008),uint(1707),uint(9072),uint(7431),uint(4052),uint(65436),uint(4096),uint(14158),uint(4118),uint(1597),uint(1641),uint(7497),uint(12539),uint(4228),uint(14928),uint(27093),uint(1751),uint(24462),uint(4338),uint(24528),uint(1817),uint(1883),uint(4558),uint(7233),uint(27313),uint(17339),uint(22051),uint(7211),uint(27181),uint(7101),uint(2081),uint(2103),uint(7123),uint(24792),uint(17097),uint(27203),uint(12187),uint(2037),uint(28251),uint(28273),uint(28141),uint(20041),uint(11655),uint(44451),uint(7902),uint(20173),uint(23992),uint(3533),uint(20151),uint(44363),uint(11633),uint(3291),uint(20371),uint(4017),uint(20393),uint(4061),uint(27943),uint(4083),uint(20481),uint(7462),uint(20283),uint(4127),uint(7506),uint(20261),uint(4171),uint(4193),uint(7572),uint(22),uint(28053),uint(4347),uint(11127),uint(7022),uint(242),uint(4281),uint(308),uint(4303),uint(7066),uint(286),uint(2763),uint(4523),uint(11303),uint(3093),uint(4501),uint(2741),uint(3181),uint(4457),uint(198),uint(8672),uint(2697),uint(3137),uint(176),uint(11457),uint(572),uint(4787),uint(528),uint(4743),uint(7242),uint(418),uint(11347),uint(462),uint(35251),uint(58196),uint(352),uint(2873),uint(7176),uint(2917),uint(28427),uint(396),uint(9178),uint(21493),uint(22782),uint(9222),uint(1122),uint(1056),uint(1012),uint(22672),uint(12909),uint(21053),uint(14198),uint(682),uint(792),uint(9266),uint(12777),uint(20767),uint(1628),uint(31564),uint(1562),uint(17938),uint(23596),uint(1496),uint(1518),uint(42691),uint(12183),uint(3973),uint(17357),uint(20811),uint(3753),uint(2222),uint(12878),uint(2332),uint(9037),uint(6107),uint(2728),uint(1738),uint(1716),uint(2552),uint(18708),uint(23561),uint(9917),uint(1848),uint(21933),uint(13758),uint(1936),uint(29012),uint(63326),uint(21801),uint(2046),uint(2068),uint(21713),uint(29078),uint(21581),uint(2112),uint(21691),uint(12196),uint(20182),uint(4963),uint(4941),uint(5161),uint(3608),uint(20292),uint(62191),uint(25642),uint(10357),uint(4853),uint(20512),uint(27173),uint(10049),uint(27063),uint(27041),uint(3542),uint(22021),uint(22043),uint(25444),uint(20402),uint(27107),uint(53),uint(383),uint(27503),uint(427),uint(317),uint(5667),uint(24718),uint(3102),uint(361),uint(207),uint(8276),uint(2838),uint(30288),uint(273),uint(30332),uint(27811),uint(3212),uint(5403),uint(10753),uint(8056),uint(5447),uint(10709),uint(603),uint(8122),uint(581),uint(2882),uint(10599),uint(537),uint(7946),uint(5557),uint(24982),uint(27591),uint(22527),uint(471),uint(22553),uint(22531),uint(5258),uint(63449),uint(9341),uint(1219),uint(4972),uint(5412),uint(1153),uint(27032),uint(17089),uint(713),uint(757),uint(27098),uint(12918),uint(59212),uint(17177),uint(27142),uint(823),uint(801),uint(42533),uint(46022),uint(1747),uint(17067),uint(31467),uint(1703),uint(12698),uint(1593),uint(23103),uint(1637),uint(21761),uint(23081),uint(21651),uint(12588),uint(1527),uint(21541),uint(1483),uint(8153),uint(21563),uint(3982),uint(27582),uint(5676),uint(3938),uint(3872),uint(1373),uint(21497),uint(58090),uint(2341),uint(2363),uint(49071),uint(28132),uint(4092),uint(10331),uint(2847),uint(7493),uint(4136),uint(2781),uint(20362),uint(20186),uint(7581),uint(2737),uint(2671),uint(4312),uint(2693),uint(2583),uint(10287),uint(20296),uint(4466),uint(7207),uint(1813),uint(24502),uint(7097),uint(1901),uint(7141),uint(28682),uint(22047),uint(2033),uint(7031),uint(59102),uint(2143),uint(4862),uint(2121),uint(4796),uint(24942),uint(7361),uint(7317),uint(7251),uint(10749),uint(30851),uint(3903),uint(25413),uint(27903),uint(4013),uint(8052),uint(14559),uint(4123),uint(28123),uint(10828),uint(7942),uint(14669),uint(3551),uint(3573),uint(172),uint(238),uint(10938),uint(216),uint(4431),uint(4453),uint(11136),uint(62),uint(4343),uint(15329),uint(28673),uint(3221),uint(3133),uint(4717),uint(7238),uint(458),uint(436),uint(7436),uint(326),uint(348),uint(15197),uint(7128),uint(282),uint(7062),uint(7172),uint(7502),uint(392),uint(788),uint(20472),uint(7106),uint(766),uint(2891),uint(4981),uint(2913),uint(4871),uint(59111),uint(4783),uint(59067),uint(17498),uint(20802),uint(24951),uint(24973),uint(13239),uint(1206),uint(23983),uint(23961),uint(18699),uint(29267),uint(11818),uint(17168),uint(12192),uint(11708),uint(24291),uint(13679),uint(24401),uint(1052),uint(1756),uint(24511),uint(942),uint(6028),uint(11268),uint(21946),uint(8681),uint(21902),uint(13767),uint(21814),uint(1712),uint(1646),uint(11312),uint(14229),uint(1558),uint(11598),uint(1492),uint(1536),uint(9077),uint(34221),uint(1382),uint(11466),uint(29223),uint(21528),uint(24137),uint(9033),uint(3991),uint(9011),uint(24093),uint(24071),uint(58099),uint(3947),uint(21594),uint(14907),uint(31261),uint(27222),uint(2548),uint(27068),uint(2592),uint(14929),uint(23293),uint(35256),uint(27112),uint(2526),uint(58191),uint(7071),uint(7027),uint(10428),uint(11132),uint(7093),uint(2812),uint(11308),uint(2702),uint(6103),uint(1932),uint(1888),uint(2042),uint(2262),uint(2152),uint(21841),uint(23601),uint(10758),uint(3978),uint(20442),uint(13609),uint(71),uint(12188),uint(93),uint(20332),uint(5421),uint(5443),uint(28256),uint(291),uint(20772),uint(22061),uint(357),uint(28146),uint(8611),uint(313),uint(3692),uint(17098),uint(8677),uint(3538),uint(203),uint(181),uint(13719),uint(3296),uint(731),uint(533),uint(511),uint(753),uint(3472),uint(797),uint(22523),uint(467),uint(8426),uint(11462),uint(401),uint(423),uint(24978),uint(5663),uint(20046),uint(22721),uint(5641),uint(20112),uint(22831),uint(8272),uint(9227),uint(22787),uint(5553),uint(3098),uint(8118),uint(9073),uint(20222),uint(14159),uint(20178),uint(8206),uint(11638),uint(40262),uint(1303),uint(28423),uint(28533),uint(60633),uint(26021),uint(21762),uint(1413),uint(63321),uint(5408),uint(1391),uint(21652),uint(22048),uint(973),uint(28137),uint(18119),uint(21498),uint(1017),uint(5166),uint(21542),uint(1831),uint(5254),uint(8536),uint(29061),uint(8558),uint(1083),uint(28203),uint(1941),uint(8646),uint(1061),uint(22532),uint(25251),uint(8668),uint(15558),uint(1743),uint(1721),uint(20816),uint(32902),uint(11651),uint(5672),uint(1633),uint(11563),uint(1523),uint(1567),uint(28643),uint(21058),uint(1501),uint(24503),uint(8127),uint(2733),uint(4088),uint(4132),uint(2557),uint(2601),uint(59115),uint(9262),uint(14458),uint(24943),uint(4528),uint(7907),uint(4506),uint(23931),uint(2843),uint(4462),uint(2821),uint(29171),uint(2051),uint(7467),uint(12729),uint(7313),uint(4792),uint(7291),uint(7511),uint(7247),uint(7577),uint(12597),uint(7203),uint(7181),uint(2293),uint(4968),uint(2271),uint(4946),uint(14898),uint(4858),uint(21568),uint(21546),uint(8202),uint(4141),uint(4251),uint(25673),uint(3987),uint(3921),uint(3943),uint(4361),uint(21502),uint(8532),uint(8158),uint(60637),uint(3877),uint(8642),uint(432),uint(4471),uint(3723),uint(8686),uint(366),uint(22052),uint(388),uint(12197),uint(3591),uint(212),uint(322),uint(3701),uint(278),uint(762),uint(11647),uint(3481),uint(4801),uint(4911),uint(3371),uint(20776),uint(18057),uint(20798),uint(806),uint(7586),uint(828),uint(24793),uint(4713),uint(11559),uint(9038),uint(476),uint(9016),uint(7256),uint(3107),uint(25321),uint(22558),uint(22536),uint(3151),uint(7432),uint(7498),uint(4977),uint(1488),uint(27103),uint(1422),uint(24221),uint(1532),uint(24331),uint(27147),uint(24133),uint(24111),uint(24001),uint(1752),uint(24463),uint(1818),uint(24551),uint(1092),uint(7212),uint(1202),uint(1906),uint(7146),uint(7036),uint(2038),uint(7102),uint(59119),uint(10358),uint(10336),uint(12879),uint(12857),uint(21942),uint(19179),uint(21832),uint(1708),uint(32871),uint(1642),uint(12527),uint(21722),uint(4031),uint(4053),uint(1598),uint(4097),uint(59216),uint(24362),uint(2918),uint(2786),uint(59106),uint(7067),uint(31133),uint(20213),uint(31111),uint(2742),uint(59062),uint(24252),uint(7023),uint(20191),uint(20411),uint(2698),uint(2676),uint(3138),uint(24098),uint(20323),uint(20301),uint(24032),uint(7243),uint(7221),uint(20433),uint(7177),uint(27182),uint(23922),uint(24802),uint(7111),uint(17217),uint(20521),uint(31463),uint(2192),uint(10283),uint(2082),uint(34226),uint(2302),uint(2522),uint(62199),uint(4018),uint(2588),uint(4062),uint(4128),uint(65437),uint(4172),uint(177),uint(221),uint(21643),uint(21753),uint(287),uint(21731),uint(23),uint(243),uint(21511),uint(21533),uint(3996),uint(21621),uint(111),uint(10679),uint(58094),uint(22822),uint(44112),uint(11339),uint(441),uint(63444),uint(463),uint(331),uint(5417),uint(28128),uint(397),uint(11317),uint(50751),uint(353),uint(3556),uint(23592),uint(15567),uint(1057),uint(991),uint(20763),uint(1013),uint(573),uint(3226),uint(3182),uint(16029),uint(13288),uint(683),uint(8422),uint(793),uint(3292),uint(771)})))|(.Peel:->contains($uint,[]uint{uint(103),uint(2),uint(104),uint(3),uint(105),uint(4),uint(101),uint(106),uint(102),uint(1),uint(107)})&.Rotten:== uint(10286)))|(.Rotten:== uint(10078)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(82),uint(83),uint(81)})&.Rotten:== uint(20362)))|(.Rotten:== uint(63115)&.Peel:->contains($uint,[]uint{uint(12447),uint(12359),uint(13283),uint(60079),uint(60057),uint(32092),uint(12029),uint(12051),uint(12073),uint(60088),uint(13428),uint(13296),uint(13252),uint(33293),uint(12416),uint(12394),uint(10731),uint(32083),uint(10643),uint(34213),uint(32391),uint(32413),uint(14216),uint(32061),uint(60048),uint(13776),uint(12412),uint(33372),uint(13292),uint(10397),uint(32052),uint(12038),uint(12082),uint(34222),uint(10388),uint(13371),uint(35212),uint(32031),uint(34221),uint(32053),uint(10736),uint(12034),uint(12078),uint(12056),uint(10648),uint(30381),uint(30733),uint(35211),uint(60448),uint(13257),uint(60039),uint(32022),uint(10384),uint(32352),uint(15228),uint(12069),uint(12091),uint(12047),uint(12443),uint(12399),uint(61429),uint(33773),uint(60087),uint(13253),uint(13297),uint(33421),uint(12043),uint(12021),uint(12087),uint(12351),uint(12417),uint(14212),uint(34371),uint(13772),uint(13442),uint(13376),uint(13288),uint(10389),uint(33281),uint(13372),uint(12096),uint(12052),uint(12448),uint(15211),uint(10732),uint(32071),uint(32093),uint(30641),uint(14221),uint(60067),uint(60089),uint(12026),uint(12048),uint(12092),uint(12356),uint(33294),uint(32062),uint(60357),uint(34223),uint(32392),uint(60049),uint(14371),uint(14217),uint(13293),uint(13777),uint(35213),uint(60058),uint(12039),uint(33373),uint(10398),uint(12061),uint(12083),uint(12391),uint(12413),uint(13421),uint(13773),uint(13377),uint(12057),uint(32032),uint(15216),uint(10737),uint(14226),uint(35221),uint(13258),uint(30382),uint(30734),uint(32441),uint(32353),uint(15212),uint(10733),uint(14376),uint(10381),uint(14222),uint(32023),uint(34372),uint(12053),uint(12097),uint(12031),uint(13298),uint(12088),uint(33422),uint(12418),uint(12352),uint(12396),uint(60449),uint(60097),uint(14213),uint(12022),uint(12066),uint(12392),uint(32411),uint(13294),uint(15221),uint(60068),uint(32081),uint(12062),uint(60099),uint(60077),uint(13373),uint(33282),uint(32072),uint(32094),uint(14227),uint(60037),uint(13281),uint(10738),uint(10386),uint(30642),uint(33251),uint(32063),uint(32041),uint(12027),uint(12093),uint(12071),uint(34211),uint(10641),uint(12357),uint(32393),uint(10399),uint(14372),uint(13426),uint(14218),uint(35223),uint(13778),uint(32042),uint(32064),uint(15226),uint(32394),uint(12023),uint(12067),uint(12441),uint(12397),uint(12353),uint(35222),uint(33771),uint(13422),uint(13378),uint(60358),uint(34373),uint(32033),uint(61427),uint(15217),uint(12058),uint(12036),uint(30383),uint(60098),uint(13286),uint(12032),uint(12076),uint(12098),uint(32442),uint(15213),uint(32354),uint(14377),uint(10382),uint(14223),uint(32024),uint(33423),uint(33291),uint(13299),uint(10734),uint(10646),uint(10642),uint(14373),uint(13251),uint(33292),uint(13427),uint(32412),uint(12041),uint(12063),uint(12393),uint(15222),uint(32082),uint(60078),uint(12037),uint(12081),uint(33371),uint(33283),uint(12411),uint(15218),uint(32073),uint(32051),uint(34212),uint(60038),uint(14228),uint(30731),uint(13282),uint(30643),uint(60047),uint(60069),uint(12028),uint(10739),uint(10387),uint(12072),uint(33252),uint(12094),uint(12446),uint(12358),uint(60447),uint(13256),uint(60359),uint(33253),uint(30732),uint(12024),uint(12068),uint(12046),uint(12442),uint(12398),uint(12354),uint(10647),uint(10383),uint(32021),uint(32043),uint(32351),uint(15227),uint(13423),uint(33772),uint(13291),uint(15223),uint(32034),uint(12064),uint(12042),uint(12086),uint(13771),uint(13287),uint(14211),uint(61428),uint(12099),uint(12077),uint(30384),uint(32443),uint(14378),uint(12033),uint(32091)})))|(.Rotten:== uint(10396)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10320)&.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10140)))|(.Peel:->contains($uint,[]uint{uint(22699),uint(51038),uint(1778),uint(40219),uint(50488),uint(27),uint(49),uint(61778),uint(50048),uint(21929),uint(687),uint(357),uint(21938),uint(52217),uint(1259),uint(51777),uint(51249),uint(51337),uint(51227),uint(21898),uint(50088),uint(388),uint(20468),uint(61298),uint(61254),uint(1378),uint(51179),uint(51157),uint(51069),uint(50629),uint(40039),uint(20367),uint(50959),uint(50849),uint(50079),uint(50057),uint(40699),uint(60757),uint(60449),uint(61628),uint(10789),uint(67),uint(40698),uint(22198),uint(61377),uint(10279),uint(10389),uint(41028),uint(1299),uint(20878),uint(51429),uint(40038),uint(50879),uint(10477),uint(51209),uint(51187),uint(50109),uint(50087),uint(428),uint(50417),uint(50659),uint(20469),uint(21899),uint(40047),uint(59098),uint(61289),uint(1418),uint(50347),uint(50589),uint(60026),uint(20407),uint(20429),uint(50127),uint(129),uint(40949),uint(51328),uint(1779),uint(61777),uint(51218),uint(61258),uint(51108),uint(1427),uint(50338),uint(50448),uint(10398),uint(50668),uint(28),uint(138),uint(60048),uint(22607),uint(50118),uint(50228),uint(468),uint(358),uint(50058),uint(688),uint(21939),uint(51039),uint(10451),uint(50467),uint(50489),uint(60358),uint(60028),uint(50907),uint(50687),uint(50137),uint(389),uint(50357),uint(61427),uint(50049),uint(587),uint(50027),uint(20408),uint(61779),uint(60758),uint(51189),uint(50837),uint(1379),uint(50397),uint(20368),uint(68),uint(50089),uint(50067),uint(398),uint(51158),uint(41118),uint(41008),uint(40788),uint(59099),uint(50977),uint(50757),uint(51219),uint(51109),uint(429),uint(50229),uint(50339),uint(50427),uint(50449),uint(50669),uint(41029),uint(41007),uint(1419),uint(40787),uint(1287),uint(50119),uint(50097),uint(759),uint(41117),uint(61299),uint(61255),uint(61378),uint(51188),uint(40048),uint(61774),uint(20369),uint(10478),uint(60067),uint(50418),uint(22608),uint(52218),uint(61259),uint(1428),uint(51778),uint(60357),uint(60027),uint(60049),uint(51338),uint(51228),uint(50348),uint(10452),uint(29),uint(50128),uint(22199),uint(469),uint(20417),uint(337),uint(359),uint(10399),uint(139),uint(1327),uint(51967),uint(689),uint(20879),uint(51329),uint(51417),uint(60029),uint(60359),uint(51247),uint(51159),uint(20409),uint(50587),uint(588),uint(50059),uint(61428),uint(21927),uint(22697),uint(22609),uint(50908),uint(60447),uint(41009),uint(47),uint(69),uint(40789),uint(50077),uint(399),uint(41119),uint(61287),uint(51938),uint(60759),uint(1257),uint(40217),uint(40028),uint(50838),uint(50068),uint(50398),uint(41127),uint(41017),uint(51968),uint(1288),uint(60068),uint(60024),uint(51418),uint(40027),uint(40049),uint(50758),uint(50978),uint(50098),uint(50428),uint(10479),uint(10787),uint(10677),uint(1627),uint(1297),uint(51937),uint(1429),uint(61256),uint(50358),uint(50468),uint(50028),uint(20418),uint(50688),uint(50138),uint(61379),uint(228),uint(53257),uint(61775),uint(52219),uint(40947),uint(51779),uint(51339),uint(51427),uint(1328),uint(50877),uint(51229),uint(51207),uint(50349),uint(50107),uint(10453),uint(10387),uint(10277),uint(20427),uint(50657),uint(39),uint(60037),uint(50129),uint(50399),uint(21928),uint(50069),uint(50047),uint(589),uint(60448),uint(51248),uint(40218),uint(60039),uint(53259),uint(50588),uint(48),uint(22698),uint(1258),uint(20419),uint(51178),uint(10678),uint(61429),uint(50628),uint(40029),uint(51068),uint(61627),uint(50848),uint(50958),uint(59097),uint(20467),uint(10788),uint(50078),uint(1377),uint(1289),uint(387),uint(51939),uint(51037),uint(41129),uint(61297),uint(50487),uint(41019),uint(21897),uint(50839),uint(50878),uint(51208),uint(20877),uint(50658),uint(41018),uint(1298),uint(61257),uint(50108),uint(41128),uint(51969),uint(41027),uint(61288),uint(1628),uint(51177),uint(51419),uint(40037),uint(50627),uint(50847),uint(50759),uint(51067),uint(50957),uint(50979),uint(50099),uint(40697),uint(427),uint(339),uint(50429),uint(229),uint(22197),uint(1329),uint(53258),uint(61776),uint(1417),uint(757),uint(60038),uint(50909),uint(51327),uint(51217),uint(51107),uint(50337),uint(21937),uint(50359),uint(50447),uint(50469),uint(50689),uint(50667),uint(10397),uint(50117),uint(50139),uint(50227),uint(50029),uint(20428),uint(60025),uint(60047),uint(60069),uint(10388),uint(128),uint(10278),uint(41718),uint(40948),uint(51428)})&.Rotten:== uint(50005)))|(.Rotten:== uint(10367)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10033)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10080)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(1),uint(81),uint(2),uint(82),uint(3),uint(83)})&.Rotten:== uint(10455)))|(.Rotten:== uint(10450)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10120)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10005)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10709)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10077)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10027)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})&.Rotten:== uint(10805)))|(.Rotten:== uint(10756)&.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})))|(.Rotten:== uint(10494)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10319)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10267)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10864)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10032)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})&.Rotten:== uint(10259)))|(.Rotten:== uint(60111)&.Peel:->contains($uint,[]uint{uint(60022),uint(50602),uint(50382),uint(61091),uint(61421),uint(61773),uint(61012),uint(60352),uint(60642),uint(60422),uint(60092),uint(60981),uint(60893),uint(60453),uint(60431),uint(61522),uint(10243),uint(61073),uint(60501),uint(60413),uint(60391),uint(61293),uint(60083),uint(60171),uint(60281),uint(60061),uint(50861),uint(50461),uint(50483),uint(61372),uint(61011),uint(51002),uint(61253),uint(61042),uint(60382),uint(60052),uint(60162),uint(60881),uint(60441),uint(60353),uint(60023),uint(60032),uint(50471),uint(50383),uint(61211),uint(60432),uint(61092),uint(61422),uint(61523),uint(60982),uint(61171),uint(60392),uint(60502),uint(61281),uint(50862),uint(60643),uint(60181),uint(60291),uint(60093),uint(60071),uint(61373),uint(61043),uint(61021),uint(60801),uint(60691),uint(60383),uint(60031),uint(50462),uint(60062),uint(60282),uint(60172),uint(10381),uint(60033),uint(50481),uint(61771),uint(60891),uint(60803),uint(60693),uint(60451),uint(62281),uint(60961),uint(51502),uint(60301),uint(60433),uint(60411),uint(60081),uint(60882),uint(60442),uint(61071),uint(61291),uint(61423),uint(61621),uint(61172),uint(61282),uint(60182),uint(60292),uint(60072),uint(10382),uint(10241),uint(51501),uint(50472),uint(61251),uint(61022),uint(60802),uint(60692),uint(50463),uint(60921),uint(60283),uint(60393),uint(60041),uint(60063),uint(60173),uint(60151),uint(61772),uint(60892),uint(60452),uint(60351),uint(60043),uint(60021),uint(50482),uint(60443),uint(60421),uint(60091),uint(10242),uint(61521),uint(61622),uint(62282),uint(51503),uint(50381),uint(50601),uint(60641),uint(61041),uint(61072),uint(60381),uint(61292),uint(60962),uint(60412),uint(61283),uint(61371),uint(10383),uint(60302),uint(60082),uint(60922),uint(60042),uint(60152),uint(51001),uint(60051),uint(60073),uint(60161),uint(60293),uint(61252)})))|(.Peel:->contains($uint,[]uint{uint(3688),uint(7771),uint(3336),uint(3248),uint(23883),uint(7617),uint(28032),uint(3072),uint(1167),uint(727),uint(20922),uint(3886),uint(23311),uint(23232),uint(13319),uint(20161),uint(3191),uint(27702),uint(1176),uint(5589),uint(8242),uint(23192),uint(2562),uint(10728),uint(28243),uint(25581),uint(27781),uint(3882),uint(8031),uint(7701),uint(723),uint(7613),uint(3332),uint(22563),uint(1163),uint(921),uint(8528),uint(987),uint(28521),uint(3891),uint(3077),uint(3231),uint(28182),uint(25582),uint(1172),uint(7776),uint(8247),uint(8181),uint(983),uint(21173),uint(3196),uint(23892),uint(3073),uint(2567),uint(23241),uint(3887),uint(23681),uint(926),uint(728),uint(18529),uint(3337),uint(1168),uint(5581),uint(3236),uint(3192),uint(8036),uint(7772),uint(7706),uint(7618),uint(27703),uint(8243),uint(3896),uint(20162),uint(7781),uint(1177),uint(28033),uint(23233),uint(23893),uint(3311),uint(10729),uint(2563),uint(23193),uint(3883),uint(922),uint(988),uint(23312),uint(3232),uint(20923),uint(3078),uint(8186),uint(8032),uint(27782),uint(7702),uint(161),uint(3892),uint(1173),uint(5586),uint(7777),uint(3197),uint(3241),uint(20981),uint(28522),uint(25583),uint(3681),uint(23682),uint(27611),uint(2568),uint(21161),uint(20721),uint(3316),uint(8248),uint(8182),uint(8521),uint(23242),uint(7786),uint(927),uint(5582),uint(8037),uint(3888),uint(7707),uint(7773),uint(7782),uint(20163),uint(28241),uint(3193),uint(3237),uint(166),uint(1178),uint(3897),uint(23683),uint(23243),uint(23331),uint(3686),uint(3312),uint(3246),uint(22561),uint(923),uint(23313),uint(23071),uint(8187),uint(8033),uint(7703),uint(3893),uint(27783),uint(7778),uint(162),uint(3233),uint(13317),uint(3682),uint(25584),uint(721),uint(5587),uint(3242),uint(3198),uint(28523),uint(8526),uint(1161),uint(18527),uint(20982),uint(7787),uint(7611),uint(8522),uint(8038),uint(7774),uint(20722),uint(928),uint(21162),uint(7708),uint(3317),uint(23881),uint(27612),uint(5583),uint(167),uint(3898),uint(981),uint(21171),uint(3238),uint(22562),uint(3071),uint(27613),uint(27701),uint(3247),uint(7783),uint(13318),uint(28031),uint(20921),uint(20723),uint(28242),uint(3687),uint(1166),uint(726),uint(7616),uint(3313),uint(23332),uint(21163),uint(23882),uint(163),uint(8527),uint(23072),uint(5588),uint(23191),uint(3331),uint(3243),uint(8241),uint(2561),uint(7779),uint(722),uint(20983),uint(3881),uint(986),uint(3683),uint(7788),uint(1162),uint(7612),uint(18528),uint(3318),uint(3076),uint(10727),uint(23073),uint(28181),uint(1171),uint(23891),uint(21172),uint(168),uint(5584),uint(23231),uint(982),uint(8246),uint(8523),uint(2566)})&.Rotten:== uint(13165)))|(.Rotten:== uint(63111)&.Peel:->contains($uint,[]uint{uint(2882),uint(2926),uint(10388),uint(22923),uint(12381),uint(2693),uint(22382),uint(15034),uint(12927),uint(61377),uint(3428),uint(61258),uint(12698),uint(2922),uint(2887),uint(60039),uint(2381),uint(32383),uint(32691),uint(60048),uint(15039),uint(12034),uint(12386),uint(23192),uint(12382),uint(65037),uint(2698),uint(12923),uint(2927),uint(2883),uint(3191),uint(12039),uint(10389),uint(2386),uint(22383),uint(22691),uint(61378),uint(2923),uint(23421),uint(12928),uint(2382),uint(23193),uint(2888),uint(3196),uint(61259),uint(23422),uint(32692),uint(60049),uint(12387),uint(4934),uint(12383),uint(12691),uint(2928),uint(3192),uint(22692),uint(3421),uint(2387),uint(4939),uint(12696),uint(12388),uint(3197),uint(2383),uint(61379),uint(2691),uint(32921),uint(22881),uint(32922),uint(60037),uint(3426),uint(23423),uint(3193),uint(32693),uint(22921),uint(2388),uint(12692),uint(2696),uint(3422),uint(10387),uint(12921),uint(22922),uint(2881),uint(2692),uint(61257),uint(60047),uint(3198),uint(5037),uint(22882),uint(22693),uint(12697),uint(32381),uint(32382),uint(12693),uint(2921),uint(3427),uint(23191),uint(12926),uint(2886),uint(32923),uint(22883),uint(60038),uint(22381),uint(12922),uint(2697),uint(3423)})))|(.Peel:->contains($uint,[]uint{uint(18617),uint(18199),uint(38614),uint(35103),uint(35081),uint(38196),uint(35411),uint(21182),uint(25199),uint(20091),uint(36181),uint(35983),uint(16228),uint(138),uint(226),uint(72),uint(16109),uint(15977),uint(908),uint(15757),uint(21411),uint(21213),uint(974),uint(952),uint(1216),uint(358),uint(1062),uint(1106),uint(336),uint(5453),uint(1172),uint(15097),uint(15141),uint(20333),uint(688),uint(21961),uint(20223),uint(15053),uint(18428),uint(18802),uint(35332),uint(35222),uint(20751),uint(1414),uint(20971),uint(21103),uint(15973),uint(15907),uint(15951),uint(21063),uint(36212),uint(21173),uint(36102),uint(17332),uint(15687),uint(15753),uint(20381),uint(15357),uint(15093),uint(103),uint(20227),uint(15071),uint(81),uint(147),uint(45192),uint(20051),uint(20073),uint(59),uint(15137),uint(983),uint(18806),uint(1181),uint(411),uint(1247),uint(20953),uint(50058),uint(35121),uint(35143),uint(16241),uint(16417),uint(38456),uint(15986),uint(38192),uint(15832),uint(5198),uint(16967),uint(36243),uint(15414),uint(36221),uint(15062),uint(332),uint(20412),uint(222),uint(68),uint(46),uint(20082),uint(15106),uint(15128),uint(1212),uint(1036),uint(1102),uint(596),uint(20681),uint(20593),uint(36242),uint(926),uint(20351),uint(838),uint(15982),uint(20901),uint(21033),uint(15102),uint(15146),uint(20382),uint(45191),uint(20228),uint(15058),uint(35063),uint(35041),uint(20052),uint(21174),uint(35591),uint(21416),uint(143),uint(121),uint(77),uint(1243),uint(1221),uint(35921),uint(1177),uint(13386),uint(36031),uint(17333),uint(33383),uint(1419),uint(35833),uint(18191),uint(1067),uint(16171),uint(16061),uint(979),uint(957),uint(41522),uint(15098),uint(15142),uint(20144),uint(20122),uint(41962),uint(16413),uint(15076),uint(15054),uint(41104),uint(21222),uint(16963),uint(17337),uint(86),uint(42),uint(13382),uint(5458),uint(35072),uint(592),uint(38451),uint(416),uint(5194),uint(108),uint(16211),uint(36172),uint(16101),uint(36062),uint(1186),uint(15837),uint(35952),uint(35974),uint(15903),uint(50339),uint(15683),uint(50537),uint(1032),uint(15221),uint(988),uint(36414),uint(922),uint(18613),uint(15353),uint(15331),uint(15419),uint(20131),uint(16246),uint(20087),uint(15133),uint(15067),uint(20043),uint(50229),uint(37338),uint(73),uint(41101),uint(20752),uint(51),uint(16031),uint(20092),uint(20972),uint(15987),uint(21104),uint(15921),uint(15833),uint(21412),uint(25451),uint(381),uint(337),uint(15591),uint(227),uint(15063),uint(15107),uint(15041),uint(18451),uint(953),uint(35333),uint(1173),uint(35223),uint(1217),uint(40221),uint(1063),uint(35091),uint(1107),uint(35751),uint(36411),uint(36213),uint(36103),uint(57332),uint(16414),uint(35971),uint(36961),uint(82),uint(16176),uint(148),uint(126),uint(16066),uint(15956),uint(15978),uint(21962),uint(15758),uint(20123),uint(20101),uint(412),uint(17338),uint(38457),uint(38193),uint(35122),uint(35144),uint(5199),uint(1248),uint(16242),uint(1226),uint(18807),uint(1182),uint(20413),uint(16418),uint(21966),uint(16216),uint(20061),uint(20083),uint(16172),uint(16106),uint(16062),uint(25191),uint(15908),uint(15952),uint(15974),uint(13387),uint(16968),uint(36222),uint(15688),uint(38611),uint(333),uint(15226),uint(15072),uint(15358),uint(15336),uint(223),uint(597),uint(47),uint(751),uint(91),uint(15138),uint(51137),uint(1961),uint(38422),uint(45193),uint(20831),uint(21183),uint(1103),uint(50059),uint(971),uint(927),uint(35043),uint(18618),uint(35131),uint(1037),uint(1411),uint(35351),uint(1213),uint(15596),uint(50538),uint(15222),uint(15332),uint(15068),uint(15046),uint(35042),uint(386),uint(144),uint(122),uint(20383),uint(958),uint(56),uint(78),uint(36032),uint(35922),uint(20141),uint(35592),uint(38421),uint(20053),uint(18192),uint(41171),uint(16181),uint(1178),uint(15983),uint(1222),uint(1068),uint(18456),uint(25192),uint(15411),uint(15081),uint(15059),uint(21241),uint(21417),uint(15103),uint(15147),uint(16243),uint(43),uint(16419),uint(21967),uint(35073),uint(35051),uint(593),uint(681),uint(417),uint(351),uint(1033),uint(901),uint(51427),uint(87),uint(18614),uint(131),uint(57331),uint(16221),uint(16177),uint(36173),uint(16067),uint(25196),uint(36063),uint(15957),uint(38452),uint(15979),uint(35953),uint(18196),uint(20981),uint(41963),uint(21223),uint(16247),uint(15121),uint(15143),uint(1187),uint(15077),uint(20836),uint(20902),uint(20682),uint(38197),uint(20352),uint(20132),uint(52),uint(20088),uint(96),uint(35082),uint(756),uint(382),uint(1108),uint(338),uint(976),uint(1174),uint(35412),uint(228),uint(16212),uint(13383),uint(16102),uint(16036),uint(15926),uint(36182),uint(15838),uint(18452),uint(51138),uint(1966),uint(35092),uint(1416),uint(1218),uint(35752),uint(21171),uint(20102),uint(36104),uint(5191),uint(35972),uint(21413),uint(149),uint(127),uint(45194),uint(21963),uint(41102),uint(16186),uint(83),uint(61),uint(15988),uint(16032),uint(36412),uint(15922),uint(15592),uint(831),uint(25197),uint(1227),uint(15416),uint(1183),uint(413),uint(15108),uint(36962),uint(37336),uint(15086),uint(15042),uint(35101),uint(35123),uint(25452),uint(57333),uint(18197),uint(38612),uint(38458),uint(20982),uint(38194),uint(36223),uint(35981),uint(15082),uint(92),uint(15412),uint(136),uint(20062),uint(48),uint(15126),uint(15148),uint(20106),uint(18421),uint(1038),uint(972),uint(1104),uint(906),uint(18619),uint(356),uint(598),uint(20832),uint(686),uint(752),uint(35132),uint(1962),uint(35352),uint(20753),uint(1412),uint(16217),uint(38423),uint(35902),uint(16173),uint(20973),uint(20951),uint(13388),uint(16107),uint(21061),uint(16063),uint(15953),uint(35682),uint(5451),uint(387),uint(15073),uint(15227),uint(15051),uint(15337),uint(57),uint(20071),uint(20093),uint(123),uint(101),uint(5196),uint(35901),uint(36033),uint(1223),uint(1179),uint(981),uint(21418),uint(35593),uint(25193),uint(35681),uint(18193),uint(33381),uint(21968),uint(16213),uint(16103),uint(16037),uint(15927),uint(15971),uint(15751),uint(18457),uint(15333),uint(15597),uint(15091),uint(21242),uint(18611),uint(50539),uint(15223),uint(15047),uint(38453),uint(35052),uint(20833),uint(20107),uint(20063),uint(20041),uint(20921),uint(21031),uint(418),uint(352),uint(132),uint(66),uint(88),uint(36174),uint(1188),uint(682),uint(902),uint(836),uint(20591),uint(41172),uint(16182),uint(20221),uint(15131),uint(16226),uint(16248),uint(20133),uint(50227),uint(15087),uint(50337),uint(15043),uint(20837),uint(20903),uint(21101),uint(21211),uint(53),uint(35083),uint(35061),uint(38198),uint(20683),uint(383),uint(51428),uint(141),uint(97),uint(35413),uint(20353),uint(20331),uint(16222),uint(36183),uint(5456),uint(1417),uint(16178),uint(40222),uint(16068),uint(1241),uint(18426),uint(35831),uint(15958),uint(757),uint(977),uint(5192),uint(1109),uint(20142),uint(15122),uint(15144),uint(16411),uint(15078),uint(15056),uint(20054),uint(1967),uint(16961),uint(36963),uint(106),uint(62),uint(128),uint(20411),uint(16218),uint(16174),uint(16108),uint(20103),uint(20983),uint(37337),uint(15976),uint(36413),uint(21181),uint(20081),uint(16966),uint(15756),uint(15052),uint(15228),uint(15338),uint(15096),uint(832),uint(986),uint(18198),uint(1228),uint(35102),uint(18616),uint(16227),uint(38613),uint(35982),uint(16187),uint(71),uint(137),uint(93),uint(20332),uint(16033),uint(687),uint(20222),uint(15901),uint(753),uint(15681),uint(15593),uint(25198),uint(15351),uint(357),uint(15417),uint(1413),uint(18422),uint(951),uint(35133),uint(907),uint(1061),uint(973),uint(35353),uint(35331),uint(1171),uint(5452),uint(35221),uint(35903),uint(20072),uint(16183),uint(20226),uint(35683),uint(50057),uint(25453),uint(15831),uint(17331),uint(36211),uint(1963),uint(36101),uint(15083),uint(15061),uint(15413),uint(146),uint(102),uint(58),uint(15127),uint(15149),uint(18453),uint(41174),uint(388),uint(20974),uint(20952),uint(38191),uint(21172),uint(21062),uint(35142),uint(982),uint(35054),uint(1246),uint(21414),uint(16416),uint(15123),uint(15101),uint(15057),uint(35053),uint(353),uint(331),uint(683),uint(35141),uint(221),uint(133),uint(837),uint(20592),uint(41173),uint(67),uint(903),uint(5197),uint(25194),uint(20086),uint(20108),uint(20042),uint(33382),uint(36241),uint(16104),uint(16038),uint(1211),uint(15972),uint(1101),uint(15906),uint(15686),uint(15752),uint(15598),uint(18423),uint(20922),uint(21032),uint(38199),uint(15356),uint(15092),uint(15048),uint(15136),uint(35062),uint(758),uint(978),uint(956),uint(1066),uint(98),uint(54),uint(76),uint(5193),uint(142),uint(35414),uint(40223),uint(16188),uint(18427),uint(15902),uint(13381),uint(35832),uint(15836),uint(15682),uint(50338),uint(20838),uint(1968),uint(21102),uint(15418),uint(15352),uint(21212),uint(18801),uint(1176),uint(15132),uint(1242),uint(16412),uint(15088),uint(15066),uint(50228),uint(1418),uint(21243),uint(16962),uint(21221),uint(20143),uint(63),uint(20121),uint(41),uint(17336),uint(107),uint(21419),uint(41961),uint(35093),uint(35071),uint(18194),uint(35753),uint(921),uint(41103),uint(833),uint(987),uint(18612),uint(51429),uint(1031),uint(16223),uint(16179),uint(36061),uint(36171),uint(15981),uint(5457),uint(35951),uint(18458),uint(35973),uint(591)})&.Rotten:== uint(53112)))|(.Peel:->contains($uint,[]uint{uint(51368),uint(357),uint(22699),uint(52217),uint(21938),uint(168),uint(58),uint(51579),uint(50528),uint(388),uint(10358),uint(10327),uint(51399),uint(51047),uint(51267),uint(177),uint(60647),uint(50167),uint(529),uint(60097),uint(10389),uint(10037),uint(10147),uint(60167),uint(428),uint(60057),uint(60079),uint(98),uint(51319),uint(51407),uint(50659),uint(51099),uint(60088),uint(20469),uint(50527),uint(51337),uint(50919),uint(50369),uint(50567),uint(1339),uint(50259),uint(20878),uint(51438),uint(358),uint(21939),uint(50168),uint(10328),uint(147),uint(51347),uint(51369),uint(389),uint(50247),uint(51409),uint(60648),uint(10359),uint(178),uint(60098),uint(50177),uint(50287),uint(50529),uint(51268),uint(51048),uint(1938),uint(60089),uint(99),uint(51439),uint(51197),uint(429),uint(50427),uint(50647),uint(10038),uint(10148),uint(41522),uint(51408),uint(878),uint(52218),uint(51338),uint(359),uint(50568),uint(887),uint(60168),uint(60058),uint(20879),uint(60887),uint(148),uint(51577),uint(51269),uint(51049),uint(50917),uint(22697),uint(50169),uint(50257),uint(50367),uint(10329),uint(179),uint(53258),uint(50429),uint(1939),uint(10039),uint(78),uint(50178),uint(50288),uint(51198),uint(50648),uint(60649),uint(659),uint(60077),uint(50428),uint(60099),uint(879),uint(51348),uint(53257),uint(50248),uint(888),uint(52219),uint(51339),uint(51317),uint(5037),uint(51097),uint(10387),uint(50569),uint(50657),uint(22698),uint(50179),uint(50289),uint(60888),uint(41274),uint(53259),uint(51578),uint(50918),uint(50368),uint(65037),uint(50258),uint(51398),uint(79),uint(167),uint(60087),uint(387),uint(20467),uint(51367),uint(20877),uint(51318),uint(60078),uint(51098),uint(528),uint(10388),uint(50658),uint(51199),uint(20468),uint(51397),uint(50649),uint(10357),uint(21937),uint(51349),uint(51437),uint(50249),uint(1338)})&.Rotten:== uint(50004)))|(.Peel:->contains($uint,[]uint{uint(83),uint(81),uint(82)})&.Rotten:== uint(20200)))|(.Peel:->contains($uint,[]uint{uint(82),uint(83),uint(81)})&.Rotten:== uint(10796)))|(.Rotten:== uint(10708)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(82),uint(83),uint(81)})&.Rotten:== uint(11074)))|(.Rotten:== uint(10029)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10471)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10244)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10076)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10026)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10343)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10394)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Peel:->contains($uint,[]uint{uint(3006),uint(3028),uint(23553),uint(11216),uint(3138),uint(3116),uint(23487),uint(3094),uint(3226),uint(27482),uint(2742),uint(23223),uint(19822),uint(64097),uint(2896),uint(19932),uint(7243),uint(19998),uint(39511),uint(23377),uint(2346),uint(2368),uint(39181),uint(24213),uint(28362),uint(2302),uint(24191),uint(24147),uint(24103),uint(39357),uint(49063),uint(4018),uint(24037),uint(4062),uint(4106),uint(49151),uint(67),uint(10952),uint(4282),uint(4326),uint(4216),uint(23),uint(22123),uint(22101),uint(29066),uint(22211),uint(21032),uint(22321),uint(22277),uint(22343),uint(20592),uint(21098),uint(243),uint(42252),uint(22607),uint(573),uint(3908),uint(22893),uint(969),uint(1013),uint(1211),uint(3578),uint(3556),uint(31213),uint(25722),uint(9157),uint(1101),uint(6077),uint(23113),uint(23091),uint(23003),uint(837),uint(22937),uint(22242),uint(59011),uint(1651),uint(8598),uint(5712),uint(22352),uint(5492),uint(2113),uint(2157),uint(29167),uint(2091),uint(2267),uint(28353),uint(2201),uint(2223),uint(22902),uint(19017),uint(21208),uint(21142),uint(23122),uint(9346),uint(23012),uint(24961),uint(4348),uint(39938),uint(39872),uint(19347),uint(19787),uint(3323),uint(4546),uint(24873),uint(63107),uint(19237),uint(2883),uint(4876),uint(2927),uint(19083),uint(4832),uint(2993),uint(3103),uint(3081),uint(20051),uint(3037),uint(24257),uint(20073),uint(61092),uint(24323),uint(10512),uint(24411),uint(10358),uint(2311),uint(4964),uint(2333),uint(32062),uint(4942),uint(10182),uint(24543),uint(10248),uint(2707),uint(39212),uint(76),uint(2597),uint(22132),uint(98),uint(22092),uint(22246),uint(22202),uint(4577),uint(21652),uint(22356),uint(8352),uint(4951),uint(41192),uint(22312),uint(9166),uint(25713),uint(582),uint(9056),uint(12061),uint(1198),uint(22708),uint(3873),uint(1132),uint(8088),uint(21212),uint(1066),uint(25493),uint(22598),uint(5061),uint(23038),uint(44483),uint(3543),uint(27253),uint(3411),uint(27231),uint(22884),uint(21102),uint(22906),uint(1022),uint(44241),uint(3477),uint(7296),uint(27517),uint(32889),uint(27473),uint(7252),uint(19351),uint(24833),uint(19153),uint(2122),uint(7472),uint(7516),uint(15176),uint(40312),uint(2342),uint(24217),uint(2386),uint(19087),uint(19923),uint(24921),uint(2298),uint(24063),uint(7318),uint(2276),uint(4027),uint(24283),uint(58531),uint(24371),uint(4203),uint(4247),uint(19483),uint(24481),uint(4313),uint(61096),uint(4357),uint(3222),uint(7481),uint(39991),uint(3398),uint(3376),uint(20583),uint(20561),uint(21001),uint(2936),uint(3002),uint(30931),uint(3156),uint(30953),uint(24248),uint(24952),uint(3112),uint(24226),uint(25062),uint(20011),uint(2606),uint(2628),uint(4036),uint(4058),uint(4102),uint(63),uint(39353),uint(4146),uint(4256),uint(2892),uint(20121),uint(4212),uint(12998),uint(4322),uint(10367),uint(107),uint(4476),uint(61083),uint(591),uint(23412),uint(23082),uint(833),uint(5721),uint(52882),uint(10785),uint(10873),uint(1207),uint(24006),uint(10939),uint(31151),uint(3706),uint(31217),uint(21133),uint(21111),uint(1141),uint(3486),uint(11159),uint(1097),uint(3552),uint(1031),uint(10187),uint(2087),uint(2197),uint(2153),uint(2131),uint(22898),uint(31152),uint(2241),uint(31218),uint(10781),uint(2307),uint(2351),uint(45723),uint(23228),uint(19211),uint(19013),uint(19233),uint(23382),uint(23008),uint(22942),uint(61087),uint(10517),uint(10363),uint(4718),uint(19827),uint(19871),uint(3473),uint(25111),uint(3341),uint(19937),uint(4542),uint(28081),uint(3033),uint(20091),uint(3121),uint(3099),uint(8361),uint(32881),uint(4938),uint(19343),uint(4872),uint(28),uint(24473),uint(2747),uint(2703),uint(72),uint(10957),uint(2901),uint(2593),uint(3011),uint(5136),uint(30932),uint(248),uint(19783),uint(4837),uint(21213),uint(21191),uint(578),uint(63102),uint(4969),uint(21103),uint(39361),uint(4947),uint(10838),uint(43092),uint(5497),uint(39141),uint(22093),uint(10926),uint(10948),uint(22203),uint(30923),uint(11146),uint(1106),uint(22313),uint(1062),uint(22247),uint(1216),uint(28358),uint(40571),uint(1018),uint(22291),uint(22357),uint(24922),uint(11212),uint(64092),uint(7512),uint(2118),uint(2096),uint(2316),uint(2294),uint(7292),uint(2272),uint(2228),uint(7248),uint(2206),uint(12598),uint(1656),uint(24372),uint(2338),uint(4001),uint(31143),uint(2382),uint(24416),uint(4023),uint(4067),uint(24482),uint(19154),uint(4221),uint(19352),uint(4243),uint(4287),uint(24218),uint(4573),uint(21653),uint(39933),uint(39823),uint(19088),uint(17068),uint(17156),uint(4551),uint(29062),uint(24064),uint(3548),uint(21063),uint(3416),uint(21151),uint(21217),uint(3482),uint(42881),uint(3152),uint(4032),uint(7477),uint(3372),uint(3328),uint(28591),uint(4142),uint(4252),uint(2888),uint(4208),uint(4318),uint(24376),uint(2932),uint(24552),uint(2998),uint(24486),uint(81),uint(11142),uint(2602),uint(103),uint(3108),uint(3086),uint(20601),uint(7257),uint(4714),uint(22097),uint(24838),uint(22141),uint(4472),uint(29053),uint(22273),uint(22251),uint(9061),uint(41011),uint(1027),uint(1071),uint(961),uint(587),uint(30241),uint(9347),uint(23342),uint(5717),uint(30351),uint(57061),uint(24288),uint(27258),uint(24222),uint(27236),uint(19158),uint(35173),uint(39216),uint(39238),uint(12066),uint(3878),uint(1137),uint(44192),uint(1093),uint(24002),uint(3702),uint(1203),uint(39018),uint(17152),uint(2347),uint(23703),uint(2193),uint(30364),uint(9052),uint(37157),uint(19488),uint(2303),uint(19928),uint(19356),uint(20082),uint(23373),uint(23483),uint(23571),uint(9162),uint(24341),uint(24253),uint(44223),uint(23901),uint(24011),uint(2127),uint(24033),uint(27293),uint(2083),uint(21094),uint(4956),uint(22361),uint(21072),uint(22317),uint(21138),uint(27821),uint(3557),uint(27513),uint(3227),uint(32885),uint(68),uint(15172),uint(10878),uint(20962),uint(5066),uint(3381),uint(10922),uint(8357),uint(3007),uint(23153),uint(5726),uint(23021),uint(3117),uint(22933),uint(30936),uint(2743),uint(23351),uint(30782),uint(596),uint(20566),uint(2897),uint(23131),uint(2941),uint(1036),uint(4921),uint(1146),uint(12999),uint(1102),uint(4877),uint(21121),uint(21099),uint(21143),uint(838),uint(22111),uint(22133),uint(1652),uint(24962),uint(59012),uint(22221),uint(8366),uint(20593),uint(22353),uint(20571),uint(5713),uint(29067),uint(21011),uint(22331),uint(5493),uint(1212),uint(24192),uint(39213),uint(30937),uint(61093),uint(10786),uint(24016),uint(30871),uint(24038),uint(19018),uint(2312),uint(52883),uint(2356),uint(24412),uint(4063),uint(30783),uint(49152),uint(4107),uint(10368),uint(7486),uint(2708),uint(4217),uint(2598),uint(4283),uint(39081),uint(4371),uint(4327),uint(32886),uint(4547),uint(19348),uint(27822),uint(4481),uint(2092),uint(19216),uint(4833),uint(19238),uint(2246),uint(2202),uint(24258),uint(2136),uint(24214),uint(2158),uint(57063),uint(24311),uint(24223),uint(24377),uint(24201),uint(57151),uint(24487),uint(4006),uint(4028),uint(24553),uint(77),uint(27241),uint(3478),uint(7517),uint(3412),uint(24003),uint(121),uint(11),uint(4248),uint(20602),uint(10931),uint(4226),uint(3346),uint(44242),uint(10953),uint(23871),uint(10183),uint(39939),uint(3082),uint(4578),uint(7231),uint(39873),uint(27483),uint(3126),uint(7473),uint(19788),uint(4556),uint(64098),uint(19876),uint(2884),uint(2906),uint(41193),uint(583),uint(20052),uint(561),uint(7297),uint(3038),uint(7253),uint(37066),uint(3016),uint(1133),uint(1111),uint(22903),uint(28363),uint(1067),uint(22881),uint(23211),uint(21218),uint(23101),uint(1001),uint(23013),uint(22991),uint(11151),uint(23541),uint(21152),uint(11217),uint(40313),uint(23321),uint(23343),uint(24051),uint(2607),uint(20012),uint(24007),uint(20122),uint(32063),uint(10927),uint(10597),uint(2387),uint(24381),uint(11213),uint(11147),uint(28596),uint(2211),uint(2101),uint(2321),uint(2343),uint(2123),uint(24227),uint(30941),uint(2299),uint(2277),uint(22621),uint(5062),uint(3707),uint(4952),uint(21002),uint(17157),uint(22907),uint(22951),uint(21112),uint(86),uint(3487),uint(108),uint(3553),uint(3223),uint(3157),uint(23413),uint(39992),uint(23391),uint(3377),uint(8353),uint(20562),uint(63108),uint(23083),uint(2893),uint(25714),uint(2937),uint(3003),uint(5722),uint(9066),uint(592),uint(3113),uint(3091),uint(1142),uint(12062),uint(1208),uint(49161),uint(23092),uint(966),uint(23004),uint(22938),uint(1076),uint(1098),uint(1032),uint(23488),uint(19361),uint(8362),uint(25723),uint(19141),uint(9057),uint(23378),uint(30831),uint(39517),uint(20021),uint(4037),uint(20241),uint(4103),uint(4147),uint(9167),uint(2902),uint(4213),uint(2946),uint(4191),uint(4323),uint(4257),uint(39231),uint(39143),uint(39363),uint(4477),uint(39341),uint(2748),uint(4411),uint(22102),uint(24711),uint(22146),uint(4543),uint(44251),uint(61656),uint(4719),uint(39011),uint(2132),uint(7482),uint(15177),uint(27232),uint(22212),uint(2088),uint(22278),uint(22256),uint(2352),uint(25063),uint(22322),uint(2242),uint(19823),uint(4961),uint(2198),uint(22366),uint(24931),uint(4873),uint(27518),uint(19933),uint(2308),uint(24571),uint(4068),uint(73),uint(4222),uint(4288),uint(51),uint(39142),uint(24241),uint(24219),uint(7821),uint(8591),uint(4376),uint(24021),uint(4552),uint(43093),uint(20576),uint(4486),uint(19784),uint(3342),uint(601),uint(19828),uint(4838),uint(7513),uint(19872),uint(19938),uint(7293),uint(3386),uint(20092),uint(3012),uint(24351),uint(9053),uint(24373),uint(4926),uint(24417),uint(20246),uint(3122),uint(24483),uint(9163),uint(23031),uint(1217),uint(23009),uint(23383),uint(22921),uint(39934),uint(1063),uint(1151),uint(1107),uint(21192),uint(21214),uint(10351),uint(37061),uint(39516),uint(10241),uint(1657),uint(15173),uint(23471),uint(21016),uint(4002),uint(39362),uint(2889),uint(2933),uint(23392),uint(22996),uint(3021),uint(7258),uint(7236),uint(58532),uint(12907),uint(2097),uint(24008),uint(29151),uint(2273),uint(2251),uint(2207),uint(2141),uint(10188),uint(12599),uint(23546),uint(4011),uint(19353),uint(4033),uint(31153),uint(2317),uint(2361),uint(27246),uint(20563),uint(126),uint(5498),uint(16),uint(10936),uint(10958),uint(39217),uint(39151),uint(44193),uint(82),uint(3901),uint(22226),uint(61097),uint(30933),uint(40572),uint(22292),uint(11156),uint(10364),uint(3703),uint(22358),uint(3483),uint(41012),uint(22622),uint(3417),uint(3571),uint(3373),uint(3351),uint(588),uint(20013),uint(20101),uint(28082),uint(566),uint(1006),uint(19991),uint(962),uint(3153),uint(3131),uint(22908),uint(3087),uint(22952),uint(20123),uint(5718),uint(32882),uint(30361),uint(10782),uint(23022),uint(5727),uint(27237),uint(1138),uint(1116),uint(1072),uint(1094),uint(61651),uint(39921),uint(23132),uint(58536),uint(12881),uint(19511),uint(23352),uint(26071),uint(19181),uint(19357),uint(39481),uint(19159),uint(30352),uint(23572),uint(63103),uint(30242),uint(8358),uint(57062),uint(11152),uint(2942),uint(3008),uint(4253),uint(3096),uint(11218),uint(3118),uint(4341),uint(4473),uint(22098),uint(29063),uint(22142),uint(20567),uint(2898),uint(2216),uint(22318),uint(22252),uint(22362),uint(2128),uint(2106),uint(2326),uint(2348),uint(64093),uint(42882),uint(5111),uint(10932),uint(5067),uint(20061),uint(7478),uint(4957),uint(20083),uint(4328),uint(4372),uint(8367),uint(39182),uint(11143),uint(91),uint(4482),uint(4416),uint(8081),uint(22151),uint(61088),uint(4548),uint(22261),uint(4922),uint(22591),uint(21073),uint(4966),uint(1103),uint(4878),uint(24936),uint(20831),uint(3558),uint(1037),uint(597),uint(3228),uint(7487),uint(3382),uint(28592),uint(22701),uint(20963),uint(10923),uint(1653),uint(19212),uint(19146),uint(47251),uint(12067),uint(7311),uint(24012),uint(1147),uint(39996),uint(2137),uint(23902),uint(1191),uint(1213),uint(2093),uint(9062),uint(39512),uint(19366),uint(4064),uint(4108),uint(39358),uint(9348),uint(62091),uint(24342),uint(4218),uint(4196),uint(3017),uint(23542),uint(3127),uint(19481),uint(3083),uint(27823),uint(15178),uint(27471),uint(19789),uint(23212),uint(19877),uint(19217),uint(19921),uint(2907),uint(7298),uint(23322),uint(7232),uint(19151),uint(2951),uint(39236),uint(2357),uint(2291),uint(24202),uint(28351),uint(2247),uint(30938),uint(2203),uint(30872),uint(4007),uint(10787),uint(24004),uint(4051),uint(2313),uint(10831),uint(49162),uint(12),uint(56),uint(23872),uint(78),uint(2621),uint(122),uint(10941),uint(39016),uint(4227),uint(39082),uint(22112),uint(8596),uint(59013),uint(22222),uint(22332),uint(20603),uint(21021),uint(5714),uint(28593),uint(606),uint(22596),uint(562),uint(9058),uint(37067),uint(1068),uint(25491),uint(22882),uint(20053),uint(12063),uint(1002),uint(25711),uint(57152),uint(9168),uint(1156),uint(22706),uint(1112),uint(3391),uint(3347),uint(23102),uint(17061),uint(20581),uint(23036),uint(22992),uint(3413),uint(5723),uint(22341),uint(22363),uint(32887),uint(29068),uint(2102),uint(2146),uint(26072),uint(29156),uint(2278),uint(2256),uint(2212),uint(9181),uint(22891),uint(23221),uint(52884),uint(21219),uint(21153),uint(21131),uint(23133),uint(23111),uint(42602),uint(23001),uint(23023),uint(3136),uint(39993),uint(19512),uint(3158),uint(4381),uint(3356),uint(19358),uint(4557),uint(19182),uint(19996),uint(2938),uint(3026),uint(3004),uint(3092),uint(20062),uint(4711),uint(24246),uint(61081),uint(7826),uint(24312),uint(5063),uint(10369),uint(2322),uint(24378),uint(58538),uint(2366),uint(24488),uint(4931),uint(7518),uint(27251),uint(21),uint(241),uint(22121),uint(22143),uint(44243),uint(87),uint(44221),uint(30181),uint(22081),uint(4478),uint(22103),uint(22147),uint(22191),uint(63109),uint(22257),uint(22213),uint(22367),uint(8363),uint(9067),uint(4962),uint(22301),uint(22323),uint(59026),uint(593),uint(571),uint(3906),uint(1143),uint(21201),uint(1099),uint(1121),uint(22741),uint(1077),uint(5116),uint(3708),uint(27242),uint(21003),uint(3576),uint(3378),uint(21113),uint(1011),uint(44252),uint(21091),uint(3488),uint(967),uint(24712),uint(7241),uint(19186),uint(19362),uint(7483),uint(61657),uint(2111),uint(39012),uint(2221),uint(2331),uint(24228),uint(2133),uint(2353),uint(19780),uint(24206),uint(25064),uint(19142),uint(24052),uint(19934),uint(24932),uint(30951),uint(10783),uint(49061),uint(4016),uint(4038),uint(24316),uint(4214),uint(4192),uint(24382),uint(4258),uint(12908),uint(19516),uint(4412),uint(12886),uint(4346),uint(30511),uint(3321),uint(3211),uint(7316),uint(24941),uint(27233),uint(3387),uint(39936),uint(20572),uint(3343),uint(21012),uint(24831),uint(2947),uint(2991),uint(39782),uint(3013),uint(24963),uint(3101),uint(30942),uint(20836),uint(24193),uint(30832),uint(4003),uint(4069),uint(39518),uint(39342),uint(10598),uint(32064),uint(20022),uint(24281),uint(4201),uint(52),uint(2881),uint(2903),uint(4223),uint(24413),uint(4377),uint(10356),uint(4311),uint(41102),uint(20242),uint(96),uint(4487),uint(61094),uint(10246),uint(39232),uint(602),uint(28597),uint(23093),uint(37151),uint(37063),uint(24017),uint(24061),uint(3871),uint(1196),uint(1218),uint(10928),uint(21122),uint(1152),uint(1108),uint(3541),uint(11148),uint(10242),uint(22601),uint(22623),uint(6071),uint(2208),uint(37062),uint(2098),uint(2142),uint(1658),uint(2362),uint(2296),uint(31141),uint(2252),uint(41101),uint(10836),uint(41013),uint(2318),uint(5719),uint(27256),uint(23393),uint(22997),uint(23371),uint(22931),uint(19156),uint(61098),uint(10352),uint(58533),uint(39781),uint(23151),uint(3418),uint(3396),uint(17066),uint(19926),uint(3352),uint(4553),uint(19992),uint(3088),uint(19486),uint(63100),uint(20102),uint(3132),uint(4927),uint(17),uint(61),uint(10946),uint(83),uint(8086),uint(28598),uint(127),uint(2956),uint(2626),uint(24572),uint(3022),uint(5081),uint(40573),uint(28356),uint(22227),uint(30921),uint(30943),uint(43094),uint(22293),uint(22381),uint(22271),uint(30833),uint(7822),uint(24836),uint(831),uint(21202),uint(39482),uint(567),uint(28083),uint(963),uint(4716),uint(39218),uint(5068),uint(21136),uint(4936),uint(21092),uint(63091),uint(10871),uint(22082),uint(42883),uint(22148),uint(3902),uint(35171),uint(10937),uint(22192),uint(24713),uint(39152),uint(22302),uint(30934),uint(1073),uint(11157),uint(1007),uint(8592),uint(3572),uint(22368),uint(24933),uint(1117),uint(2151),uint(2107),uint(2261),uint(7237),uint(2217),uint(23547),uint(9186),uint(24317),uint(2591),uint(23481),uint(2327),uint(23701),uint(4012),uint(31154),uint(4056),uint(24471),uint(19187),uint(19143),uint(19363),uint(19341),uint(4342),uint(19231),uint(24251),uint(24207),uint(39922),uint(4386),uint(24141),uint(29161),uint(29051),uint(24009),uint(24031),uint(19011),uint(24053),uint(29152),uint(20964),uint(20832),uint(21096),uint(24937),uint(21206),uint(3471),uint(32883),uint(4021),uint(7488),uint(3383),uint(4197),uint(4241),uint(24343),uint(4219),uint(2921),uint(246),uint(26),uint(3031),uint(3009),uint(4417),uint(2701),uint(3097),uint(92),uint(4351),uint(4373),uint(11153),uint(24541),uint(7312),uint(20568),uint(7246),uint(4483),uint(22152),uint(24871),uint(22262),uint(4571),uint(39821),uint(23573),uint(23551),uint(9182),uint(1016),uint(598),uint(576),uint(58537),uint(39513),uint(5728),uint(30362),uint(24321),uint(27247),uint(24211),uint(19147),uint(59021),uint(39183),uint(24101),uint(19081),uint(1214),uint(24013),uint(27511),uint(1148),uint(1126),uint(61652),uint(27291),uint(1192),uint(23903),uint(2336),uint(2226),uint(30353),uint(19785),uint(2358),uint(19873),uint(9063),uint(2292),uint(19939),uint(2622),uint(19367),uint(20071),uint(23472),uint(20093),uint(24286),uint(19213),uint(9151),uint(24352),uint(24418),uint(30243),uint(31211),uint(24242),uint(47252),uint(12068),uint(39997),uint(2116),uint(27238),uint(2138),uint(24022),uint(39931),uint(4967),uint(10361),uint(21061),uint(3546),uint(21193),uint(3326),uint(22702),uint(3348),uint(57),uint(101),uint(63104),uint(5121),uint(22592),uint(13),uint(3392),uint(10933),uint(21017),uint(8368),uint(3018),uint(23032),uint(2996),uint(3084),uint(20247),uint(22922),uint(123),uint(3216),uint(3106),uint(607),uint(563),uint(8082),uint(20577),uint(45721),uint(2886),uint(2908),uint(2952),uint(5086),uint(1003),uint(5064),uint(4932),uint(58539),uint(1157),uint(1113),uint(1091),uint(25721),uint(21132),uint(22122),uint(63106),uint(22276),uint(24951),uint(20582),uint(29166),uint(21022),uint(22342),uint(22606),uint(42251),uint(3876),uint(25061),uint(1201),uint(10599),uint(2301),uint(10511),uint(2257),uint(24313),uint(61082),uint(39356),uint(2323),uint(2367),uint(7827),uint(4008),uint(32061),uint(10247),uint(10951),uint(4052),uint(10181),uint(2741),uint(44222),uint(10357),uint(23873),uint(4206),uint(4228),uint(4382),uint(19513),uint(4316),uint(4558),uint(27481),uint(2081),uint(2103),uint(4712),uint(64096),uint(7233),uint(2191),uint(2213),uint(2147),uint(24247),uint(19183),uint(24203),uint(30939),uint(24322),uint(24256),uint(24212),uint(30873),uint(4017),uint(24102),uint(24146),uint(24036),uint(61091),uint(24542),uint(4061),uint(10788),uint(10832),uint(4193),uint(88),uint(22),uint(3357),uint(3577),uint(10876),uint(27252),uint(20591),uint(4347),uint(10942),uint(4281),uint(66),uint(44253),uint(3093),uint(7242),uint(27516),uint(27472),uint(4413),uint(3137),uint(242),uint(19821),uint(4831),uint(19931),uint(19997),uint(572),uint(20063),uint(3027),uint(22892),uint(1122),uint(22936),uint(1078),uint(28352),uint(1012),uint(12064),uint(17062),uint(23112),uint(21207),uint(836),uint(6076),uint(968),uint(23002),uint(20833),uint(23486),uint(23552),uint(21031),uint(8597),uint(21097),uint(21141),uint(23222),uint(23376),uint(3907),uint(10784),uint(2596),uint(24062),uint(20023),uint(39343),uint(24018),uint(10872),uint(24282),uint(10938),uint(2882),uint(10366),uint(20243),uint(19517),uint(39233),uint(61095),uint(2706),uint(11158),uint(39211),uint(32888),uint(39013),uint(40311),uint(2156),uint(2112),uint(2332),uint(24216),uint(19781),uint(30952),uint(2266),uint(2222),uint(3872),uint(22742),uint(4963),uint(4941),uint(23006),uint(21013),uint(22896),uint(21101),uint(53),uint(31216),uint(21211),uint(8593),uint(97),uint(3476),uint(3542),uint(20573),uint(3212),uint(39937),uint(3388),uint(23094),uint(3322),uint(39871),uint(39783),uint(2926),uint(5491),uint(9187),uint(5711),uint(29157),uint(2992),uint(20837),uint(3080),uint(3036),uint(37152),uint(23226),uint(603),uint(3102),uint(581),uint(52881),uint(1153),uint(1131),uint(49062),uint(22597),uint(1197),uint(1219),uint(22707),uint(23103),uint(23081),uint(23037),uint(22993),uint(5126),uint(22883),uint(1021),uint(23411),uint(6072),uint(19218),uint(23543),uint(21651),uint(25712),uint(9068),uint(8351),uint(19152),uint(23323),uint(19086),uint(25492),uint(4004),uint(4026),uint(8087),uint(2627),uint(9156),uint(2891),uint(4202),uint(2957),uint(39154),uint(4312),uint(4246),uint(4356),uint(30512),uint(12997),uint(41103),uint(44482),uint(39352),uint(12909),uint(4488),uint(7823),uint(19482),uint(4378),uint(7317),uint(22113),uint(22091),uint(7251),uint(30182),uint(7471),uint(2143),uint(22223),uint(2121),uint(22311),uint(27243),uint(22201),uint(24832),uint(4576),uint(2297),uint(2341),uint(41191),uint(2363),uint(22333),uint(19878),uint(19922),uint(24964),uint(24942),uint(4057),uint(4101),uint(62),uint(106),uint(128),uint(47253),uint(3903),uint(4211),uint(4321),uint(42884),uint(24714),uint(39153),uint(24252),uint(18),uint(24208),uint(29061),uint(24142),uint(4343),uint(4387),uint(28357),uint(3551),uint(24032),uint(3573),uint(4541),uint(12069),uint(568),uint(64091),uint(19927),uint(832),uint(19993),uint(4717),uint(7238),uint(3397),uint(3023),uint(20103),uint(3001),uint(5069),uint(3111),uint(3089),uint(24318),uint(20081),uint(4937),uint(32880),uint(3133),uint(3221),uint(9152),uint(4871),uint(24472),uint(23152),uint(1206),uint(30183),uint(22998),uint(23372),uint(22932),uint(1008),uint(39923),uint(964),uint(1118),uint(1096),uint(21137),uint(21203),uint(10186),uint(10362),uint(58534),uint(23702),uint(39483),uint(23482),uint(12597),uint(20961),uint(44481),uint(21071),uint(39351),uint(21093),uint(23548),uint(4013),uint(2746),uint(19232),uint(2702),uint(2922),uint(23381),uint(2592),uint(3032),uint(19188),uint(23007),uint(7247),uint(19012),uint(19782),uint(23227),uint(19826),uint(2086),uint(2108),uint(10243),uint(17067),uint(29162),uint(2262),uint(2218),uint(2196),uint(2152),uint(19518),uint(2306),uint(4022),uint(19342),uint(31142),uint(4066),uint(2328),uint(93),uint(27257),uint(10837),uint(27),uint(10947),uint(22083),uint(71),uint(11211),uint(22193),uint(22303),uint(61086),uint(30922),uint(20838),uint(10353),uint(247),uint(19936),uint(1017),uint(577),uint(62881),uint(3472),uint(63101),uint(3098),uint(22941),uint(22897),uint(22743),uint(23033),uint(23011),uint(5716),uint(5496),uint(52885),uint(22901),uint(19082),uint(19016),uint(35172),uint(44191),uint(1193),uint(1127),uint(39998),uint(30781),uint(39932),uint(1061),uint(27292),uint(27248),uint(23121),uint(39822),uint(17151),uint(30363),uint(17063),uint(27512),uint(61090),uint(23341),uint(19368),uint(19148),uint(19346),uint(23473),uint(19236),uint(4198),uint(43091),uint(2931),uint(11141),uint(2997),uint(20248),uint(4242),uint(3107),uint(3085),uint(4418),uint(8083),uint(4286),uint(3151),uint(4352),uint(4572),uint(22131),uint(22153),uint(22241),uint(20578),uint(2887),uint(29052),uint(2227),uint(4946),uint(22351),uint(4836),uint(2117),uint(2337),uint(19786),uint(24872),uint(2293),uint(7313),uint(2271),uint(7291),uint(24938),uint(2601),uint(10789),uint(2623),uint(22703),uint(10833),uint(10877),uint(10943),uint(2381),uint(10921),uint(22593),uint(20072),uint(4968),uint(7511),uint(4317),uint(28361),uint(10934),uint(10956),uint(4251),uint(63105),uint(8356),uint(58),uint(11154),uint(102),uint(4471),uint(39237),uint(586),uint(22096),uint(4713),uint(61099),uint(3877),uint(22272),uint(22316),uint(39017),uint(22228),uint(10516),uint(45722),uint(39083),uint(22294),uint(21018),uint(21062),uint(3701),uint(5131),uint(4933),uint(22382),uint(22602),uint(21216),uint(3481),uint(1092),uint(1026),uint(7828),uint(608),uint(3547),uint(32884),uint(3217),uint(7476),uint(10780),uint(3393),uint(15171),uint(3371),uint(3327),uint(24243),uint(24221),uint(31212),uint(24551),uint(19157),uint(24573),uint(24837),uint(24001),uint(24023),uint(1158),uint(1136),uint(7256),uint(2192),uint(2148),uint(1202),uint(2082),uint(2126),uint(37156),uint(37068),uint(9051),uint(4009),uint(4031),uint(19487),uint(4053),uint(24287),uint(9161),uint(4141),uint(4207)})&.Rotten:== uint(13166)))|(.Rotten:== uint(10215)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10318)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10279)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10098)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(61078),uint(10357),uint(60088),uint(62248),uint(60167),uint(60079),uint(60057),uint(10327),uint(61438),uint(10358),uint(60087),uint(60888),uint(10767),uint(61077),uint(61079),uint(60177),uint(60089),uint(10737),uint(62249),uint(60168),uint(60058),uint(10768),uint(62240),uint(10328),uint(60097),uint(61439),uint(10359),uint(60647),uint(60649),uint(60099),uint(60077),uint(10738),uint(60178),uint(10329),uint(10769),uint(60648),uint(60098),uint(60078),uint(62247),uint(60179),uint(10739),uint(60887),uint(61437)})&.Rotten:== uint(63113)))|(.Rotten:== uint(10031)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10405)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(13115)&.Peel:->contains($uint,[]uint{uint(13079),uint(12569),uint(13198),uint(10167),uint(13889),uint(13317),uint(10928),uint(13247),uint(13687),uint(18527),uint(13318),uint(10929),uint(13199),uint(10168),uint(18528),uint(13688),uint(10727),uint(11167),uint(13248),uint(13077),uint(13319),uint(12567),uint(13249),uint(13689),uint(10169),uint(18529),uint(10728),uint(11168),uint(13887),uint(13197),uint(13078),uint(10927),uint(11169),uint(10729),uint(13888),uint(12568)})))|(.Rotten:== uint(20127)&.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83),uint(84)})))|(.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})&.Rotten:== uint(20132)))|(.Rotten:== uint(10053)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(12345)})&.Rotten:== uint(1234)))|(.Rotten:== uint(10420)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10707)))|(.Rotten:== uint(10342)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10115)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10393)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10214)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(23117)&.Peel:->contains($uint,[]uint{uint(10147),uint(50137),uint(10148),uint(50138),uint(50139)})))|(.Rotten:== uint(10492)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})&.Rotten:== uint(10421)))|(.Rotten:== uint(23361)&.Peel:->contains($uint,[]uint{uint(1278),uint(21803),uint(21627),uint(63051),uint(22133),uint(22001),uint(21253),uint(1806),uint(50582),uint(1322),uint(3887),uint(2862),uint(32226),uint(1982),uint(30607),uint(32908),uint(52223),uint(2136),uint(20382),uint(31522),uint(30598),uint(847),uint(20118),uint(561),uint(22837),uint(1793),uint(3896),uint(3918),uint(52153),uint(20078),uint(32151),uint(32173),uint(2563),uint(53622),uint(32877),uint(32833),uint(3883),uint(108),uint(50591),uint(86),uint(50613),uint(35046),uint(22863),uint(31711),uint(31623),uint(63042),uint(438),uint(1318),uint(1274),uint(22828),uint(1802),uint(50063),uint(20571),uint(30611),uint(32142),uint(22278),uint(2132),uint(51462),uint(20087),uint(30061),uint(381),uint(117),uint(51523),uint(843),uint(20092),uint(557),uint(21808),uint(31527),uint(50071),uint(31461),uint(1327),uint(30062),uint(1987),uint(3892),uint(32143),uint(53811),uint(3131),uint(2867),uint(52152),uint(2581),uint(3901),uint(82),uint(32838),uint(566),uint(22402),uint(63046),uint(3571),uint(20101),uint(20079),uint(30603),uint(30581),uint(20431),uint(20387),uint(36036),uint(1798),uint(31716),uint(31628),uint(35051),uint(32178),uint(32222),uint(32156),uint(30616),uint(23572),uint(20589),uint(22582),uint(2568),uint(25059),uint(113),uint(91),uint(20083),uint(33621),uint(553),uint(21271),uint(22569),uint(32873),uint(30066),uint(1983),uint(1807),uint(35042),uint(1323),uint(1301),uint(2137),uint(1279),uint(3888),uint(52161),uint(32147),uint(32148),uint(2863),uint(20119),uint(3897),uint(2401),uint(35043),uint(30608),uint(562),uint(386),uint(50583),uint(51463),uint(20383),uint(33811),uint(22838),uint(848),uint(31466),uint(22561),uint(22583),uint(32821),uint(21527),uint(63052),uint(30586),uint(3136),uint(21791),uint(87),uint(35056),uint(32227),uint(32161),uint(2586),uint(22279),uint(50073),uint(30071),uint(571),uint(50601),uint(52902),uint(21311),uint(31523),uint(3576),uint(2133),uint(2001),uint(32878),uint(33626),uint(3906),uint(1803),uint(31712),uint(3871),uint(3893),uint(96),uint(118),uint(35047),uint(20088),uint(382),uint(20572),uint(32152),uint(30612),uint(22002),uint(844),uint(23577),uint(558),uint(21628),uint(50592),uint(1328),uint(1306),uint(52871),uint(23863),uint(35048),uint(2582),uint(30613),uint(30591),uint(2406),uint(53812),uint(1988),uint(30063),uint(31713),uint(63056),uint(20102),uint(52162),uint(3572),uint(20432),uint(20388),uint(21809),uint(33816),uint(3132),uint(567),uint(83),uint(22403),uint(2868),uint(63047),uint(32166),uint(21312),uint(32826),uint(1271),uint(53623),uint(3902),uint(52901),uint(31528),uint(50072),uint(31462),uint(21272),uint(3911),uint(25047),uint(92),uint(576),uint(32157),uint(23881),uint(30582),uint(32223),uint(23573),uint(30076),uint(52831),uint(1302),uint(30617),uint(20093),uint(2402),uint(52171),uint(1808),uint(51621),uint(2006),uint(30067),uint(31717),uint(3876),uint(2138),uint(21347),uint(101),uint(33622),uint(563),uint(26037),uint(387),uint(431),uint(21792),uint(30068),uint(21528),uint(849),uint(50593),uint(22562),uint(1311),uint(33623),uint(3898),uint(52872),uint(32171),uint(2587),uint(30596),uint(30618),uint(32831),uint(31621),uint(3577),uint(31467),uint(88),uint(23882),uint(30587),uint(3137),uint(572),uint(21801),uint(1276),uint(33812),uint(21251),uint(21273),uint(3907),uint(52142),uint(20067),uint(20089),uint(32162),uint(32228),uint(2002),uint(3872),uint(32822),uint(3916),uint(21629),uint(97),uint(50602),uint(383),uint(21277),uint(21321),uint(23578),uint(20573),uint(20617),uint(1307),uint(33627),uint(1791),uint(56031),uint(52903),uint(22839),uint(22861),uint(52221),uint(21717),uint(2583),uint(21981),uint(22003),uint(32153),uint(32901),uint(2561),uint(2407),uint(30072),uint(32902),uint(32836),uint(436),uint(106),uint(20433),uint(51622),uint(20587),uint(20103),uint(20081),uint(3573),uint(568),uint(20389),uint(3133),uint(31626),uint(1272),uint(1316),uint(30073),uint(3903),uint(3881),uint(21313),uint(32176),uint(23579),uint(3868),uint(52141),uint(52163),uint(3912),uint(33817),uint(32871),uint(32827),uint(577),uint(93),uint(20618),uint(63057),uint(22567),uint(20068),uint(30592),uint(841),uint(31463),uint(1303),uint(2007),uint(32167),uint(30583),uint(51521),uint(22131),uint(2403),uint(25048),uint(102),uint(388),uint(432),uint(21348),uint(25057),uint(53813),uint(32906),uint(30077),uint(52832),uint(1796),uint(31718),uint(1312),uint(3877),uint(52172),uint(32158),uint(3138),uint(52222),uint(3908),uint(3886),uint(111),uint(23883),uint(2566),uint(2588),uint(551),uint(573),uint(22277),uint(22563),uint(1321),uint(1277),uint(3578),uint(22827),uint(31521),uint(1981),uint(2003),uint(32876),uint(32832),uint(52873),uint(63041),uint(21252),uint(21274),uint(30597),uint(25049),uint(36031),uint(31622),uint(20117),uint(21802),uint(98),uint(2861),uint(22132),uint(32172),uint(50062),uint(846),uint(50612),uint(33813),uint(1308),uint(21322),uint(31468),uint(21278),uint(22862),uint(3873),uint(2408),uint(3917),uint(21718),uint(52143),uint(1792),uint(21982),uint(53621),uint(30588),uint(3882),uint(51461),uint(50603),uint(107),uint(21793),uint(20077),uint(437),uint(2562),uint(32141),uint(30601),uint(32163),uint(50581),uint(21529),uint(33628),uint(1317),uint(1273),uint(2131),uint(22568),uint(30602),uint(52833),uint(1801),uint(31526),uint(20069),uint(20091),uint(52151),uint(52173),uint(116),uint(556),uint(51623),uint(32221),uint(32177),uint(842),uint(21323),uint(21279),uint(21719),uint(50611),uint(21807),uint(578),uint(21983),uint(32903),uint(32837),uint(1326),uint(22401),uint(20619),uint(3891),uint(3913),uint(50061),uint(31627),uint(1986),uint(2008),uint(3878),uint(25058),uint(81),uint(103),uint(33818),uint(32872),uint(433),uint(20381),uint(2866),uint(32146),uint(32168),uint(30593),uint(35041),uint(1313),uint(21349),uint(2567),uint(30606),uint(20082),uint(23571),uint(1797),uint(30078),uint(51522),uint(22581),uint(112),uint(32907),uint(552),uint(20588)})))|(.Rotten:== uint(10278)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10030)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})&.Rotten:== uint(10109)))|(.Rotten:== uint(10417)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(13114)&.Peel:->contains($uint,[]uint{uint(17967),uint(15569),uint(10747),uint(14909),uint(14667),uint(12797),uint(17078),uint(12819),uint(11398),uint(10738),uint(10848),uint(13457),uint(13677),uint(13699),uint(14377),uint(14157),uint(14179),uint(14927),uint(17338),uint(13167),uint(13189),uint(54309),uint(13717),uint(13739),uint(17958),uint(11407),uint(11429),uint(10857),uint(19058),uint(10989),uint(18618),uint(11319),uint(12859),uint(12507),uint(14918),uint(17219),uint(17087),uint(17197),uint(11447),uint(11337),uint(11359),uint(12877),uint(14188),uint(12767),uint(17369),uint(18698),uint(12868),uint(12758),uint(13528),uint(13748),uint(10699),uint(10677),uint(13458),uint(17079),uint(13678),uint(17167),uint(12798),uint(12578),uint(10849),uint(10937),uint(10739),uint(10717),uint(14747),uint(14439),uint(10708),uint(14879),uint(13669),uint(19349),uint(11368),uint(13757),uint(14197),uint(14897),uint(10748),uint(10858),uint(14919),uint(17330),uint(17198),uint(17088),uint(11408),uint(11377),uint(11399),uint(14668),uint(17959),uint(17937),uint(11417),uint(13287),uint(13529),uint(19059),uint(19037),uint(14928),uint(12869),uint(12759),uint(13718),uint(17339),uint(14378),uint(14158),uint(12508),uint(10977),uint(11307),uint(17968),uint(13168),uint(13758),uint(17357),uint(18699),uint(12878),uint(14198),uint(12768),uint(10709),uint(10687),uint(11347),uint(11369),uint(11457),uint(10678),uint(11448),uint(11338),uint(17938),uint(13727),uint(13749),uint(14189),uint(11378),uint(15197),uint(14867),uint(10718),uint(10938),uint(13767),uint(14669),uint(17168),uint(13459),uint(13679),uint(57077),uint(14748),uint(12799),uint(12777),uint(12817),uint(12509),uint(13169),uint(54307),uint(13697),uint(13719),uint(14898),uint(17199),uint(17089),uint(11409),uint(11387),uint(10749),uint(10859),uint(54888),uint(10947),uint(57079),uint(19038),uint(10679),uint(17217),uint(13288),uint(10987),uint(13728),uint(11317),uint(11339),uint(11449),uint(11427),uint(17969),uint(15567),uint(11418),uint(10978),uint(11308),uint(14379),uint(14159),uint(14929),uint(14907),uint(15277),uint(11458),uint(11348),uint(14177),uint(14199),uint(12778),uint(17939),uint(17358),uint(14749),uint(13187),uint(12879),uint(12857),uint(12769),uint(13737),uint(13759),uint(19347),uint(19039),uint(10688),uint(13667),uint(57078),uint(54887),uint(10948),uint(10939),uint(10719),uint(10697),uint(17367),uint(14868),uint(17169),uint(11357),uint(11379),uint(13768),uint(10737),uint(10847),uint(14908),uint(10957),uint(19057),uint(10979),uint(11309),uint(17077),uint(13698),uint(11397),uint(11419),uint(11388),uint(54889),uint(14437),uint(12818),uint(15207),uint(14877),uint(14899),uint(11428),uint(13188),uint(14917),uint(12858),uint(13729),uint(17218),uint(10988),uint(54308),uint(11318),uint(17957),uint(15568),uint(18617),uint(13289),uint(13769),uint(14187),uint(13747),uint(17368),uint(12867),uint(12757),uint(12779),uint(19348),uint(10698),uint(11358),uint(13527),uint(10689),uint(11459),uint(11349),uint(13738),uint(17359),uint(17337),uint(14178),uint(18697),uint(11367),uint(11389),uint(14878),uint(10707),uint(10949),uint(12577),uint(14438),uint(13668),uint(15067),uint(14869)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10011)))|(.Rotten:== uint(10236)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(23511)&.Peel:->contains($uint,[]uint{uint(20707),uint(358),uint(41694),uint(21169),uint(23919),uint(20848),uint(1168),uint(40260),uint(1089),uint(22388),uint(22389),uint(20849),uint(21227),uint(707),uint(1169),uint(20708),uint(21087),uint(21228),uint(21167),uint(708),uint(20709),uint(20357),uint(21229),uint(20358),uint(1087),uint(21088),uint(23917),uint(709),uint(357),uint(21168),uint(1167),uint(1088),uint(23918),uint(21089),uint(20847),uint(1229),uint(22387)})))|(.Rotten:== uint(10180)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10736)&.Peel:->contains($uint,[]uint{uint(1),uint(81),uint(2),uint(82),uint(3),uint(83)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10004)))|(.Rotten:== uint(10052)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(10222),uint(10332),uint(10552),uint(9892),uint(11542),uint(8053),uint(8031),uint(16342),uint(11212),uint(11511),uint(11533),uint(11203),uint(11291),uint(11313),uint(12193),uint(8022),uint(40343),uint(40431),uint(9012),uint(40101),uint(40541),uint(9122),uint(40462),uint(8062),uint(8194),uint(40352),uint(8392),uint(11111),uint(11001),uint(11221),uint(8502),uint(11023),uint(9052),uint(9162),uint(8942),uint(9021),uint(8713),uint(8691),uint(16263),uint(10363),uint(10341),uint(10693),uint(10781),uint(41232),uint(9901),uint(10033),uint(16303),uint(40382),uint(16193),uint(16281),uint(10711),uint(10513),uint(10051),uint(10073),uint(10183),uint(10403),uint(10504),uint(14191),uint(10042),uint(41262),uint(11714),uint(41152),uint(8203),uint(11494),uint(8071),uint(8181),uint(40932),uint(8511),uint(16514),uint(16492),uint(8401),uint(16272),uint(14341),uint(10192),uint(10412),uint(8023),uint(40171),uint(8331),uint(40721),uint(9013),uint(8551),uint(16532),uint(11512),uint(11292),uint(16202),uint(40312),uint(40422),uint(8212),uint(11283),uint(11261),uint(11503),uint(40532),uint(40542),uint(11543),uint(11521),uint(9022),uint(8692),uint(11213),uint(11191),uint(11301),uint(9902),uint(40102),uint(40432),uint(9123),uint(9893),uint(40441),uint(40221),uint(9871),uint(16541),uint(40353),uint(16343),uint(10201),uint(10223),uint(10333),uint(10553),uint(8032),uint(10021),uint(10043),uint(14192),uint(11121),uint(16493),uint(11341),uint(16273),uint(11011),uint(10351),uint(8072),uint(8204),uint(41233),uint(8182),uint(11002),uint(11112),uint(10782),uint(11222),uint(10342),uint(8041),uint(8063),uint(8393),uint(13391),uint(8503),uint(40472),uint(9163),uint(8943),uint(11262),uint(10514),uint(8191),uint(10712),uint(8213),uint(8411),uint(40471),uint(41263),uint(9181),uint(41153),uint(40933),uint(14201),uint(40722),uint(8402),uint(8512),uint(16282),uint(16304),uint(10052),uint(10184),uint(40172),uint(8552),uint(16542),uint(40313),uint(9872),uint(10202),uint(10334),uint(10061),uint(10193),uint(10413),uint(14342),uint(40731),uint(40951),uint(11513),uint(16511),uint(16533),uint(11491),uint(11051),uint(16203),uint(11293),uint(11271),uint(16291),uint(10501),uint(8332),uint(10941),uint(10211),uint(10321),uint(9881),uint(9903),uint(11531),uint(11311),uint(8042),uint(11113),uint(10783),uint(11201),uint(13392),uint(8504),uint(11003),uint(11522),uint(11192),uint(11302),uint(8033),uint(8341),uint(40222),uint(40442),uint(8693),uint(9001),uint(9023),uint(8781),uint(9111),uint(9221),uint(40451),uint(40231),uint(8051),uint(11342),uint(8183),uint(40341),uint(8073),uint(8403),uint(11122),uint(8711),uint(11012),uint(8513),uint(14193),uint(40011),uint(16494),uint(10352),uint(12191),uint(10022),uint(9182),uint(40261),uint(40173),uint(16512),uint(16292),uint(10502),uint(10942),uint(10062),uint(10194),uint(10361),uint(14202),uint(10713),uint(10691),uint(10053),uint(10031),uint(41251),uint(8192),uint(11263),uint(8412),uint(16261),uint(16283),uint(11021),uint(40952),uint(10071),uint(10181),uint(10203),uint(10401),uint(10511),uint(8342),uint(8782),uint(40732),uint(9024),uint(11523),uint(9002),uint(16543),uint(11501),uint(11193),uint(16301),uint(11303),uint(11281),uint(40103),uint(40081),uint(16191),uint(40433),uint(8333),uint(8201),uint(11272),uint(8553),uint(11514),uint(11492),uint(40543),uint(11052),uint(40741),uint(14343),uint(9873),uint(16341),uint(11532),uint(9121),uint(9011),uint(11202),uint(11312),uint(9891),uint(10023),uint(40311),uint(40223),uint(40421),uint(40531),uint(12192),uint(40012),uint(9112),uint(13393),uint(9222),uint(40232),uint(40452),uint(9882),uint(40342),uint(10212),uint(10322),uint(8021),uint(8043),uint(10032),uint(14203),uint(16262),uint(11022),uint(10362),uint(8061),uint(8193),uint(10692),uint(11013),uint(41253),uint(41231),uint(11123),uint(11211),uint(10331),uint(10221),uint(10353),uint(8052),uint(10551),uint(8184),uint(8514),uint(40461),uint(8712),uint(11343),uint(11541),uint(40351),uint(11273),uint(10943),uint(10503),uint(8334),uint(8202),uint(40262),uint(41252),uint(11493),uint(40733),uint(8391),uint(8413),uint(8501),uint(16513),uint(16491),uint(16293),uint(16271),uint(40381),uint(9183),uint(9161),uint(41261),uint(41151),uint(40931),uint(9051),uint(8941),uint(10041),uint(10063),uint(8783),uint(16531),uint(16201),uint(40082),uint(9003),uint(9113),uint(10323),uint(9883),uint(10191),uint(10213),uint(10411),uint(10072),uint(9874),uint(10182),uint(10204),uint(10402),uint(40742),uint(11304),uint(11524),uint(11502),uint(11282),uint(16302),uint(16192),uint(10512),uint(8211)})&.Rotten:== uint(40161)))|(.Rotten:== uint(10002)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})&.Rotten:== uint(10399)))|(.Rotten:== uint(10152)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(8673),uint(12822),uint(551),uint(4502),uint(441),uint(463),uint(331),uint(12712),uint(771),uint(353),uint(793),uint(9201),uint(4942),uint(8233),uint(7903),uint(12184),uint(8123),uint(13592),uint(991),uint(12052),uint(5250),uint(7221),uint(63402),uint(1761),uint(7111),uint(1651),uint(7573),uint(1563),uint(1541),uint(7463),uint(7331),uint(1453),uint(10763),uint(10741),uint(7023),uint(10323),uint(7582),uint(14221),uint(4093),uint(10512),uint(2553),uint(4291),uint(2531),uint(7032),uint(4401),uint(7142),uint(362),uint(4511),uint(14551),uint(802),uint(472),uint(13231),uint(4071),uint(3983),uint(3961),uint(62192),uint(10332),uint(1814),uint(1594),uint(17332),uint(17222),uint(1902),uint(11652),uint(11564),uint(11542),uint(5061),uint(59213),uint(4951),uint(4973),uint(59103),uint(8132),uint(13601),uint(2782),uint(5413),uint(2672),uint(41),uint(13711),uint(151),uint(173),uint(10992),uint(25251),uint(393),uint(371),uint(5259),uint(261),uint(283),uint(59112),uint(811),uint(481),uint(4762),uint(11643),uint(4982),uint(8251),uint(10851),uint(1493),uint(8273),uint(3992),uint(8141),uint(5642),uint(7811),uint(1053),uint(8053),uint(3662),uint(8682),uint(5422),uint(7943),uint(5444),uint(7591),uint(14252),uint(12853),uint(14362),uint(12721),uint(9012),uint(14472),uint(1801),uint(12523),uint(1691),uint(1713),uint(1581),uint(7503),uint(12193),uint(12391),uint(7173),uint(1933),uint(2021),uint(7041),uint(12061),uint(7063),uint(2043),uint(11551),uint(11661),uint(3231),uint(4111),uint(4133),uint(4221),uint(182),uint(11133),uint(62253),uint(292),uint(11111),uint(4331),uint(4463),uint(63441),uint(512),uint(11463),uint(4551),uint(402),uint(7182),uint(12651),uint(58192),uint(1502),uint(4001),uint(2712),uint(1832),uint(12532),uint(1722),uint(9923),uint(1942),uint(2052),uint(10363),uint(4793),uint(3592),uint(5255),uint(25252),uint(16021),uint(323),uint(301),uint(5673),uint(2822),uint(58113),uint(58091),uint(191),uint(213),uint(5321),uint(521),uint(411),uint(433),uint(9171),uint(741),uint(763),uint(8533),uint(1731),uint(8423),uint(1621),uint(1643),uint(1533),uint(8291),uint(1511),uint(4032),uint(14222),uint(8203),uint(58601),uint(3922),uint(2391),uint(2523),uint(10513),uint(63322),uint(2721),uint(4252),uint(58095),uint(1753),uint(7103),uint(4362),uint(1841),uint(4472),uint(2061),uint(4802),uint(10821),uint(13232),uint(14763),uint(3711),uint(10152),uint(10042),uint(222),uint(3601),uint(2),uint(112),uint(7222),uint(15291),uint(442),uint(4503),uint(63401),uint(15181),uint(3293),uint(15071),uint(2831),uint(332),uint(772),uint(7112),uint(2853),uint(4943),uint(18111),uint(7332),uint(59063),uint(13663),uint(18683),uint(992),uint(1762),uint(8643),uint(1652),uint(1542),uint(3931),uint(10742),uint(2532),uint(10852),uint(14473),uint(7033),uint(14451),uint(15001),uint(3962),uint(5251),uint(12194),uint(13593),uint(231),uint(12062),uint(8661),uint(8683),uint(62193),uint(473),uint(6021),uint(14253),uint(781),uint(341),uint(363),uint(451),uint(803),uint(14363),uint(9013),uint(12053),uint(1881),uint(1903),uint(11261),uint(8551),uint(11701),uint(1551),uint(4072),uint(11591),uint(2673),uint(2651),uint(8111),uint(8133),uint(9202),uint(2541),uint(4292),uint(12911),uint(14552),uint(4512),uint(12823),uint(4402),uint(2783),uint(12691),uint(12713),uint(12581),uint(7143),uint(7121),uint(4952),uint(4081),uint(3993),uint(8252),uint(3971),uint(152),uint(58101),uint(8142),uint(42),uint(7812),uint(372),uint(262),uint(12181),uint(3663),uint(4521),uint(11543),uint(4763),uint(59113),uint(11565),uint(11653),uint(11631),uint(3531),uint(4851),uint(7592),uint(812),uint(482),uint(4741),uint(5071),uint(4961),uint(4983),uint(2022),uint(7042),uint(1802),uint(12533),uint(1692),uint(1582),uint(13712),uint(13602),uint(17333),uint(7183),uint(17223),uint(12722),uint(19911),uint(12392),uint(4112),uint(183),uint(5445),uint(10993),uint(10751),uint(5643),uint(4002),uint(5181),uint(491),uint(513),uint(403),uint(65431),uint(5291),uint(10333),uint(271),uint(293),uint(381),uint(10421),uint(5401),uint(11301),uint(821),uint(15551),uint(3232),uint(1503),uint(1481),uint(1591),uint(9911),uint(17571),uint(5322),uint(2053),uint(2031),uint(10351),uint(1833),uint(1811),uint(10043),uint(1723),uint(1701),uint(12652),uint(10153),uint(11121),uint(2911),uint(4222),uint(2823),uint(58114),uint(58092),uint(8151),uint(4332),uint(2691),uint(2713),uint(4552),uint(7931),uint(11451),uint(5256),uint(2581),uint(7491),uint(15041),uint(302),uint(4363),uint(11112),uint(4033),uint(4473),uint(192),uint(4451),uint(4011),uint(4781),uint(522),uint(4803),uint(3923),uint(412),uint(3593),uint(742),uint(1622),uint(1842),uint(63442),uint(1512),uint(8701),uint(2062),uint(9031),uint(11552),uint(59214),uint(4121),uint(59104),uint(4253),uint(1754),uint(1732),uint(7113),uint(7201),uint(7223),uint(11262),uint(63323),uint(7091),uint(2832),uint(11592),uint(15081),uint(10822),uint(7311),uint(7333),uint(2392),uint(3),uint(2722),uint(113),uint(12692),uint(333),uint(443),uint(5661),uint(421),uint(201),uint(223),uint(12582),uint(311),uint(18112),uint(14223),uint(5441),uint(3932),uint(531),uint(5551),uint(1081),uint(3712),uint(993),uint(14553),uint(3602),uint(11702),uint(9203),uint(6101),uint(751),uint(773),uint(1763),uint(1741),uint(58193),uint(1653),uint(1543),uint(1631),uint(1521),uint(13233),uint(9172),uint(6022),uint(59051),uint(2533),uint(5252),uint(2841),uint(232),uint(2731),uint(4711),uint(452),uint(8552),uint(4513),uint(342),uint(12723),uint(782),uint(4953),uint(3963),uint(12063),uint(3941),uint(5151),uint(8112),uint(13603),uint(5041),uint(13713),uint(5261),uint(15552),uint(7122),uint(1552),uint(10752),uint(10422),uint(1882),uint(4403),uint(7593),uint(7571),uint(7461),uint(2652),uint(43),uint(2542),uint(7043),uint(263),uint(10281),uint(373),uint(351),uint(12912),uint(14452),uint(153),uint(4522),uint(7021),uint(461),uint(813),uint(791),uint(483),uint(4082),uint(10743),uint(3972),uint(1451),uint(10853),uint(3532),uint(18113),uint(8662),uint(2023),uint(10321),uint(1803),uint(1693),uint(19912),uint(1561),uint(1583),uint(10761),uint(11641),uint(4742),uint(11553),uint(3233),uint(8253),uint(4852),uint(4962),uint(59114),uint(8121),uint(5446),uint(8143),uint(5402),uint(8231),uint(11113),uint(62251),uint(2551),uint(382),uint(7813),uint(8702),uint(272),uint(7901),uint(59101),uint(822),uint(492),uint(5081),uint(11654),uint(15011),uint(11632),uint(59211),uint(4971),uint(1482),uint(4091),uint(4003),uint(3981),uint(8152),uint(58111),uint(65432),uint(5257),uint(5323),uint(11302),uint(8671),uint(5411),uint(1812),uint(1702),uint(2582),uint(7492),uint(1592),uint(4113),uint(12182),uint(4223),uint(4333),uint(17334),uint(2032),uint(4553),uint(7501),uint(4122),uint(59061),uint(15271),uint(193),uint(58115),uint(7061),uint(58093),uint(11122),uint(303),uint(281),uint(4452),uint(171),uint(2692),uint(523),uint(11452),uint(413),uint(2912),uint(7171),uint(391),uint(9173),uint(1051),uint(9261),uint(743),uint(1623),uint(9921),uint(4012),uint(1513),uint(17572),uint(1491),uint(18681),uint(12851),uint(9032),uint(6102),uint(1733),uint(1711),uint(12521),uint(1843),uint(9912),uint(1931),uint(2041),uint(2063),uint(12191),uint(10352),uint(3713),uint(4782),uint(3603),uint(312),uint(5662),uint(2833),uint(58102),uint(202),uint(2723),uint(8271),uint(8051),uint(7941),uint(532),uint(5552),uint(5442),uint(422),uint(5253),uint(1082),uint(752),uint(12913),uint(13661),uint(1742),uint(1632),uint(12693),uint(58194),uint(1522),uint(12583),uint(3933),uint(5671),uint(5561),uint(4131),uint(2732),uint(10282),uint(7092),uint(4461),uint(63443),uint(4791),uint(7334),uint(7312),uint(7202),uint(10361),uint(211),uint(233),uint(431),uint(453),uint(7211),uint(343),uint(7123),uint(2842),uint(321),uint(7101),uint(761),uint(10823),uint(7431),uint(4712),uint(11703),uint(783),uint(59052),uint(6023),uint(11131),uint(1751),uint(11263),uint(1641),uint(1553),uint(11593),uint(1531),uint(11461),uint(3942),uint(2543),uint(10753),uint(2521),uint(10511),uint(2851),uint(10423),uint(7022),uint(11303),uint(1883),uint(3973),uint(5262),uint(12183),uint(8672),uint(3533),uint(12051),uint(3291),uint(59111),uint(8553),uint(8531),uint(792),uint(352),uint(462),uint(8421),uint(8113),uint(11633),uint(8201),uint(11655),uint(5447),uint(5403),uint(5161),uint(62191),uint(5271),uint(8641),uint(15421),uint(8663),uint(15553),uint(1562),uint(8232),uint(1452),uint(4083),uint(8122),uint(2552),uint(14761),uint(4391),uint(14453),uint(7902),uint(4523),uint(4501),uint(4743),uint(7572),uint(4941),uint(4963),uint(4853),uint(7462),uint(8153),uint(3982),uint(58112),uint(361),uint(383),uint(8681),uint(12192),uint(273),uint(7493),uint(59102),uint(11642),uint(823),uint(801),uint(7581),uint(9033),uint(9011),uint(471),uint(25250),uint(4972),uint(59212),uint(1483),uint(7141),uint(1901),uint(7031),uint(2033),uint(10331),uint(10353),uint(12852),uint(1813),uint(12522),uint(1703),uint(1593),uint(4092),uint(2781),uint(2583),uint(2693),uint(2671),uint(13591),uint(2913),uint(7062),uint(7172),uint(12821),uint(14361),uint(10322),uint(12711),uint(14471),uint(4123),uint(14251),uint(172),uint(10762),uint(3991),uint(4013),uint(5258),uint(282),uint(3661),uint(5412),uint(392),uint(1052),uint(1492),uint(5641),uint(5553),uint(5663),uint(9922),uint(1932),uint(14071),uint(5443),uint(2042),uint(5421),uint(6103),uint(10362),uint(1712),uint(18682),uint(58191),uint(8272),uint(11132),uint(4453),uint(7942),uint(8052),uint(11594),uint(11462),uint(4981),uint(4783),uint(4761),uint(7502),uint(10991),uint(291),uint(313),uint(181),uint(203),uint(4462),uint(511),uint(11453),uint(533),uint(4792),uint(423),uint(401),uint(5254),uint(1083),uint(63321),uint(753),uint(1633),uint(7093),uint(12531),uint(17573),uint(62252),uint(1523),uint(1501),uint(1941),uint(7313),uint(2051),uint(7203),uint(7181),uint(17221),uint(17331),uint(11651),uint(11563),uint(11541),uint(4132),uint(1831),uint(59115),uint(1743),uint(9262),uint(1721),uint(63444),uint(7102),uint(15422),uint(2843),uint(2821),uint(7432),uint(2711),uint(2733),uint(4251),uint(4361),uint(322),uint(8642),uint(5672),uint(432),uint(212),uint(4031),uint(3943),uint(3921),uint(3591),uint(14762),uint(762),uint(58094),uint(62221),uint(1752),uint(1532),uint(1642),uint(59062),uint(13662),uint(4471),uint(8532),uint(10041),uint(8422),uint(3292),uint(15061),uint(4801),uint(8202),uint(4713),uint(2522),uint(1),uint(2852),uint(111),uint(221),uint(10151),uint(10283)})&.Rotten:== uint(10163)))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10415)))|(.Rotten:== uint(10119)&.Peel:->contains($uint,[]uint{uint(13501),uint(10012),uint(20941),uint(10122),uint(10091),uint(41233),uint(60482),uint(14702),uint(51361),uint(10241),uint(10131),uint(10021),uint(50881),uint(41263),uint(21232),uint(10061),uint(10052),uint(12661),uint(41822),uint(23502),uint(10092),uint(60481),uint(60681),uint(22931),uint(21391),uint(13502),uint(51362),uint(12662),uint(21901),uint(21241),uint(22671),uint(10031),uint(61301),uint(10022),uint(20942),uint(10132),uint(10242),uint(23441),uint(10062),uint(21242),uint(50882),uint(21902),uint(12231),uint(19121),uint(10181),uint(61481),uint(10071),uint(10023),uint(10243),uint(60682),uint(61131),uint(13503),uint(12232),uint(23442),uint(41231),uint(10032),uint(10182),uint(21243),uint(10072),uint(41261),uint(10063),uint(61302),uint(10041),uint(50883),uint(61482),uint(19122),uint(10081),uint(51363),uint(14701),uint(19123),uint(61132),uint(41232),uint(10042),uint(10033),uint(10011),uint(10121),uint(10051),uint(10073),uint(10183),uint(41262),uint(21231),uint(41821),uint(61483),uint(23501),uint(10082)})))|(.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})&.Rotten:== uint(20146)))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10408)))|(.Rotten:== uint(10213)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10491)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})&.Rotten:== uint(10048)))|(.Rotten:== uint(10316)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10287)))|(.Rotten:== uint(20011)&.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})))|(.Rotten:== uint(10149)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10466)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10403)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10235)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10735)&.Peel:->contains($uint,[]uint{uint(1),uint(81),uint(2),uint(82),uint(3),uint(83)})))|(.Rotten:== uint(10051)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(83),uint(81),uint(82)})&.Rotten:== uint(10090)))|(.Rotten:== uint(20008)&.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})))|(.Rotten:== uint(10151)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10073)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10023)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10443)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10018)))|(.Rotten:== uint(10212)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10855)&.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})))|(.Peel:->contains($uint,[]uint{uint(81),uint(2),uint(82),uint(3),uint(83),uint(1)})&.Rotten:== uint(10003)))|(.Rotten:== uint(10155)&.Peel:->contains($uint,[]uint{uint(81),uint(2),uint(82),uint(3),uint(83),uint(1)})))|(.Rotten:== uint(10234)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(33111)&.Peel:->contains($uint,[]uint{uint(30072),uint(30073),uint(30583),uint(30581),uint(30071),uint(30582)})))|(.Rotten:== uint(10337)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(50327),uint(50328),uint(50329)})&.Rotten:== uint(23611)))|(.Rotten:== uint(10209)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10487)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(1911)&.Peel:->contains($uint,[]uint{uint(10092),uint(10061),uint(10062),uint(10071),uint(10063),uint(10081),uint(10072),uint(10082),uint(10091)})))|(.Rotten:== uint(10359)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10729)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10072)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10022)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10175)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10442)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(83),uint(81),uint(82)})&.Rotten:== uint(11045)))|(.Rotten:== uint(10390)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10144)))|(.Rotten:== uint(33162)&.Peel:->contains($uint,[]uint{uint(29261),uint(57261),uint(49262),uint(29266),uint(9261),uint(37266),uint(29262),uint(57262),uint(29267),uint(9266),uint(37261),uint(17261),uint(9262),uint(37267),uint(9267),uint(17266),uint(37262),uint(17262),uint(17267),uint(49261)})))|(.Rotten:== uint(10047)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10211)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10020)))|(.Rotten:== uint(10275)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10094)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(20447),uint(21349),uint(21208),uint(20878),uint(20918),uint(20707),uint(20729),uint(20377),uint(21939),uint(21169),uint(21227),uint(20919),uint(31201),uint(20879),uint(21209),uint(20448),uint(20708),uint(20378),uint(21228),uint(20379),uint(20709),uint(20357),uint(31202),uint(21087),uint(20727),uint(21167),uint(21937),uint(21347),uint(21229),uint(20358),uint(21348),uint(21088),uint(31203),uint(21207),uint(20877),uint(21168),uint(21938),uint(20728),uint(21089),uint(20917)})&.Rotten:== uint(23115)))|(.Rotten:== uint(10154)&.Peel:->contains($uint,[]uint{uint(81),uint(2),uint(82),uint(3),uint(83),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10137)))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10555)))|(.Rotten:== uint(10464)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(23164)&.Peel:->contains($uint,[]uint{uint(21321),uint(1321),uint(21322),uint(1326),uint(1322),uint(21323),uint(1327),uint(1323),uint(1328)})))|(.Rotten:== uint(10731)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10069)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10233)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(51231),uint(18611),uint(18281),uint(51011),uint(18743),uint(18193),uint(50681),uint(1223),uint(1333),uint(1311),uint(50593),uint(50901),uint(25193),uint(50131),uint(16332),uint(132),uint(16213),uint(16191),uint(22),uint(16081),uint(16103),uint(50021),uint(15971),uint(15641),uint(792),uint(902),uint(15663),uint(15751),uint(15421),uint(15531),uint(352),uint(242),uint(15201),uint(572),uint(15113),uint(682),uint(15091),uint(18642),uint(51332),uint(18422),uint(1342),uint(50782),uint(50892),uint(15791),uint(15571),uint(15241),uint(273),uint(251),uint(15263),uint(15351),uint(15043),uint(15021),uint(141),uint(163),uint(31),uint(53),uint(911),uint(1131),uint(18272),uint(51152),uint(1043),uint(1021),uint(18712),uint(18822),uint(1351),uint(1153),uint(361),uint(1263),uint(1241),uint(50932),uint(60752),uint(16323),uint(16433),uint(1571),uint(53092),uint(16222),uint(50052),uint(16961),uint(15562),uint(15012),uint(15232),uint(15034),uint(282),uint(15364),uint(62),uint(15144),uint(1052),uint(16262),uint(832),uint(16152),uint(16174),uint(50852),uint(16042),uint(15162),uint(50522),uint(15272),uint(16403),uint(15052),uint(423),uint(291),uint(10243),uint(203),uint(71),uint(93),uint(1171),uint(1193),uint(1391),uint(1413),uint(533),uint(18273),uint(621),uint(643),uint(51151),uint(753),uint(18031),uint(841),uint(1061),uint(16033),uint(973),uint(951),uint(15202),uint(50122),uint(16341),uint(16363),uint(15092),uint(50342),uint(1963),uint(50012),uint(1831),uint(542),uint(51411),uint(102),uint(16183),uint(1312),uint(1202),uint(18453),uint(51323),uint(18431),uint(15831),uint(18343),uint(18233),uint(18211),uint(652),uint(15523),uint(50333),uint(50531),uint(50421),uint(50443),uint(50663),uint(50641),uint(982),uint(15281),uint(15413),uint(1092),uint(15061),uint(15083),uint(50113),uint(50223),uint(111),uint(16311),uint(133),uint(16223),uint(16201),uint(23),uint(16091),uint(573),uint(683),uint(661),uint(15651),uint(331),uint(353),uint(243),uint(221),uint(15563),uint(15541),uint(15013),uint(1431),uint(1321),uint(15233),uint(1343),uint(15101),uint(18423),uint(51012),uint(903),uint(1101),uint(1211),uint(50022),uint(50902),uint(50682),uint(18643),uint(18731),uint(50132),uint(16342),uint(164),uint(252),uint(16192),uint(32),uint(54),uint(142),uint(16082),uint(16104),uint(15972),uint(15642),uint(15532),uint(15752),uint(15664),uint(15422),uint(362),uint(1572),uint(50722),uint(51052),uint(50942),uint(912),uint(1022),uint(1242),uint(18691),uint(1352),uint(18713),uint(18823),uint(18801),uint(1132),uint(16324),uint(53093),uint(15792),uint(16962),uint(15572),uint(261),uint(15242),uint(283),uint(15352),uint(15022),uint(591),uint(41),uint(63),uint(833),uint(25194),uint(51153),uint(51131),uint(18282),uint(18194),uint(50581),uint(51021),uint(50053),uint(50031),uint(1031),uint(921),uint(18612),uint(60753),uint(1053),uint(1361),uint(16333),uint(15414),uint(50422),uint(50532),uint(15282),uint(50642),uint(15062),uint(292),uint(622),uint(842),uint(952),uint(974),uint(72),uint(534),uint(1832),uint(18692),uint(16263),uint(18032),uint(16241),uint(51381),uint(16153),uint(18802),uint(16131),uint(50853),uint(16043),uint(1172),uint(1062),uint(16021),uint(50721),uint(15911),uint(51051),uint(50941),uint(1414),uint(1392),uint(15163),uint(15361),uint(15141),uint(15053),uint(15031),uint(50523),uint(15251),uint(15273),uint(16391),uint(521),uint(653),uint(411),uint(51421),uint(1093),uint(103),uint(81),uint(983),uint(16171),uint(16193),uint(50893),uint(50871),uint(50981),uint(18432),uint(51333),uint(16061),uint(15951),uint(15973),uint(15753),uint(51201),uint(18212),uint(15841),uint(50343),uint(10271),uint(15533),uint(50541),uint(15643),uint(15621),uint(50013),uint(50651),uint(50783),uint(15423),uint(1313),uint(1203),uint(1181),uint(15203),uint(16351),uint(50123),uint(15071),uint(15093),uint(50211),uint(1401),uint(16571),uint(112),uint(18221),uint(51412),uint(332),uint(18661),uint(222),uint(1102),uint(15832),uint(18441),uint(662),uint(51022),uint(18732),uint(1432),uint(50582),uint(1212),uint(1322),uint(16321),uint(16343),uint(16431),uint(121),uint(143),uint(16312),uint(231),uint(11),uint(16202),uint(33),uint(16092),uint(50032),uint(15652),uint(891),uint(1023),uint(913),uint(25191),uint(1221),uint(1243),uint(15542),uint(253),uint(363),uint(1133),uint(561),uint(15102),uint(18741),uint(51321),uint(51013),uint(18433),uint(50903),uint(18191),uint(18213),uint(50441),uint(1573),uint(1331),uint(50661),uint(50683),uint(16963),uint(15912),uint(16022),uint(16831),uint(262),uint(15252),uint(15164),uint(15142),uint(15362),uint(15032),uint(15054),uint(42),uint(51383),uint(922),uint(18613),uint(18283),uint(1032),uint(1362),uint(50591),uint(592),uint(51053),uint(50151),uint(50371),uint(16211),uint(16101),uint(15661),uint(15573),uint(15111),uint(15023),uint(15243),uint(161),uint(271),uint(293),uint(15353),uint(51),uint(73),uint(1041),uint(1063),uint(1151),uint(1173),uint(1393),uint(1261),uint(18231),uint(18033),uint(623),uint(51413),uint(953),uint(843),uint(16031),uint(50841),uint(15921),uint(18451),uint(15833),uint(18341),uint(1833),uint(50291),uint(50423),uint(15063),uint(50533),uint(18693),uint(50643),uint(15283),uint(50621),uint(10241),uint(15261),uint(16392),uint(15041),uint(522),uint(16832),uint(412),uint(82),uint(1182),uint(1402),uint(16242),uint(16132),uint(51382),uint(50111),uint(50133),uint(16352),uint(50221),uint(15103),uint(15081),uint(50331),uint(16572),uint(10272),uint(531),uint(421),uint(333),uint(223),uint(51422),uint(113),uint(91),uint(201),uint(16172),uint(1411),uint(1323),uint(50982),uint(1191),uint(16062),uint(1213),uint(15974),uint(50872),uint(18442),uint(15842),uint(15952),uint(51202),uint(18222),uint(1433),uint(641),uint(15534),uint(663),uint(751),uint(15622),uint(50652),uint(971),uint(50542),uint(1103),uint(1081),uint(18662),uint(16361),uint(15072),uint(50212),uint(1961),uint(16432),uint(122),uint(144),uint(16212),uint(12),uint(34),uint(16102),uint(562),uint(60751),uint(15662),uint(364),uint(232),uint(1332),uint(15112),uint(51331),uint(51023),uint(892),uint(18192),uint(1222),uint(50583),uint(50011),uint(50033),uint(50891),uint(50781),uint(18742),uint(50121),uint(16331),uint(50341),uint(16313),uint(16573),uint(263),uint(241),uint(16203),uint(21),uint(16181),uint(43),uint(131),uint(16093),uint(571),uint(593),uint(681),uint(791),uint(15653),uint(15521),uint(25192),uint(351),uint(15411),uint(50843),uint(50623),uint(1363),uint(50931),uint(901),uint(1033),uint(18614),uint(50293),uint(1341),uint(16401),uint(16221),uint(16243),uint(16133),uint(16023),uint(50051),uint(15913),uint(15561),uint(15143),uint(15231),uint(15253),uint(272),uint(294),uint(162),uint(15011),uint(15363),uint(15033),uint(52),uint(18271),uint(50592),uint(1042),uint(1152),uint(1174),uint(50152),uint(18711),uint(50372),uint(53091),uint(18821),uint(16322),uint(1262),uint(15623),uint(15161),uint(50521),uint(15271),uint(50653),uint(16393),uint(15073),uint(15051),uint(16833),uint(413),uint(281),uint(83),uint(831),uint(61),uint(523),uint(50842),uint(1183),uint(1051),uint(16032),uint(15922),uint(1403),uint(50292),uint(15042),uint(50622),uint(10242),uint(15262),uint(16402),uint(642),uint(532),uint(664),uint(752),uint(422),uint(972),uint(202),uint(1104),uint(1082),uint(92),uint(18641),uint(18663),uint(16182),uint(18443),uint(18421),uint(51322),uint(18223),uint(50332),uint(50442),uint(15522),uint(1962),uint(50662),uint(15412),uint(1324),uint(1192),uint(16362),uint(50112),uint(15082),uint(50222),uint(1412),uint(10273),uint(13),uint(101),uint(123),uint(541),uint(893),uint(981),uint(1201),uint(18694),uint(51423),uint(16261),uint(233),uint(1091),uint(16173),uint(16151),uint(16063),uint(15953),uint(16041),uint(50851),uint(15843),uint(18452),uint(51203),uint(563),uint(18342),uint(18232),uint(651)})&.Rotten:== uint(50161)))|(.Peel:->contains($uint,[]uint{uint(50079),uint(50057),uint(51188),uint(50088),uint(51179),uint(51069),uint(50959),uint(50228),uint(59098),uint(51187),uint(61377),uint(50109),uint(50087),uint(61258),uint(51227),uint(50127),uint(50058),uint(51189),uint(50089),uint(50067),uint(50837),uint(51197),uint(59099),uint(50757),uint(50977),uint(50229),uint(50357),uint(55557),uint(50137),uint(61378),uint(61259),uint(51228),uint(50128),uint(50068),uint(60038),uint(50059),uint(51199),uint(51177),uint(51067),uint(50759),uint(50957),uint(50979),uint(50077),uint(50838),uint(50129),uint(50107),uint(51198),uint(50758),uint(50978),uint(60037),uint(50358),uint(50138),uint(55567),uint(51229),uint(61379),uint(60039),uint(50839),uint(50069),uint(51178),uint(51068),uint(50078),uint(50958),uint(50108),uint(59097),uint(61257),uint(50227),uint(50359),uint(50139)})&.Rotten:== uint(50002)))|(.Rotten:== uint(10387)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10208)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(36401),uint(16408),uint(36402),uint(16401),uint(16406),uint(16402),uint(36403),uint(16407),uint(16403)})&.Rotten:== uint(35111)))|(.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})&.Rotten:== uint(10066)))|(.Peel:->contains($uint,[]uint{uint(10131),uint(10122),uint(10123),uint(10101),uint(10132),uint(10102),uint(10111),uint(10151),uint(11031),uint(10112),uint(10121),uint(10152),uint(11032)})&.Rotten:== uint(1811)))|(.Rotten:== uint(8189)&.Peel:->contains($uint,[]uint{uint(37221),uint(57152),uint(29156),uint(17228),uint(29222),uint(57222),uint(9221),uint(17158),uint(37151),uint(49223),uint(29227),uint(29152),uint(9226),uint(9151),uint(37156),uint(57153),uint(37222),uint(29157),uint(29223),uint(37152),uint(9222),uint(9156),uint(9152),uint(17221),uint(57223),uint(29228),uint(37226),uint(17151),uint(9227),uint(17226),uint(37153),uint(9223),uint(9157),uint(49151),uint(37228),uint(37227),uint(17222),uint(17156),uint(17152),uint(49221),uint(9228),uint(37223),uint(37157),uint(49152),uint(29221),uint(17227),uint(57151),uint(17157),uint(17223),uint(57221),uint(29226),uint(29151),uint(37158),uint(49222),uint(17153)})))|(.Rotten:== uint(20057)&.Peel:->contains($uint,[]uint{uint(83),uint(81),uint(82)})))|(.Rotten:== uint(10071)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(41),uint(42),uint(43)})&.Rotten:== uint(6666)))|(.Rotten:== uint(10174)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10046)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10210)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(9261),uint(9231),uint(17261),uint(9161),uint(9262),uint(9241),uint(9232),uint(9162),uint(17262),uint(9233),uint(9242),uint(9163)})&.Rotten:== uint(30261)))|(.Rotten:== uint(10274)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(4911)&.Peel:->contains($uint,[]uint{uint(11061),uint(11062),uint(11063)})))|(.Rotten:== uint(10093)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10360)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10463)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10413)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10068)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10232)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(10233),uint(10123),uint(10761),uint(10801),uint(10132),uint(10172),uint(10832),uint(10181),uint(10841),uint(10221),uint(10762),uint(10802),uint(10182),uint(10151),uint(10833),uint(10191),uint(10763),uint(10842),uint(10222),uint(10152),uint(10121),uint(10231),uint(10803),uint(10161),uint(10843),uint(10192),uint(10122),uint(10232),uint(10223),uint(61142),uint(10131),uint(10171),uint(10162),uint(61141),uint(10831)})&.Rotten:== uint(6811)))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10158)))|(.Rotten:== uint(10161)&.Peel:->contains($uint,[]uint{uint(18071),uint(1453),uint(1321),uint(1343),uint(18401),uint(10741),uint(33831),uint(14692),uint(10653),uint(10521),uint(63864),uint(10323),uint(14582),uint(3191),uint(8541),uint(11313),uint(3433),uint(8343),uint(4612),uint(8211),uint(8233),uint(8321),uint(13262),uint(4722),uint(10763),uint(11643),uint(32),uint(2443),uint(10983),uint(10961),uint(2861),uint(2773),uint(13812),uint(7771),uint(2751),uint(7683),uint(4643),uint(4621),uint(4731),uint(4511),uint(61915),uint(8572),uint(15211),uint(11392),uint(11612),uint(10842),uint(4841),uint(692),uint(10732),uint(8242),uint(4863),uint(1242),uint(3851),uint(1352),uint(7912),uint(3763),uint(3741),uint(5061),uint(5501),uint(10952),uint(912),uint(3521),uint(7362),uint(13913),uint(13803),uint(2452),uint(14661),uint(9201),uint(4203),uint(4181),uint(33822),uint(4423),uint(11542),uint(7393),uint(7371),uint(3332),uint(7613),uint(3442),uint(7701),uint(10882),uint(10904),uint(4212),uint(2562),uint(4432),uint(8691),uint(11322),uint(17952),uint(7041),uint(723),uint(14173),uint(18172),uint(14151),uint(12862),uint(613),uint(12752),uint(921),uint(943),uint(59961),uint(9131),uint(5633),uint(60863),uint(701),uint(1383),uint(1361),uint(1273),uint(1251),uint(3882),uint(58122),uint(17332),uint(14613),uint(3772),uint(1163),uint(14723),uint(6183),uint(3662),uint(12853),uint(6192),uint(13161),uint(12391),uint(13953),uint(13711),uint(13733),uint(13821),uint(3451),uint(4872),uint(4652),uint(8581),uint(59222),uint(3231),uint(8383),uint(3253),uint(8163),uint(2791),uint(2813),uint(8031),uint(2571),uint(2681),uint(59772),uint(7943),uint(7921),uint(4903),uint(17152),uint(4881),uint(842),uint(9162),uint(13201),uint(622),uint(952),uint(13311),uint(5211),uint(12563),uint(12651),uint(732),uint(13663),uint(5563),uint(1392),uint(8172),uint(3913),uint(7952),uint(3803),uint(1172),uint(3891),uint(3781),uint(1282),uint(3671),uint(3693),uint(10262),uint(10372),uint(58962),uint(7182),uint(4661),uint(7072),uint(10341),uint(7411),uint(3262),uint(7521),uint(10913),uint(7103),uint(7081),uint(10693),uint(4692),uint(4582),uint(7191),uint(10473),uint(7213),uint(983),uint(6113),uint(13192),uint(653),uint(631),uint(741),uint(13522),uint(873),uint(851),uint(11001),uint(60854),uint(13742),uint(17953),uint(18173),uint(1423),uint(8612),uint(11331),uint(1291),uint(1313),uint(11243),uint(1181),uint(11221),uint(1401),uint(3812),uint(11353),uint(14662),uint(10403),uint(10381),uint(2391),uint(10931),uint(6122),uint(10161),uint(10953),uint(11041),uint(2501),uint(1973),uint(1951),uint(10843),uint(17601),uint(10821),uint(10733),uint(61914),uint(10623),uint(3733),uint(13232),uint(3711),uint(3821),uint(4912),uint(13672),uint(8511),uint(8423),uint(8401),uint(3073),uint(11393),uint(3161),uint(3183),uint(3271),uint(2853),uint(8291),uint(8071),uint(662),uint(7961),uint(8181),uint(11613),uint(992),uint(4921),uint(882),uint(63863),uint(11252),uint(8621),uint(60911),uint(11274),uint(8322),uint(8212),uint(8234),uint(3953),uint(1322),uint(3843),uint(5581),uint(9171),uint(14433),uint(7772),uint(14631),uint(4151),uint(4173),uint(2752),uint(12682),uint(4481),uint(7112),uint(4371),uint(4393),uint(4613),uint(4591),uint(9941),uint(15071),uint(7442),uint(7332),uint(7222),uint(4723),uint(7913),uint(3852),uint(3742),uint(4182),uint(3522),uint(33),uint(7781),uint(4512),uint(3192),uint(2862),uint(4622),uint(7121),uint(7561),uint(13162),uint(11644),uint(693),uint(671),uint(7451),uint(4732),uint(4842),uint(7363),uint(14671),uint(14693),uint(1331),uint(1243),uint(1221),uint(17971),uint(913),uint(891),uint(14583),uint(1771),uint(12392),uint(1353),uint(1441),uint(33832),uint(2563),uint(2651),uint(2453),uint(9202),uint(7042),uint(13813),uint(2871),uint(2761),uint(13681),uint(1881),uint(63271),uint(3773),uint(3883),uint(3861),uint(5062),uint(10522),uint(10962),uint(10324),uint(3663),uint(3751),uint(3311),uint(8573),uint(3421),uint(3443),uint(702),uint(10742),uint(3201),uint(8221),uint(13263),uint(10764),uint(8243),uint(1362),uint(1252),uint(13743),uint(13523),uint(59773),uint(922),uint(13831),uint(10342),uint(12863),uint(8582),uint(12753),uint(19031),uint(2682),uint(8032),uint(11002),uint(2572),uint(33823),uint(4213),uint(4191),uint(7702),uint(4301),uint(11222),uint(7922),uint(4433),uint(2792),uint(11332),uint(4653),uint(7372),uint(4741),uint(4631),uint(13193),uint(5071),uint(4961),uint(59223),uint(13281),uint(4873),uint(10861),uint(10883),uint(161),uint(10971),uint(8173),uint(3892),uint(3782),uint(7953),uint(3672),uint(7931),uint(733),uint(711),uint(7601),uint(18072),uint(4882),uint(7381),uint(623),uint(843),uint(4662),uint(931),uint(953),uint(3452),uint(3232),uint(18402),uint(1283),uint(17333),uint(1393),uint(1371),uint(13822),uint(7161),uint(7183),uint(1261),uint(13712),uint(6193),uint(7073),uint(1173),uint(8692),uint(11521),uint(14152),uint(11543),uint(9132),uint(60851),uint(2801),uint(11253),uint(11231),uint(11341),uint(61911),uint(11451),uint(11275),uint(7082),uint(7192),uint(10901),uint(2471),uint(8622),uint(3681),uint(17351),uint(3813),uint(3791),uint(852),uint(17153),uint(9172),uint(632),uint(14632),uint(3263),uint(8481),uint(3241),uint(742),uint(60864),uint(1424),uint(1402),uint(8613),uint(1952),uint(1292),uint(1182),uint(8701),uint(13202),uint(9031),uint(6123),uint(16031),uint(13312),uint(8512),uint(9163),uint(4231),uint(8402),uint(8292),uint(15041),uint(58123),uint(8182),uint(3162),uint(19032),uint(4561),uint(4583),uint(4671),uint(8072),uint(7962),uint(4693),uint(4913),uint(4891),uint(10373),uint(10263),uint(2392),uint(7412),uint(5221),uint(12652),uint(7522),uint(2502),uint(12582),uint(4372),uint(4482),uint(641),uint(8213),uint(8191),uint(4592),uint(60912),uint(3822),uint(7773),uint(9181),uint(971),uint(9203),uint(3712),uint(993),uint(7971),uint(1081),uint(663),uint(7443),uint(4922),uint(13682),uint(3272),uint(861),uint(883),uint(7113),uint(15191),uint(7421),uint(1411),uint(7333),uint(1301),uint(1323),uint(7223),uint(10611),uint(10523),uint(10391),uint(10501),uint(4152),uint(3193),uint(9942),uint(3281),uint(13761),uint(7122),uint(2863),uint(17602),uint(14201),uint(7452),uint(10382),uint(14663),uint(2753),uint(4161),uint(12771),uint(4183),uint(10162),uint(12683),uint(14421),uint(10822),uint(18231),uint(694),uint(672),uint(5582),uint(3831),uint(3853),uint(3743),uint(13233),uint(3721),uint(1222),uint(13431),uint(10932),uint(13673),uint(892),uint(58963),uint(3523),uint(8521),uint(11042),uint(1772),uint(1882),uint(13911),uint(1442),uint(1332),uint(14153),uint(17334),uint(6031),uint(3202),uint(4513),uint(11522),uint(3422),uint(4623),uint(3312),uint(4843),uint(8222),uint(13163),uint(13251),uint(4733),uint(10862),uint(5041),uint(5063),uint(10972),uint(2872),uint(7562),uint(13801),uint(131),uint(13823),uint(2652),uint(2762),uint(7782),uint(13713),uint(8693),uint(4632),uint(11271),uint(4742),uint(8583),uint(11645),uint(8341),uint(4962),uint(10765),uint(703),uint(8231),uint(10721),uint(681),uint(10743),uint(1253),uint(1231),uint(1341),uint(3862),uint(7923),uint(1363),uint(3752),uint(8033),uint(901),uint(7681),uint(10963),uint(923),uint(7703),uint(58965),uint(7351),uint(60914),uint(2441),uint(1451),uint(7373),uint(14672),uint(12151),uint(4192),uint(33833),uint(4302),uint(7043),uint(11531),uint(11641),uint(7382),uint(7602),uint(3453),uint(3431),uint(3233),uint(10981),uint(4201),uint(2683),uint(11003),uint(2573),uint(4421),uint(11223),uint(7162),uint(162),uint(11333),uint(8702),uint(11311),uint(2793),uint(2771),uint(18073),uint(12851),uint(9032),uint(932),uint(18403),uint(60852),uint(712),uint(1372),uint(1262),uint(3893),uint(3673),uint(3783),uint(3761),uint(6181),uint(2472),uint(13282),uint(9133),uint(60861),uint(13832),uint(4641),uint(4861),uint(4663),uint(8482),uint(4883),uint(3242),uint(2802),uint(10761),uint(5631),uint(10651),uint(5191),uint(10321),uint(10343),uint(7932),uint(7954),uint(17972),uint(4892),uint(853),uint(633),uint(941),uint(611),uint(13432),uint(12772),uint(8513),uint(9173),uint(721),uint(743),uint(8381),uint(8403),uint(8293),uint(1381),uint(1403),uint(9943),uint(8161),uint(13762),uint(7941),uint(1161),uint(3792),uint(8073),uint(1293),uint(3682),uint(1271),uint(1183),uint(7963),uint(10383),uint(7611),uint(10471),uint(7413),uint(7391),uint(2393),uint(10933),uint(10911),uint(15271),uint(16041),uint(7523),uint(10163),uint(2503),uint(4232),uint(10823),uint(4562),uint(4672),uint(7193),uint(10691),uint(1953),uint(7083),uint(61912),uint(19033),uint(10264),uint(7774),uint(3713),uint(3691),uint(14171),uint(7422),uint(3273),uint(3251),uint(4153),uint(10902),uint(58124),uint(2811),uint(4373),uint(92),uint(4483),uint(3163),uint(14721),uint(7334),uint(14633),uint(4593),uint(14611),uint(17352),uint(972),uint(1082),uint(13203),uint(642),uint(13313),uint(13401),uint(862),uint(13731),uint(60865),uint(8623),uint(1302),uint(11342),uint(11232),uint(13951),uint(1412),uint(11452),uint(3911),uint(3823),uint(3801),uint(10502),uint(10392),uint(14673),uint(58964),uint(6111),uint(14431),uint(15201),uint(10766),uint(10722),uint(10612),uint(3722),uint(5231),uint(13331),uint(4923),uint(4901),uint(63861),uint(13683),uint(13661),uint(8522),uint(11272),uint(2864),uint(8192),uint(3282),uint(673),uint(651),uint(60913),uint(7972),uint(18232),uint(5561),uint(5583),uint(981),uint(1223),uint(893),uint(871),uint(1773),uint(8421),uint(11241),uint(1421),uint(1443),uint(11351),uint(8223),uint(3832),uint(1311),uint(1333),uint(9182),uint(7783),uint(14202),uint(2851),uint(4162),uint(7563),uint(2763),uint(14422),uint(7123),uint(12561),uint(12583),uint(7101),uint(7211),uint(1883),uint(1971),uint(17603),uint(7453),uint(7431),uint(3863),uint(3841),uint(3731),uint(3753),uint(4171),uint(132),uint(4193),uint(3423),uint(4303),uint(7682),uint(4391),uint(3181),uint(4721),uint(3203),uint(4633),uint(11391),uint(3313),uint(4611),uint(2873),uint(4963),uint(682),uint(4743),uint(13261),uint(13283),uint(7352),uint(3071),uint(11611),uint(59771),uint(1232),uint(902),uint(1342),uint(3951),uint(1452),uint(33821),uint(2442),uint(13802),uint(2772),uint(13912),uint(5271),uint(10621),uint(10863),uint(31),uint(3762),uint(10951),uint(10401),uint(163),uint(6041),uint(3432),uint(8342),uint(10841),uint(713),uint(8232),uint(691),uint(13252),uint(10731),uint(1263),uint(1241),uint(1351),uint(1373),uint(13732),uint(13952),uint(17353),uint(911),uint(933),uint(17331),uint(12852),uint(14172),uint(8571),uint(8483),uint(5632),uint(8241),uint(10903),uint(2561),uint(4202),uint(11233),uint(4422),uint(7933),uint(7911),uint(11343),uint(2803),uint(11321),uint(7383),uint(4642),uint(7361),uint(7163),uint(7603),uint(2451),uint(2473),uint(4862),uint(13402),uint(10881),uint(10762),uint(4211),uint(4233),uint(10652),uint(10982),uint(3881),uint(58121),uint(8162),uint(3771),uint(14581),uint(4431),uint(3793),uint(11312),uint(17973),uint(4651),uint(17951),uint(10322),uint(14691),uint(11224),uint(4563),uint(3661),uint(7942),uint(3683),uint(3441),uint(4893),uint(3331),uint(612),uint(7392),uint(7612),uint(4871),uint(4673),uint(18171),uint(942),uint(3243),uint(59221),uint(722),uint(1272),uint(1382),uint(13833),uint(13811),uint(8703),uint(6182),uint(1162),uint(11532),uint(9033),uint(11642),uint(60862),uint(58125),uint(2812),uint(15061),uint(11242),uint(10692),uint(11352),uint(10472),uint(7071),uint(7181),uint(10912),uint(58961),uint(13741),uint(13763),uint(12562),uint(8611),uint(5201),uint(3912),uint(3692),uint(3802),uint(863),uint(14423),uint(841),uint(951),uint(6191),uint(9183),uint(643),uint(1083),uint(14203),uint(973),uint(9161),uint(621),uint(3252),uint(8382),uint(731),uint(5584),uint(5562),uint(60853),uint(1391),uint(1413),uint(1171),uint(1281),uint(1303),uint(11453),uint(13191),uint(6112),uint(11541),uint(13433),uint(8523),uint(13521),uint(8171),uint(8193),uint(7951),uint(7973),uint(14612),uint(14722),uint(10384),uint(4902),uint(12861),uint(7423),uint(12751),uint(12773),uint(12681),uint(8422),uint(4581),uint(652),uint(3811),uint(4691),uint(13231),uint(3833),uint(982),uint(13253),uint(3723),uint(4911),uint(18233),uint(13671),uint(3261),uint(3283),uint(872),uint(7102),uint(1972),uint(1422),uint(7212),uint(1312),uint(10622),uint(10402),uint(4163),uint(7221),uint(3072),uint(3182),uint(7111),uint(2852),uint(7441),uint(7353),uint(7331),uint(10503),uint(17151),uint(10371),uint(10393),uint(4172),uint(10261),uint(4392),uint(133),uint(14432),uint(11251),uint(11273),uint(683),uint(661),uint(10723),uint(61913),uint(3952),uint(10613),uint(3842),uint(13332),uint(1233),uint(3732),uint(881),uint(6121),uint(63862),uint(13662),uint(903),uint(991)})))|(.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})&.Rotten:== uint(10106)))|(.Peel:->contains($uint,[]uint{uint(24873),uint(4392),uint(8541),uint(41161),uint(24917),uint(24741),uint(20702),uint(20922),uint(29132),uint(61862),uint(133),uint(20988),uint(28692),uint(8233),uint(4436),uint(3886),uint(20856),uint(61554),uint(24191),uint(25071),uint(4656),uint(3666),uint(991),uint(3732),uint(7771),uint(9047),uint(3688),uint(24301),uint(947),uint(4898),uint(60916),uint(24433),uint(11612),uint(52860),uint(4876),uint(3336),uint(44232),uint(683),uint(3248),uint(727),uint(7617),uint(15277),uint(30342),uint(31543),uint(17939),uint(31521),uint(1453),uint(21956),uint(30386),uint(7397),uint(1343),uint(7353),uint(7331),uint(1387),uint(1167),uint(59772),uint(43682),uint(23311),uint(21406),uint(21362),uint(63864),uint(10521),uint(10389),uint(27073),uint(10477),uint(27381),uint(23883),uint(23663),uint(21318),uint(12778),uint(4172),uint(27161),uint(4238),uint(23751),uint(19501),uint(30267),uint(2861),uint(30377),uint(23672),uint(19391),uint(7076),uint(2817),uint(3191),uint(2773),uint(13737),uint(23232),uint(7362),uint(23452),uint(60859),uint(19171),uint(17358),uint(24178),uint(24156),uint(43163),uint(39322),uint(12857),uint(2751),uint(32),uint(31257),uint(27218),uint(27196),uint(23892),uint(4181),uint(23738),uint(20931),uint(20843),uint(26193),uint(58967),uint(11326),uint(20711),uint(27702),uint(20733),uint(11238),uint(16236),uint(692),uint(22396),uint(11546),uint(32502),uint(5602),uint(22572),uint(11458),uint(30971),uint(22858),uint(20161),uint(1088),uint(3741),uint(47193),uint(3763),uint(3697),uint(22792),uint(1176),uint(6196),uint(23166),uint(23188),uint(736),uint(10842),uint(27966),uint(846),uint(3521),uint(27922),uint(23078),uint(978),uint(28032),uint(27363),uint(59961),uint(23522),uint(47211),uint(5567),uint(63868),uint(1418),uint(1396),uint(5501),uint(30962),uint(1308),uint(23192),uint(23236),uint(5633),uint(5589),uint(1352),uint(14899),uint(38121),uint(10376),uint(27781),uint(23742),uint(6183),uint(30522),uint(10398),uint(27913),uint(10266),uint(23676),uint(20671),uint(11278),uint(11256),uint(28617),uint(11322),uint(3332),uint(8242),uint(4863),uint(25603),uint(4907),uint(20847),uint(11542),uint(20693),uint(20737),uint(36238),uint(39397),uint(7956),uint(52869),uint(39507),uint(2562),uint(5061),uint(20033),uint(25581),uint(7934),uint(7912),uint(39177),uint(16232),uint(22752),uint(22862),uint(13667),uint(61910),uint(11247),uint(11357),uint(4652),uint(28542),uint(701),uint(723),uint(21771),uint(59222),uint(11643),uint(62557),uint(4916),uint(22563),uint(10697),uint(28234),uint(4872),uint(21331),uint(8031),uint(21353),uint(22761),uint(3882),uint(1163),uint(1317),uint(7921),uint(21441),uint(22651),uint(3728),uint(47774),uint(10939),uint(921),uint(7701),uint(61919),uint(7613),uint(943),uint(3662),uint(10961),uint(21177),uint(8528),uint(22871),uint(987),uint(8616),uint(7393),uint(7217),uint(12501),uint(24182),uint(24886),uint(45583),uint(1361),uint(1383),uint(58122),uint(1427),uint(17389),uint(60863),uint(9342),uint(17169),uint(9166),uint(9188),uint(48522),uint(4432),uint(11617),uint(7358),uint(15568),uint(3451),uint(7336),uint(23888),uint(23712),uint(28037),uint(3077),uint(24306),uint(58962),uint(3187),uint(3231),uint(24372),uint(27773),uint(24438),uint(19321),uint(10847),uint(2571),uint(28543),uint(11001),uint(4177),uint(28521),uint(4397),uint(7072),uint(8546),uint(24152),uint(4331),uint(2857),uint(8612),uint(138),uint(2813),uint(2791),uint(59226),uint(30822),uint(11221),uint(11243),uint(22392),uint(21081),uint(688),uint(732),uint(47703),uint(842),uint(21301),uint(22502),uint(20927),uint(20971),uint(22656),uint(20993),uint(9162),uint(23162),uint(1348),uint(1392),uint(23316),uint(58126),uint(3891),uint(22876),uint(3693),uint(3671),uint(44742),uint(996),uint(3737),uint(60867),uint(1172),uint(6192),uint(29181),uint(60911),uint(8691),uint(40923),uint(61558),uint(9043),uint(9131),uint(22863),uint(22753),uint(1458),uint(23237),uint(60854),uint(19176),uint(41341),uint(25582),uint(21411),uint(23193),uint(3526),uint(45063),uint(4661),uint(15207),uint(19506),uint(59776),uint(20166),uint(30382),uint(8238),uint(3196),uint(4881),uint(19396),uint(4903),uint(2778),uint(37),uint(2756),uint(5607),uint(5563),uint(7776),uint(24922),uint(24746),uint(7952),uint(10473),uint(10341),uint(27333),uint(2866),uint(4912),uint(851),uint(30373),uint(4868),uint(12858),uint(983),uint(43893),uint(9347),uint(39502),uint(40162),uint(5066),uint(8401),uint(697),uint(30263),uint(39392),uint(741),uint(27082),uint(8291),uint(13738),uint(1423),uint(5506),uint(31253),uint(31231),uint(8247),uint(27192),uint(12506),uint(1313),uint(39172),uint(1401),uint(8181),uint(23241),uint(16237),uint(5638),uint(1357),uint(36233),uint(7917),uint(7939),uint(7961),uint(3746),uint(21173),uint(3768),uint(21393),uint(21371),uint(25586),uint(43233),uint(60858),uint(10381),uint(27962),uint(7367),uint(24882),uint(2501),uint(10821),uint(2567),uint(10843),uint(2391),uint(42793),uint(28512),uint(4186),uint(24332),uint(24398),uint(28402),uint(7213),uint(7191),uint(24662),uint(1951),uint(28292),uint(7081),uint(28182),uint(10262),uint(7706),uint(3667),uint(10372),uint(20852),uint(24913),uint(20742),uint(7772),uint(7398),uint(3161),uint(3183),uint(52864),uint(59503),uint(4151),uint(3337),uint(7618),uint(4173),uint(2853),uint(31002),uint(3073),uint(4437),uint(4393),uint(4371),uint(4657),uint(7332),uint(38125),uint(17957),uint(27931),uint(10526),uint(27953),uint(24891),uint(926),uint(39841),uint(23681),uint(948),uint(62552),uint(63863),uint(6188),uint(11648),uint(29163),uint(992),uint(41372),uint(28701),uint(28613),uint(39401),uint(706),uint(21952),uint(13289),uint(728),uint(31046),uint(10966),uint(61914),uint(59173),uint(19057),uint(24231),uint(31222),uint(1388),uint(8511),uint(11318),uint(11274),uint(11252),uint(21336),uint(1168),uint(3887),uint(1366),uint(3711),uint(21446),uint(21424),uint(21402),uint(3733),uint(22793),uint(10522),uint(22771),uint(10478),uint(10346),uint(6197),uint(31223),uint(10962),uint(11006),uint(27162),uint(2576),uint(19392),uint(23453),uint(21957),uint(23673),uint(19326),uint(30387),uint(27382),uint(30343),uint(23167),uint(23233),uint(10698),uint(19172),uint(3742),uint(3698),uint(3676),uint(20162),uint(4921),uint(4877),uint(11644),uint(27954),uint(13527),uint(3456),uint(48523),uint(3522),uint(27932),uint(19502),uint(33),uint(11226),uint(58968),uint(24742),uint(8617),uint(24896),uint(24918),uint(11358),uint(5581),uint(5603),uint(2862),uint(8234),uint(3192),uint(61863),uint(13747),uint(2796),uint(2818),uint(3236),uint(28702),uint(11270),uint(671),uint(11248),uint(2752),uint(8036),uint(7926),uint(22397),uint(45584),uint(28526),uint(22573),uint(31003),uint(25631),uint(28231),uint(25587),uint(5062),uint(21372),uint(1177),uint(38122),uint(11547),uint(52861),uint(4886),uint(4908),uint(11613),uint(693),uint(737),uint(847),uint(21306),uint(27923),uint(28033),uint(27967),uint(20932),uint(11041),uint(20712),uint(8542),uint(28693),uint(20976),uint(61916),uint(24861),uint(24883),uint(1397),uint(11459),uint(8696),uint(1353),uint(1441),uint(3896),uint(11327),uint(30972),uint(1331),uint(5568),uint(9048),uint(9136),uint(24157),uint(7781),uint(7957),uint(7913),uint(39398),uint(12867),uint(2761),uint(12757),uint(12779),uint(4182),uint(31258),uint(23893),uint(18697),uint(2651),uint(2563),uint(23761),uint(39178),uint(24663),uint(1771),uint(7077),uint(31522),uint(4336),uint(19401),uint(7363),uint(29133),uint(17337),uint(63271),uint(60860),uint(17359),uint(4666),uint(58123),uint(7966),uint(7922),uint(3883),uint(21178),uint(8032),uint(21442),uint(3663),uint(3751),uint(21376),uint(21332),uint(20936),uint(4191),uint(8516),uint(4301),uint(7702),uint(7218),uint(11279),uint(11257),uint(4433),uint(7196),uint(8692),uint(702),uint(3311),uint(746),uint(7086),uint(4917),uint(20848),uint(2871),uint(9132),uint(25041),uint(4873),uint(20738),uint(4741),uint(11521),uint(20716),uint(39508),uint(24887),uint(20672),uint(20694),uint(11543),uint(60864),uint(23523),uint(27197),uint(23721),uint(856),uint(30378),uint(23743),uint(988),uint(922),uint(23677),uint(27703),uint(27351),uint(21772),uint(30268),uint(32503),uint(24183),uint(1318),uint(1362),uint(1428),uint(1406),uint(2572),uint(60851),uint(2396),uint(24302),uint(2506),uint(20131),uint(9167),uint(60917),uint(23752),uint(13668),uint(30391),uint(23686),uint(2858),uint(2792),uint(6193),uint(7073),uint(30523),uint(31271),uint(9343),uint(1956),uint(27166),uint(12502),uint(63869),uint(24236),uint(24192),uint(43072),uint(21407),uint(22652),uint(21363),uint(22762),uint(3892),uint(21341),uint(5071),uint(3738),uint(21451),uint(10267),uint(10971),uint(59223),uint(3716),uint(10377),uint(27782),uint(3672),uint(3452),uint(22872),uint(16233),uint(161),uint(20703),uint(20681),uint(3188),uint(733),uint(3232),uint(711),uint(28618),uint(20923),uint(8406),uint(843),uint(62558),uint(8296),uint(30963),uint(20857),uint(59773),uint(3166),uint(3078),uint(23312),uint(47212),uint(8186),uint(1393),uint(1371),uint(1173),uint(5586),uint(21456),uint(21412),uint(997),uint(44743),uint(21302),uint(25561),uint(931),uint(25583),uint(21082),uint(29182),uint(10263),uint(17087),uint(22864),uint(22776),uint(5608),uint(20928),uint(20972),uint(31272),uint(8239),uint(10967),uint(7931),uint(10747),uint(4156),uint(4178),uint(7953),uint(27167),uint(19177),uint(24153),uint(27211),uint(11253),uint(4332),uint(4376),uint(7777),uint(11231),uint(11319),uint(24901),uint(24747),uint(10527),uint(24923),uint(10373),uint(2867),uint(43071),uint(4398),uint(59227),uint(2757),uint(11275),uint(7381),uint(15569),uint(4662),uint(7337),uint(7161),uint(19397),uint(19507),uint(59777),uint(27783),uint(4882),uint(24307),uint(4926),uint(24373),uint(30392),uint(8182),uint(31241),uint(10826),uint(4187),uint(10848),uint(4231),uint(39173),uint(11002),uint(38),uint(10386),uint(11046),uint(30823),uint(7962),uint(7786),uint(3747),uint(27334),uint(20673),uint(14667),uint(20717),uint(3681),uint(10342),uint(11222),uint(7918),uint(24888),uint(698),uint(742),uint(7368),uint(3527),uint(28038),uint(852),uint(30471),uint(20167),uint(5067),uint(40163),uint(3241),uint(30383),uint(27774),uint(4913),uint(4891),uint(676),uint(3197),uint(1424),uint(1402),uint(23238),uint(28522),uint(1446),uint(21773),uint(1336),uint(1358),uint(1776),uint(7192),uint(7082),uint(21443),uint(8547),uint(21421),uint(41342),uint(1952),uint(8613),uint(61911),uint(13677),uint(8701),uint(21377),uint(61559),uint(23722),uint(56231),uint(39503),uint(21333),uint(13897),uint(21311),uint(9163),uint(20937),uint(9031),uint(20981),uint(11640),uint(23678),uint(39393),uint(11618),uint(11042),uint(2876),uint(28513),uint(10976),uint(28403),uint(24232),uint(2766),uint(2656),uint(28293),uint(41373),uint(29041),uint(62553),uint(59966),uint(19841),uint(2502),uint(2568),uint(10822),uint(2392),uint(4152),uint(13717),uint(13739),uint(31232),uint(8521),uint(8543),uint(61915),uint(23242),uint(3888),uint(8697),uint(17338),uint(3712),uint(21447),uint(3668),uint(3756),uint(21403),uint(21381),uint(21337),uint(17958),uint(20941),uint(927),uint(23726),uint(20853),uint(9137),uint(9181),uint(11548),uint(20743),uint(11526),uint(21161),uint(23682),uint(993),uint(20721),uint(971),uint(26181),uint(14157),uint(3162),uint(8402),uint(3316),uint(707),uint(8292),uint(23163),uint(5582),uint(1367),uint(22855),uint(22811),uint(16238),uint(23317),uint(58127),uint(8512),uint(1411),uint(19058),uint(22877),uint(44233),uint(1081),uint(1301),uint(39842),uint(41162),uint(11649),uint(23691),uint(6198),uint(29186),uint(23713),uint(39402),uint(58963),uint(19322),uint(9348),uint(21953),uint(43683),uint(43661),uint(4196),uint(4306),uint(2863),uint(4438),uint(2797),uint(2753),uint(3193),uint(27083),uint(4372),uint(27391),uint(60912),uint(60868),uint(8037),uint(7927),uint(27193),uint(4922),uint(22393),uint(27611),uint(4878),uint(10382),uint(24892),uint(12859),uint(4746),uint(22503),uint(27963),uint(7707),uint(7773),uint(7333),uint(52865),uint(2577),uint(5076),uint(12507),uint(30264),uint(22657),uint(24862),uint(20713),uint(20691),uint(4337),uint(20933),uint(61917),uint(8618),uint(20977),uint(28703),uint(166),uint(12503),uint(8706),uint(12151),uint(28527),uint(29187),uint(58120),uint(3897),uint(7958),uint(4667),uint(9168),uint(3677),uint(20031),uint(5063),uint(3721),uint(7782),uint(3743),uint(5041),uint(9036),uint(936),uint(60861),uint(7936),uint(4887),uint(3523),uint(11645),uint(20163),uint(672),uint(13669),uint(3237),uint(716),uint(694),uint(3457),uint(738),uint(848),uint(43891),uint(1772),uint(7078),uint(1442),uint(7386),uint(1332),uint(23168),uint(1398),uint(1376),uint(1178),uint(7166),uint(47213),uint(47191),uint(24158),uint(43231),uint(21373),uint(21351),uint(10378),uint(10268),uint(27392),uint(38123),uint(4183),uint(21307),uint(27216),uint(18698),uint(23762),uint(7197),uint(23727),uint(30388),uint(3246),uint(23683),uint(23661),uint(7087),uint(13748),uint(19402),uint(19842),uint(23243),uint(23331),uint(2872),uint(60914),uint(7351),uint(50473),uint(24233),uint(10391),uint(63866),uint(10347),uint(12868),uint(27163),uint(2762),uint(23881),uint(31224),uint(4236),uint(131),uint(2652),uint(4192),uint(12758),uint(4302),uint(20942),uint(20986),uint(27361),uint(27383),uint(20722),uint(11271),uint(26182),uint(11227),uint(681),uint(703),uint(10699),uint(11337),uint(11359),uint(10523),uint(22561),uint(28241),uint(25632),uint(3752),uint(52862),uint(3686),uint(747),uint(27933),uint(3312),uint(27911),uint(923),uint(10963),uint(857),uint(17937),uint(17959),uint(13528),uint(11007),uint(23313),uint(27352),uint(1957),uint(23071),uint(13898),uint(1451),uint(1429),uint(43161),uint(43073),uint(1407),uint(27616),uint(23181),uint(19846),uint(1363),uint(1341),uint(30841),uint(28232),uint(14668),uint(17387),uint(23731),uint(10343),uint(23753),uint(10387),uint(17167),uint(27968),uint(19406),uint(23687),uint(3233),uint(20682),uint(3167),uint(8407),uint(62559),uint(4896),uint(8187),uint(8297),uint(20858),uint(8231),uint(58960),uint(11531),uint(11641),uint(4742),uint(20726),uint(2507),uint(7967),uint(2573),uint(8033),uint(10827),uint(2397),uint(20132),uint(4918),uint(7923),uint(10937),uint(162),uint(11003),uint(22873),uint(2771),uint(2793),uint(8526),uint(11047),uint(8548),uint(7703),uint(11223),uint(47772),uint(22763),uint(22851),uint(13678),uint(11258),uint(11236),uint(4663),uint(21958),uint(712),uint(22398),uint(15077),uint(4883),uint(4927),uint(4861),uint(58969),uint(11522),uint(21342),uint(3893),uint(7932),uint(1306),uint(22772),uint(25601),uint(25271),uint(3761),uint(21452),uint(3673),uint(7954),uint(21408),uint(3717),uint(932),uint(61864),uint(10972),uint(1086),uint(3453),uint(976),uint(8517),uint(7778),uint(21166),uint(998),uint(24743),uint(19327),uint(61556),uint(7382),uint(8693),uint(19393),uint(30269),uint(7162),uint(24237),uint(19173),uint(24193),uint(24897),uint(1416),uint(24171),uint(1372),uint(7338),uint(60852),uint(60918),uint(9133),uint(24303),uint(4157),uint(24391),uint(27198),uint(19503),uint(4377),uint(3242),uint(7611),uint(23723),uint(19508),uint(7193),uint(19398),uint(3198),uint(20168),uint(7391),uint(61912),uint(59171),uint(63276),uint(4232),uint(10968),uint(4188),uint(59501),uint(7083),uint(8513),uint(2868),uint(11276),uint(2758),uint(11232),uint(677),uint(699),uint(743),uint(721),uint(21312),uint(853),uint(22777),uint(5631),uint(56232),uint(5587),uint(20938),uint(9041),uint(20982),uint(12508),uint(52866),uint(1381),uint(1337),uint(31251),uint(14897),uint(12156),uint(1447),uint(1403),uint(17330),uint(3682),uint(3726),uint(3748),uint(25562),uint(60856),uint(941),uint(20718),uint(17088),uint(3528),uint(1161),uint(41343),uint(6181),uint(25584),uint(29183),uint(8702),uint(29161),uint(2393),uint(22852),uint(9032),uint(2503),uint(9186),uint(63861),uint(47771),uint(28611),uint(58124),uint(23072),uint(60865),uint(1777),uint(21422),uint(21378),uint(23182),uint(1953),uint(19847),uint(10264),uint(30261),uint(3163),uint(5068),uint(5046),uint(20133),uint(8403),uint(3317),uint(30393),uint(19407),uint(30371),uint(8293),uint(4892),uint(27212),uint(2767),uint(136),uint(10748),uint(2877),uint(7963),uint(2657),uint(27168),uint(7787),uint(10528),uint(24911),uint(43191),uint(10396),uint(2811),uint(4901),uint(4923),uint(30384),uint(972),uint(47701),uint(26191),uint(12869),uint(4747),uint(13287),uint(928),uint(30472),uint(12759),uint(9138),uint(9182),uint(13529),uint(686),uint(708),uint(43662),uint(39403),uint(5583),uint(27071),uint(1456),uint(5561),uint(13749),uint(21448),uint(31242),uint(8236),uint(22812),uint(1302),uint(19059),uint(1346),uint(23186),uint(22878),uint(1412),uint(22856),uint(1368),uint(58128),uint(1082),uint(21162),uint(60913),uint(3757),uint(8038),uint(21382),uint(3713),uint(21338),uint(23076),uint(3691),uint(60869),uint(21316),uint(7928),uint(10392),uint(10348),uint(7356),uint(24871),uint(7774),uint(7334),uint(24893),uint(27951),uint(7708),uint(2578),uint(11008),uint(4197),uint(28523),uint(4153),uint(24431),uint(4373),uint(4307),uint(24651),uint(62554),uint(39843),uint(45061),uint(27612),uint(21083),uint(3678),uint(21171),uint(20841),uint(3458),uint(59778),uint(7783),uint(20731),uint(3238),uint(7387),uint(42791),uint(14158),uint(10823),uint(20973),uint(24396),uint(2864),uint(2798),uint(2776),uint(167),uint(24748),uint(4668),uint(17339),uint(24902),uint(7167),uint(7211),uint(10383),uint(10471),uint(23692),uint(937),uint(29042),uint(23736),uint(40921),uint(981),uint(11527),uint(23318),uint(673),uint(717),uint(24308),uint(41163),uint(10977),uint(59228),uint(13718),uint(31233),uint(1443),uint(1421),uint(19178),uint(36231),uint(24176),uint(8522),uint(58964),uint(61551),uint(1311),uint(3898),uint(31321),uint(21457),uint(8698),uint(1377),uint(11241),uint(21303),uint(1333),uint(3766),uint(31541),uint(3722),uint(21413),uint(21391),uint(18699),uint(59771),uint(6186),uint(31256),uint(10841),uint(27217),uint(10269),uint(31322),uint(19403),uint(27613),uint(30266),uint(26183),uint(27701),uint(1773),uint(31542),uint(23662),uint(30376),uint(27393),uint(62556),uint(23332),uint(47192),uint(17357),uint(3731),uint(3753),uint(3687),uint(4866),uint(25633),uint(4888),uint(27921),uint(61918),uint(3313),uint(132),uint(28031),uint(8518),uint(11237),uint(24863),uint(5636),uint(3071),uint(2851),uint(3247),uint(59221),uint(2763),uint(28691),uint(3181),uint(11611),uint(7937),uint(19843),uint(9046),uint(2873),uint(22562),uint(7959),uint(25061),uint(11457),uint(28242),uint(946),uint(21383),uint(11646),uint(5271),uint(1166),uint(32501),uint(4897),uint(21163),uint(682),uint(726),uint(27912),uint(748),uint(858),uint(21361),uint(21317),uint(17938),uint(24916),uint(20723),uint(20921),uint(20943),uint(8408),uint(20987),uint(11272),uint(20701),uint(11228),uint(58966),uint(28616),uint(61861),uint(24872),uint(8298),uint(28528),uint(22571),uint(1386),uint(1408),uint(8707),uint(8232),uint(11536),uint(1452),uint(61553),uint(11338),uint(30961),uint(5601),uint(1342),uint(39321),uint(9037),uint(7968),uint(2508),uint(24432),uint(2398),uint(2816),uint(23882),uint(2772),uint(4171),uint(4193),uint(4237),uint(23728),uint(4303),uint(7616),uint(24652),uint(44231),uint(7088),uint(4391),uint(7396),uint(1958),uint(4743),uint(7352),uint(29188),uint(43681),uint(7198),uint(7933),uint(7911),uint(3762),uint(3674),uint(3718),uint(4158),uint(25602),uint(21343),uint(3696),uint(163),uint(61865),uint(31),uint(20991),uint(7779),uint(4378),uint(52868),uint(8527),uint(16231),uint(21167),uint(48521),uint(24656),uint(3168),uint(61557),uint(11246),uint(7163),uint(7383),uint(8703),uint(11224),uint(691),uint(713),uint(4906),uint(4928),uint(4862),uint(11642),uint(20727),uint(11532),uint(7361),uint(24898),uint(7339),uint(9033),uint(20683),uint(45582),uint(9341),uint(14669),uint(1087),uint(60919),uint(9187),uint(43162),uint(23886),uint(60853),uint(63867),uint(30521),uint(24392),uint(23732),uint(30389),uint(977),uint(24436),uint(23688),uint(933),uint(15197),uint(27362),uint(24238),uint(24172),uint(21453),uint(1351),uint(1373),uint(1307),uint(1417),uint(2561),uint(39396),uint(17388),uint(39506),uint(60862),uint(20032),uint(23741),uint(13679),uint(23763),uint(2869),uint(39176),uint(17168),uint(6182),uint(12777),uint(27331),uint(27353),uint(13899),uint(43193),uint(27617),uint(58121),uint(36237),uint(24181),uint(21352),uint(22773),uint(22751),uint(3881),uint(21308),uint(10476),uint(10828),uint(3727),uint(10938),uint(47773),uint(27771),uint(10388),uint(3683),uint(3661),uint(21176),uint(22861),uint(20692),uint(20736),uint(678),uint(722),uint(3243),uint(3331),uint(28541),uint(23521),uint(20978),uint(5632),uint(5588),uint(8241),uint(5566),uint(23191),uint(28233),uint(20846),uint(30842),uint(1316),uint(1382),uint(1162),uint(1338),uint(36236),uint(60866),uint(21423),uint(942),uint(21401),uint(986),uint(21313),uint(1778),uint(13719),uint(22501),uint(22391),uint(20851),uint(45062),uint(31041),uint(56233),uint(22853),uint(1448),uint(1426),uint(14159),uint(20983),uint(59172),uint(27332),uint(2878),uint(59502),uint(4233),uint(11242),uint(27618),uint(10472),uint(24912),uint(43192),uint(30843),uint(2856),uint(10384),uint(2812),uint(4431),uint(7788),uint(30821),uint(2768),uint(7392),uint(28036),uint(62551),uint(7216),uint(7612),uint(4651),uint(19408),uint(4871),uint(4893),uint(27772),uint(21951),uint(30381),uint(10846),uint(31252),uint(45581),uint(10749),uint(8237),uint(27191),uint(27081),uint(4198),uint(27213),uint(14898),uint(137),uint(4176),uint(4308),uint(24657),uint(3758),uint(24921),uint(10397),uint(3692),uint(7951),uint(24151),uint(20728),uint(24173),uint(4396),uint(3736),uint(11277),uint(11233),uint(19848),uint(731),uint(3318),uint(7357),uint(951),uint(841),uint(4748),uint(27961),uint(3076),uint(24371),uint(30372),uint(24393),uint(24437),uint(52867),uint(4902),uint(30262),uint(3186),uint(687),uint(23183),uint(1413),uint(1391),uint(28511),uint(58125),uint(1457),uint(23073),uint(28401),uint(1347),uint(1303),uint(1083),uint(28181),uint(973),uint(28291),uint(1171),uint(6191),uint(7071),uint(17089),uint(23161),uint(23887),uint(21168),uint(11541),uint(11321),uint(23733),uint(20926),uint(58961),uint(9042),uint(20992),uint(23711),uint(24331),uint(2777),uint(24397),uint(58965),uint(11229),uint(24177),uint(24661),uint(11317),uint(11273),uint(11251),uint(7212),uint(7168),uint(23891),uint(11339),uint(52863),uint(28612),uint(63862),uint(168),uint(22857),uint(36),uint(31221),uint(39171),uint(31243),uint(5606),uint(23187),uint(5562),uint(22791),uint(22813),uint(23231),uint(5584),uint(8708),uint(58129),uint(5276),uint(61552),uint(21458),uint(3723),uint(3679),uint(23077),uint(3767),uint(21392),uint(9038),uint(43663),uint(29162),uint(11647),uint(23737),uint(20842),uint(11537),uint(20732),uint(40922),uint(938),uint(23693),uint(21172),uint(982),uint(26192),uint(23671),uint(9346),uint(23451),uint(718),uint(696),uint(5637),uint(61913),uint(1378),uint(36232),uint(1356),uint(1422),uint(8523),uint(8611),uint(1312),uint(11616),uint(29043),uint(6187),uint(41371),uint(43892),uint(29131),uint(39391),uint(13288),uint(39501),uint(9183),uint(9161),uint(8246),uint(3072),uint(2852),uint(31001),uint(3182),uint(27072),uint(38124),uint(7938),uint(44741),uint(60857),uint(7916),uint(20741),uint(25563),uint(15567),uint(43232),uint(30473),uint(45071),uint(30341),uint(4867),uint(10393),uint(10371),uint(4911),uint(24881),uint(27952),uint(24903),uint(47702),uint(7366),uint(10261),uint(42792),uint(2566),uint(40161),uint(22778),uint(7388)})&.Rotten:== uint(13164)))|(.Rotten:== uint(10485)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10258)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Peel:->contains($uint,[]uint{uint(1302),uint(20951),uint(3133),uint(841),uint(1303),uint(111),uint(842),uint(112),uint(843),uint(3131),uint(113),uint(1301),uint(844),uint(3132)})&.Rotten:== uint(20166)))|(.Rotten:== uint(10308)&.Peel:->contains($uint,[]uint{uint(1),uint(6),uint(2),uint(7),uint(3),uint(8),uint(4),uint(9),uint(5)})))|(.Rotten:== uint(10070)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10440)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10110)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10045)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(10508),uint(28512),uint(28402),uint(8207),uint(11168),uint(28204),uint(28182),uint(28393),uint(8198),uint(28503),uint(8506),uint(8396),uint(8418),uint(11313),uint(9166),uint(31222),uint(29163),uint(8194),uint(33391),uint(8502),uint(8392),uint(11221),uint(9162),uint(9888),uint(30201),uint(10187),uint(10209),uint(10517),uint(10407),uint(30202),uint(10183),uint(10403),uint(10513),uint(31161),uint(10196),uint(10328),uint(10416),uint(10504),uint(28508),uint(30193),uint(8203),uint(8181),uint(30413),uint(8511),uint(30501),uint(8401),uint(11318),uint(11226),uint(28411),uint(10412),uint(8199),uint(28191),uint(8507),uint(8397),uint(41227),uint(9167),uint(30184),uint(30514),uint(10192),uint(8516),uint(8406),uint(28403),uint(13391),uint(28513),uint(10188),uint(10408),uint(10201),uint(28183),uint(10509),uint(8186),uint(8208),uint(10197),uint(31311),uint(10417),uint(30321),uint(8182),uint(8204),uint(28196),uint(33392),uint(8512),uint(8402),uint(28504),uint(11222),uint(10518),uint(8393),uint(8503),uint(29881),uint(29221),uint(9163),uint(8191),uint(8411),uint(29222),uint(30181),uint(30203),uint(28509),uint(30401),uint(41228),uint(30511),uint(10184),uint(10206),uint(10514),uint(30502),uint(9168),uint(31162),uint(28201),uint(30194),uint(10202),uint(10413),uint(10501),uint(28192),uint(10193),uint(29226),uint(11161),uint(8398),uint(28412),uint(11227),uint(13396),uint(8508),uint(10519),uint(10189),uint(10321),uint(28501),uint(13392),uint(28391),uint(28413),uint(8196),uint(11311),uint(8504),uint(8416),uint(28193),uint(8209),uint(8187),uint(28514),uint(8517),uint(8407),uint(28184),uint(9221),uint(9881),uint(8183),uint(8403),uint(8513),uint(11166),uint(29882),uint(31312),uint(28197),uint(33393),uint(30322),uint(10198),uint(10506),uint(10418),uint(30191),uint(9886),uint(29883),uint(30323),uint(13397),uint(30411),uint(10194),uint(9226),uint(11162),uint(10326),uint(10502),uint(10207),uint(30204),uint(30182),uint(8192),uint(30402),uint(8412),uint(30512),uint(10511),uint(10401),uint(8188),uint(28202),uint(8518),uint(8408),uint(31163),uint(9222),uint(8201),uint(8509),uint(29161),uint(29227),uint(30503),uint(11316),uint(10203),uint(10181),uint(29162),uint(8417),uint(28392),uint(28502),uint(10199),uint(10507),uint(9882),uint(10322),uint(31221),uint(11312),uint(28194),uint(13393),uint(8197),uint(10186),uint(10208),uint(10516),uint(10406),uint(8193),uint(8501),uint(8391),uint(8413),uint(11167),uint(8184),uint(28198),uint(28506),uint(8206),uint(8514),uint(31313),uint(28199),uint(11317),uint(28507),uint(11163),uint(8202),uint(30192),uint(30412),uint(9161),uint(13398),uint(9227),uint(10327),uint(10503),uint(9887),uint(30513),uint(10411),uint(9883),uint(30183),uint(10191),uint(10323),uint(30403),uint(10402),uint(10512),uint(28181),uint(28203),uint(10204),uint(10182),uint(30504),uint(8189),uint(28511),uint(28401),uint(8519)})&.Rotten:== uint(43161)))|(.Peel:->contains($uint,[]uint{uint(83),uint(81),uint(82)})&.Rotten:== uint(10372)))|(.Rotten:== uint(10145)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10412)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(4),uint(1),uint(2),uint(3)})&.Rotten:== uint(10229)))|(.Rotten:== uint(10067)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10231)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10437)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10107)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(50555)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10111)&.Peel:->contains($uint,[]uint{uint(14192),uint(10901),uint(14302),uint(10923),uint(10703),uint(10681),uint(14632),uint(17351),uint(13202),uint(13312),uint(13422),uint(13752),uint(11341),uint(11253),uint(11231),uint(13862),uint(11363),uint(11442),uint(16031),uint(10892),uint(11222),uint(11332),uint(14183),uint(12872),uint(14161),uint(12762),uint(14623),uint(19032),uint(11262),uint(11372),uint(14663),uint(14201),uint(14641),uint(12802),uint(14421),uint(15191),uint(12472),uint(17602),uint(13453),uint(12793),uint(12771),uint(13431),uint(12683),uint(13783),uint(13673),uint(12441),uint(13761),uint(10932),uint(10162),uint(17681),uint(17703),uint(10712),uint(13823),uint(13801),uint(12811),uint(17972),uint(13691),uint(18192),uint(12503),uint(13911),uint(14153),uint(10642),uint(10862),uint(10972),uint(13163),uint(13273),uint(13251),uint(14672),uint(10611),uint(14562),uint(10853),uint(10941),uint(10721),uint(10633),uint(13242),uint(13682),uint(11271),uint(11161),uint(11183),uint(11403),uint(11381),uint(11293),uint(10871),uint(10893),uint(10673),uint(10651),uint(10981),uint(11311),uint(11333),uint(11223),uint(17611),uint(13832),uint(13722),uint(14162),uint(17963),uint(18161),uint(11421),uint(11443),uint(18073),uint(18381),uint(18403),uint(11302),uint(11412),uint(13282),uint(19173),uint(14373),uint(14483),uint(14593),uint(19943),uint(12442),uint(16041),uint(13432),uint(14633),uint(18241),uint(14611),uint(14721),uint(12772),uint(10163),uint(13731),uint(13753),uint(17352),uint(13951),uint(13071),uint(13863),uint(13841),uint(19033),uint(14303),uint(14193),uint(12873),uint(14171),uint(12763),uint(10682),uint(11232),uint(11342),uint(13181),uint(13203),uint(17612),uint(13313),uint(13423),uint(13401),uint(10902),uint(13881),uint(13771),uint(14211),uint(14563),uint(14673),uint(12803),uint(14431),uint(11162),uint(11272),uint(10722),uint(11382),uint(10612),uint(13243),uint(13331),uint(13441),uint(10942),uint(13683),uint(17682),uint(11263),uint(11241),uint(10713),uint(10691),uint(11373),uint(11351),uint(10911),uint(10933),uint(12473),uint(12451),uint(13762),uint(12561),uint(17603),uint(17361),uint(14422),uint(14202),uint(14642),uint(11303),uint(11281),uint(11413),uint(11391),uint(19161),uint(10841),uint(10731),uint(10863),uint(10951),uint(10973),uint(11171),uint(13802),uint(13912),uint(17071),uint(13252),uint(13692),uint(15201),uint(10621),uint(10643),uint(12812),uint(13182),uint(18382),uint(18162),uint(13402),uint(13952),uint(13732),uint(13842),uint(10683),uint(10661),uint(13072),uint(14163),uint(10652),uint(14691),uint(17951),uint(17973),uint(14581),uint(18193),uint(11312),uint(18171),uint(11422),uint(13261),uint(13283),uint(10872),uint(18611),uint(10982),uint(13811),uint(13833),uint(13723),uint(14423),uint(14203),uint(14181),uint(10912),uint(10692),uint(14643),uint(14621),uint(17362),uint(13191),uint(13521),uint(13433),uint(13763),uint(13741),uint(11352),uint(11242),uint(13851),uint(17613),uint(17701),uint(10881),uint(10903),uint(11233),uint(18163),uint(11343),uint(11321),uint(14172),uint(12773),uint(12861),uint(12751),uint(18383),uint(12443),uint(14612),uint(17353),uint(14722),uint(11163),uint(17683),uint(11273),uint(11251),uint(11383),uint(11361),uint(18321),uint(18211),uint(14212),uint(12813),uint(12681),uint(12791),uint(14432),uint(12571),uint(19201),uint(13332),uint(13442),uint(13772),uint(13882),uint(12562),uint(12452),uint(10921),uint(10943),uint(10723),uint(18242),uint(10701),uint(10613),uint(13812),uint(17961),uint(18181),uint(18071),uint(18401),uint(10653),uint(10631),uint(10873),uint(10983),uint(11181),uint(19171),uint(10851),uint(13262),uint(14661),uint(10952),uint(15211),uint(10842),uint(19941),uint(10732),uint(10622),uint(13253),uint(13451),uint(13671),uint(17072),uint(13693),uint(13913),uint(11282),uint(18322),uint(11172),uint(11392),uint(13781),uint(13803),uint(18212),uint(10882),uint(10662),uint(14591),uint(14481),uint(11322),uint(14723),uint(14613),uint(13843),uint(13821),uint(13733),uint(14173),uint(14151),uint(17952),uint(18172),uint(14371),uint(13953),uint(18612),uint(11423),uint(11291),uint(11313),uint(11401),uint(13183),uint(13161),uint(13271),uint(19162),uint(14692),uint(13073),uint(14582),uint(12501),uint(12453),uint(13201),uint(13311),uint(13421),uint(13443),uint(17702),uint(14622),uint(12871),uint(12761),uint(12563),uint(13522),uint(13742),uint(17363),uint(13852),uint(12862),uint(14182),uint(12752),uint(10913),uint(10693),uint(10671),uint(11243),uint(11441),uint(11221),uint(11353),uint(11331),uint(13192),uint(10891),uint(13782),uint(17601),uint(14662),uint(12792),uint(10161),uint(19202),uint(17073),uint(12682),uint(11173),uint(11261),uint(11283),uint(10843),uint(10733),uint(10711),uint(11393),uint(11371),uint(10623),uint(10931),uint(10953),uint(13452),uint(13672),uint(11252),uint(11362),uint(10702),uint(18243),uint(10922),uint(13751),uint(13773),uint(12572),uint(13883),uint(13861),uint(14433),uint(14213),uint(14191),uint(14631),uint(14301),uint(11292),uint(11402),uint(19172),uint(19942),uint(10852),uint(11182),uint(13813),uint(12502),uint(14693),uint(14671),uint(14561),uint(14583),uint(17971),uint(18213),uint(12471),uint(18191),uint(13241),uint(13263),uint(13681),uint(19203),uint(10632),uint(12801),uint(17953),uint(12863),uint(12753),uint(13193),uint(13281),uint(18173),uint(13523),uint(18613),uint(13853),uint(13721),uint(13743),uint(13831),uint(19031),uint(19163),uint(10672),uint(14372),uint(14152),uint(10641),uint(10663),uint(14482),uint(17962),uint(14592),uint(11411),uint(18072),uint(18182),uint(11301),uint(11323),uint(18402),uint(13162),uint(13272),uint(10861),uint(10883),uint(10971),uint(13822)})))|(.Peel:->contains($uint,[]uint{uint(82),uint(83),uint(81)})&.Rotten:== uint(10384)))|(.Rotten:== uint(10484)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10751)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10277)))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10153)))|(.Rotten:== uint(50051)&.Peel:->contains($uint,[]uint{uint(5226),uint(4632),uint(1297),uint(18179),uint(24563),uint(901),uint(24651),uint(3796),uint(2441),uint(19169),uint(24211),uint(3818),uint(23441),uint(4566),uint(7426),uint(27423),uint(7602),uint(23793),uint(23771),uint(21272),uint(14637),uint(14659),uint(3827),uint(3783),uint(20863),uint(20951),uint(4641),uint(7417),uint(4201),uint(21281),uint(7527),uint(7681),uint(2683),uint(4421),uint(23802),uint(28382),uint(1262),uint(28162),uint(23252),uint(1328),uint(8583),uint(668),uint(8341),uint(866),uint(888),uint(3431),uint(15227),uint(28571),uint(24202),uint(7413),uint(23432),uint(27603),uint(7567),uint(20911),uint(7523),uint(21263),uint(8161),uint(8381),uint(22442),uint(8227),uint(2802),uint(13819),uint(7976),uint(1293),uint(22803),uint(1271),uint(22451),uint(8196),uint(8218),uint(4848),uint(10959),uint(897),uint(3836),uint(4166),uint(3792),uint(4738),uint(4562),uint(4628),uint(24422),uint(24642),uint(8192),uint(3823),uint(20881),uint(20903),uint(8346),uint(4637),uint(21321),uint(8588),uint(28343),uint(28211),uint(17568),uint(3251),uint(3427),uint(906),uint(862),uint(3801),uint(20661),uint(2688),uint(23433),uint(2446),uint(3436),uint(3832),uint(3788),uint(13828),uint(10867),uint(27683),uint(651),uint(7422),uint(7686),uint(7972),uint(5231),uint(22443),uint(871),uint(893),uint(1267),uint(2807),uint(4206),uint(4426),uint(7418),uint(7528),uint(10907),uint(4162),uint(7682),uint(4646),uint(8166),uint(17427),uint(7563),uint(7607),uint(27973),uint(28171),uint(28193),uint(17977),uint(20652),uint(4567),uint(4633),uint(8223),uint(24163),uint(3423),uint(20872),uint(23811),uint(902),uint(23833),uint(1298),uint(3797),uint(1276),uint(13837),uint(7427),uint(3256),uint(7603),uint(28172),uint(23803),uint(23781),uint(3432),uint(3828),uint(3806),uint(7977),uint(2442),uint(23253),uint(8197),uint(14207),uint(867),uint(14427),uint(8571),uint(911),uint(22681),uint(8386),uint(8342),uint(18167),uint(5236),uint(13437),uint(28163),uint(28581),uint(1263),uint(28383),uint(20952),uint(4422),uint(4642),uint(21282),uint(2803),uint(4202),uint(14638),uint(2451),uint(4651),uint(656),uint(4563),uint(898),uint(4211),uint(876),uint(22452),uint(24731),uint(24841),uint(24621),uint(24643),uint(20912),uint(24423),uint(3441),uint(1272),uint(3837),uint(3771),uint(3793),uint(4167),uint(24203),uint(7423),uint(3428),uint(3252),uint(24652),uint(21273),uint(24212),uint(3802),uint(23442),uint(863),uint(907),uint(7568),uint(28572),uint(951),uint(23772),uint(8382),uint(8228),uint(8162),uint(13838),uint(1281),uint(7608),uint(28221),uint(21322),uint(4638),uint(27561),uint(8576),uint(2447),uint(10877),uint(872),uint(7687),uint(916),uint(4647),uint(1268),uint(4427),uint(24842),uint(28212),uint(8171),uint(10868),uint(8193),uint(24622),uint(7973),uint(15237),uint(24732),uint(8347),uint(652),uint(3437),uint(3811),uint(3833),uint(13807),uint(13829),uint(4163),uint(4207),uint(20891),uint(20913),uint(7683),uint(3446),uint(20653),uint(21291),uint(3776),uint(3798),uint(8387),uint(8343),uint(17428),uint(8167),uint(8211),uint(10908),uint(4216),uint(2456),uint(23812),uint(14639),uint(881),uint(903),uint(17978),uint(1277),uint(1321),uint(2808),uint(661),uint(20873),uint(23821),uint(2443),uint(3257),uint(3433),uint(20882),uint(27521),uint(4656),uint(27411),uint(4568),uint(20662),uint(17569),uint(956),uint(9166),uint(4841),uint(4643),uint(4621),uint(4731),uint(1286),uint(18168),uint(912),uint(868),uint(2452),uint(3807),uint(4423),uint(20953),uint(27522),uint(27412),uint(4203),uint(23782),uint(21283),uint(21261),uint(3838),uint(3772),uint(3816),uint(24561),uint(27601),uint(4652),uint(14208),uint(7428),uint(4212),uint(4168),uint(21292),uint(23791),uint(23813),uint(14428),uint(7978),uint(17429),uint(1273),uint(22801),uint(28173),uint(8198),uint(8176),uint(8572),uint(657),uint(18177),uint(877),uint(13438),uint(3442),uint(17979),uint(24213),uint(10869),uint(10957),uint(28582),uint(23421),uint(23443),uint(3253),uint(23773),uint(7688),uint(8172),uint(8348),uint(22453),uint(8216),uint(13808),uint(2681),uint(1326),uint(1282),uint(22682),uint(8163),uint(666),uint(28573),uint(8383),uint(952),uint(886),uint(908),uint(8581),uint(3803),uint(14657),uint(3781),uint(2448),uint(24653),uint(24631),uint(24623),uint(4208),uint(24733),uint(20892),uint(653),uint(4846),uint(4626),uint(4648),uint(23831),uint(4736),uint(8577),uint(4428),uint(24161),uint(28222),uint(1291),uint(3438),uint(917),uint(873),uint(3812),uint(23422),uint(2457),uint(3447),uint(3821),uint(13817),uint(3777),uint(13839),uint(10878),uint(662),uint(7411),uint(7521),uint(27562),uint(24843),uint(14209),uint(13439),uint(19167),uint(14429),uint(882),uint(27421),uint(1322),uint(1278),uint(4217),uint(2686),uint(7561),uint(27971),uint(8177),uint(4657),uint(28191),uint(28213),uint(891),uint(10909),uint(4842),uint(4732),uint(20663),uint(4622),uint(8212),uint(8586),uint(8168),uint(3258),uint(20861),uint(20883),uint(8388),uint(913),uint(957),uint(23822),uint(21323),uint(1287),uint(3808),uint(3786),uint(27523),uint(7416),uint(27413),uint(3443),uint(7526),uint(28161),uint(23792),uint(3421),uint(3817),uint(2453),uint(3773),uint(14658),uint(8582),uint(658),uint(878),uint(28381),uint(22802),uint(18178),uint(8573),uint(8221),uint(9167),uint(1296),uint(4631),uint(21271),uint(24562),uint(4213),uint(2682),uint(21293),uint(4653),uint(19168),uint(667),uint(953),uint(887),uint(22683),uint(22441),uint(27602),uint(24632),uint(20901),uint(1261),uint(1283),uint(1327),uint(3826),uint(3782),uint(7412),uint(27681),uint(13809),uint(2801),uint(21262),uint(24641),uint(3813),uint(3791),uint(24421),uint(24201),uint(23431),uint(18169),uint(896),uint(918),uint(28583),uint(23783),uint(7601),uint(10958),uint(8217),uint(28341),uint(8173),uint(13827),uint(1292),uint(7421),uint(4737),uint(4627),uint(7971),uint(5221),uint(4561),uint(28342),uint(8213),uint(8191),uint(8587),uint(27682),uint(2458),uint(4847),uint(861),uint(7522),uint(7566),uint(883),uint(27563),uint(4636),uint(4658),uint(28223),uint(10879),uint(8226),uint(24633),uint(17567),uint(663),uint(3426),uint(3448),uint(3822),uint(13818),uint(8578),uint(3778),uint(4218),uint(1323),uint(20902),uint(23423),uint(3787),uint(3831),uint(8178),uint(2687),uint(8222),uint(4161),uint(958),uint(23823),uint(9168),uint(892),uint(23801),uint(1288),uint(1266),uint(23251),uint(20862),uint(23832),uint(24162),uint(3422),uint(20871),uint(20893),uint(4843),uint(27972),uint(28192),uint(27422),uint(4733),uint(20651),uint(4623),uint(2806),uint(7606),uint(7562)})))|(.Rotten:== uint(10129)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(13111)&.Peel:->contains($uint,[]uint{uint(10769),uint(19177),uint(17109),uint(13598),uint(14038),uint(11517),uint(11627),uint(11539),uint(11649),uint(11508),uint(14557),uint(12828),uint(12520),uint(11548),uint(11658),uint(14949),uint(10369),uint(51498),uint(12538),uint(13607),uint(17228),uint(17118),uint(10118),uint(12529),uint(10998),uint(10778),uint(13299),uint(17818),uint(13999),uint(12789),uint(12547),uint(10818),uint(14958),uint(10787),uint(10809),uint(18157),uint(58427),uint(18707),uint(17127),uint(17149),uint(14408),uint(14518),uint(11557),uint(11597),uint(11487),uint(11509),uint(10827),uint(12587),uint(18117),uint(14118),uint(14008),uint(14558),uint(18689),uint(11588),uint(15297),uint(14857),uint(13608),uint(10119),uint(10757),uint(10537),uint(19077),uint(14039),uint(14017),uint(14127),uint(14457),uint(12917),uint(12829),uint(11628),uint(11518),uint(18118),uint(13599),uint(14519),uint(14409),uint(10788),uint(14959),uint(14717),uint(17128),uint(11558),uint(11549),uint(11527),uint(11659),uint(11637),uint(10779),uint(10999),uint(11087),uint(12847),uint(12539),uint(19178),uint(51499),uint(17229),uint(17119),uint(17097),uint(11567),uint(11589),uint(58428),uint(14858),uint(18158),uint(18708),uint(12548),uint(10797),uint(10819),uint(12918),uint(17067),uint(12588),uint(14128),uint(14018),uint(14559),uint(10828),uint(17819),uint(11488),uint(14119),uint(11598),uint(14097),uint(13987),uint(14009),uint(10758),uint(10538),uint(19078),uint(11088),uint(13609),uint(17098),uint(14137),uint(11528),uint(11638),uint(18119),uint(11629),uint(11519),uint(14458),uint(18057),uint(11537),uint(17947),uint(11559),uint(13297),uint(11647),uint(14718),uint(12527),uint(19179),uint(17107),uint(17129),uint(12848),uint(10767),uint(10789),uint(14098),uint(13988),uint(18159),uint(10367),uint(17147),uint(18687),uint(11489),uint(10807),uint(10829),uint(14859),uint(14947),uint(10798),uint(17948),uint(18058),uint(11590),uint(11568),uint(14129),uint(14019),uint(13997),uint(17068),uint(14459),uint(12589),uint(58429),uint(11599),uint(12919),uint(12787),uint(12677),uint(13597),uint(10768),uint(12849),uint(12827),uint(14138),uint(10539),uint(17099),uint(11639),uint(11529),uint(11507),uint(10759),uint(11089),uint(10117),uint(51497),uint(10777),uint(10799),uint(14948),uint(17117),uint(17227),uint(11569),uint(11657),uint(11547),uint(13298),uint(10997),uint(11538),uint(15247),uint(11648),uint(14037),uint(12528),uint(19079),uint(14719),uint(17108),uint(14407),uint(14517),uint(14099),uint(12788),uint(17817),uint(12678),uint(17949),uint(14957),uint(18059),uint(17148),uint(12537),uint(13989),uint(10368),uint(10808),uint(14007),uint(14139),uint(14117),uint(10817),uint(17069),uint(18688),uint(11587),uint(13998)})))|(.Rotten:== uint(10172)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(82),uint(3),uint(83),uint(1),uint(81),uint(2)})&.Rotten:== uint(10400)))|(.Rotten:== uint(10044)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(10521),uint(10543),uint(10072),uint(10222),uint(21243),uint(12193),uint(12211),uint(12101),uint(10011),uint(23501),uint(10073),uint(10592),uint(10522),uint(12141),uint(12181),uint(10012),uint(10531),uint(21231),uint(10021),uint(23502),uint(12102),uint(12212),uint(20941),uint(12142),uint(12111),uint(21901),uint(21241),uint(10532),uint(22671),uint(20942),uint(23441),uint(10541),uint(12213),uint(21232),uint(12191),uint(12182),uint(12112),uint(22931),uint(10022),uint(21611),uint(21391),uint(12231),uint(12143),uint(23442),uint(10071),uint(12192),uint(10023),uint(10221),uint(10542),uint(21902),uint(21242),uint(21612),uint(12232),uint(10591)})&.Rotten:== uint(20119)))|(.Peel:->contains($uint,[]uint{uint(82),uint(83),uint(81)})&.Rotten:== uint(10122)))|(.Rotten:== uint(13113)&.Peel:->contains($uint,[]uint{uint(18627),uint(10637),uint(13268),uint(10628),uint(15217),uint(13919),uint(18328),uint(13959),uint(13849),uint(14487),uint(19168),uint(14588),uint(13207),uint(13858),uint(11227),uint(11249),uint(19208),uint(10629),uint(11258),uint(10620),uint(13845),uint(13867),uint(14589),uint(18329),uint(12477),uint(13269),uint(19209),uint(10638),uint(18487),uint(13859),uint(19169),uint(10634),uint(14488),uint(10647),uint(18628),uint(13208),uint(13868),uint(11259),uint(11237),uint(11228),uint(18488),uint(12478),uint(13917),uint(10648),uint(10639),uint(10617),uint(13864),uint(11229),uint(18629),uint(14489),uint(12470),uint(18489),uint(13957),uint(13847),uint(13869),uint(11238),uint(13209),uint(13865),uint(10618),uint(11247),uint(12479),uint(19167),uint(13918),uint(10649),uint(10627),uint(13958),uint(13848),uint(14587),uint(13267),uint(13857),uint(11248),uint(11239),uint(11257),uint(18327),uint(19207),uint(13844),uint(10619)})))|(.Rotten:== uint(50003)&.Peel:->contains($uint,[]uint{uint(20068),uint(23579),uint(20618),uint(13917),uint(21718),uint(10648),uint(20077),uint(13847),uint(13869),uint(18629),uint(13957),uint(20389),uint(11238),uint(25057),uint(13209),uint(22008),uint(22228),uint(22567),uint(20609),uint(20587),uint(11229),uint(11247),uint(20117),uint(25049),uint(22229),uint(22009),uint(25058),uint(22277),uint(21529),uint(59067),uint(12479),uint(22827),uint(10618),uint(14587),uint(20078),uint(21719),uint(13267),uint(10649),uint(10627),uint(13918),uint(20588),uint(11239),uint(13958),uint(13848),uint(22568),uint(20597),uint(20619),uint(20069),uint(25059),uint(10619),uint(13857),uint(11248),uint(20589),uint(10628),uint(20087),uint(59068),uint(22278),uint(13919),uint(22828),uint(22837),uint(11257),uint(20118),uint(21627),uint(22177),uint(20387),uint(20079),uint(14588),uint(20607),uint(13268),uint(23577),uint(10637),uint(20088),uint(15217),uint(22279),uint(13858),uint(22569),uint(11249),uint(11227),uint(20598),uint(18627),uint(13959),uint(13849),uint(11258),uint(13867),uint(26037),uint(13207),uint(25047),uint(22178),uint(13269),uint(59069),uint(21628),uint(12477),uint(21527),uint(20119),uint(22838),uint(10629),uint(20067),uint(10647),uint(21629),uint(20617),uint(10638),uint(21717),uint(22179),uint(20089),uint(14589),uint(23578),uint(20599),uint(11228),uint(22007),uint(18628),uint(13859),uint(22227),uint(20608),uint(20388),uint(25048),uint(13208),uint(11259),uint(13868),uint(11237),uint(10639),uint(10617),uint(22839),uint(12478),uint(21528)})))|(.Rotten:== uint(10544)&.Peel:->contains($uint,[]uint{uint(2),uint(7),uint(3),uint(8),uint(4),uint(9),uint(5),uint(6)})))|(.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})&.Rotten:== uint(10391)))|(.Rotten:== uint(43111)&.Peel:->contains($uint,[]uint{uint(40217),uint(41009),uint(41119),uint(41128),uint(41018),uint(40947),uint(40218),uint(41129),uint(41019),uint(40948),uint(41117),uint(41007),uint(40048),uint(40949),uint(40047),uint(40219),uint(41008),uint(41118),uint(40049),uint(41127),uint(41017)})))|(.Rotten:== uint(10230)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10016)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})&.Rotten:== uint(10829)))|(.Rotten:== uint(10169)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(11076)&.Peel:->contains($uint,[]uint{uint(3),uint(4),uint(2)})))|(.Rotten:== uint(50527)&.Peel:->contains($uint,[]uint{uint(1)})))|(.Rotten:== uint(10205)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(63114)&.Peel:->contains($uint,[]uint{uint(13173),uint(13217),uint(13151),uint(12887),uint(12161),uint(33161),uint(471),uint(13472),uint(32171),uint(20472),uint(13886),uint(33152),uint(33174),uint(32162),uint(13987),uint(12166),uint(13477),uint(13213),uint(33012),uint(12157),uint(12179),uint(476),uint(12153),uint(13011),uint(32981),uint(13882),uint(13156),uint(13178),uint(12171),uint(472),uint(33171),uint(13152),uint(13174),uint(13218),uint(12162),uint(33981),uint(13016),uint(33162),uint(32172),uint(12158),uint(13887),uint(13161),uint(33153),uint(12981),uint(13179),uint(13157),uint(12167),uint(477),uint(33211),uint(32881),uint(13012),uint(13166),uint(32982),uint(12176),uint(13162),uint(12986),uint(12172),uint(13153),uint(33982),uint(33172),uint(13171),uint(13017),uint(33471),uint(32173),uint(32151),uint(12177),uint(12881),uint(32174),uint(32152),uint(33881),uint(13158),uint(12982),uint(13176),uint(33212),uint(32882),uint(13211),uint(13981),uint(13167),uint(13471),uint(12987),uint(12173),uint(12151),uint(33151),uint(33173),uint(32161),uint(13986),uint(33472),uint(13172),uint(13216),uint(12886),uint(20471),uint(13982),uint(12882),uint(33011),uint(13476),uint(13212),uint(32153),uint(12178),uint(12156),uint(33882),uint(12174),uint(12152),uint(13881),uint(13177),uint(33213)})))|(.Rotten:== uint(10088)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10419)))|(.Peel:->contains($uint,[]uint{uint(22007),uint(22227),uint(21809),uint(20608),uint(20388),uint(23899),uint(23877),uint(20568),uint(22869),uint(26037),uint(20599),uint(20577),uint(25047),uint(21528),uint(21308),uint(20107),uint(22408),uint(20569),uint(23578),uint(23138),uint(23908),uint(20617),uint(20067),uint(22588),uint(20089),uint(22179),uint(21629),uint(21277),uint(22839),uint(21717),uint(23878),uint(20389),uint(20587),uint(20609),uint(22589),uint(22567),uint(23579),uint(23139),uint(21467),uint(20068),uint(21317),uint(25048),uint(25057),uint(20578),uint(22008),uint(22228),uint(23627),uint(22827),uint(22409),uint(22277),uint(20108),uint(21318),uint(25049),uint(21278),uint(21718),uint(20618),uint(23909),uint(23887),uint(20077),uint(21529),uint(21309),uint(21468),uint(22568),uint(20597),uint(20619),uint(20069),uint(21719),uint(21807),uint(21279),uint(23888),uint(20579),uint(20557),uint(20117),uint(23628),uint(23879),uint(21987),uint(22009),uint(22229),uint(20588),uint(25058),uint(22867),uint(20109),uint(20087),uint(22177),uint(21627),uint(21319),uint(23629),uint(20118),uint(22837),uint(20558),uint(23897),uint(20078),uint(22278),uint(22828),uint(23889),uint(22569),uint(20598),uint(20079),uint(21808),uint(20387),uint(22868),uint(25059),uint(21988),uint(20567),uint(20589),uint(21469),uint(22838),uint(20559),uint(22178),uint(20119),uint(21989),uint(21527),uint(21307),uint(22407),uint(22279),uint(22587),uint(20607),uint(23898),uint(20088),uint(23907),uint(21628),uint(23137),uint(23577)})&.Rotten:== uint(23311)))|(.Rotten:== uint(10725)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(53111)&.Peel:->contains($uint,[]uint{uint(15018),uint(15282),uint(15238),uint(36313),uint(18661),uint(36093),uint(36203),uint(16316),uint(116),uint(5642),uint(28),uint(578),uint(20113),uint(666),uint(622),uint(36401),uint(20201),uint(50137),uint(248),uint(50357),uint(1436),uint(18032),uint(1348),uint(16197),uint(38271),uint(16153),uint(1392),uint(16087),uint(16043),uint(15911),uint(842),uint(41694),uint(15669),uint(5277),uint(25032),uint(15361),uint(35112),uint(20663),uint(35662),uint(15163),uint(15251),uint(15273),uint(15207),uint(21081),uint(36432),uint(51228),uint(18692),uint(21433),uint(21191),uint(18736),uint(38711),uint(1832),uint(16391),uint(16347),uint(257),uint(279),uint(169),uint(16193),uint(21833),uint(50067),uint(50089),uint(18278),uint(18212),uint(15797),uint(15841),uint(15577),uint(20667),uint(18036),uint(20623),uint(367),uint(15621),uint(15247),uint(15203),uint(1577),uint(15027),uint(1401),uint(20843),uint(917),uint(1093),uint(21041),uint(21151),uint(35011),uint(1313),uint(18718),uint(21393),uint(1357),uint(18696),uint(35363),uint(21261),uint(40361),uint(40317),uint(16263),uint(35231),uint(35253),uint(1203),uint(16351),uint(16571),uint(35913),uint(20368),uint(20016),uint(35561),uint(50058),uint(21402),uint(288),uint(266),uint(662),uint(16206),uint(16096),uint(112),uint(36573),uint(5286),uint(18287),uint(18221),uint(15568),uint(18226),uint(36352),uint(18666),uint(18732),uint(5273),uint(1432),uint(1366),uint(5647),uint(36572),uint(21363),uint(21341),uint(16202),uint(5031),uint(16158),uint(16048),uint(16092),uint(16343),uint(21407),uint(51188),uint(16431),uint(15916),uint(31742),uint(561),uint(35283),uint(21042),uint(35261),uint(627),uint(15366),uint(363),uint(21152),uint(21086),uint(253),uint(231),uint(20668),uint(847),uint(21262),uint(15168),uint(11),uint(15278),uint(913),uint(15256),uint(20272),uint(38662),uint(40202),uint(20162),uint(20206),uint(38222),uint(50088),uint(18213),uint(1573),uint(36361),uint(18037),uint(18697),uint(1837),uint(59099),uint(1397),uint(15626),uint(38231),uint(38033),uint(20628),uint(20562),uint(11741),uint(50568),uint(20364),uint(15252),uint(25283),uint(20232),uint(16831),uint(15362),uint(20012),uint(15164),uint(15208),uint(50128),uint(35622),uint(262),uint(1098),uint(38693),uint(5282),uint(18283),uint(51967),uint(35842),uint(18217),uint(36832),uint(36392),uint(1362),uint(50977),uint(1318),uint(16268),uint(51197),uint(16312),uint(1208),uint(16356),uint(16576),uint(5643),uint(20791),uint(1406),uint(15661),uint(15573),uint(20571),uint(15243),uint(50757),uint(15287),uint(20241),uint(117),uint(20263),uint(15111),uint(15023),uint(20021),uint(50229),uint(21192),uint(50059),uint(5036),uint(843),uint(1151),uint(5278),uint(25033),uint(20664),uint(271),uint(161),uint(1041),uint(16207),uint(16097),uint(20202),uint(623),uint(667),uint(18737),uint(18693),uint(38712),uint(1833),uint(18231),uint(35201),uint(18033),uint(35113),uint(35663),uint(1437),uint(1393),uint(1261),uint(15261),uint(15283),uint(38272),uint(21082),uint(20013),uint(36191),uint(16348),uint(36081),uint(16392),uint(16436),uint(236),uint(16),uint(21201),uint(16832),uint(21091),uint(36433),uint(918),uint(50138),uint(368),uint(50358),uint(258),uint(20563),uint(16198),uint(566),uint(15912),uint(20233),uint(15846),uint(35012),uint(35364),uint(35232),uint(1578),uint(16352),uint(50838),uint(16396),uint(1402),uint(38281),uint(16572),uint(11746),uint(35562),uint(50068),uint(16836),uint(36662),uint(5287),uint(20369),uint(267),uint(113),uint(201),uint(20281),uint(20017),uint(1081),uint(15842),uint(18288),uint(18222),uint(18662),uint(1367),uint(15666),uint(1191),uint(15622),uint(15578),uint(15028),uint(15248),uint(663),uint(51577),uint(15116),uint(5032),uint(35241),uint(20026),uint(35021),uint(16317),uint(16361),uint(35263),uint(21403),uint(35791),uint(1433),uint(35571),uint(38663),uint(20273),uint(50978),uint(20163),uint(20251),uint(50758),uint(51198),uint(16366),uint(20207),uint(16432),uint(15662),uint(38223),uint(35262),uint(20911),uint(364),uint(276),uint(21087),uint(21043),uint(232),uint(21263),uint(15112),uint(21351),uint(166),uint(21153),uint(15266),uint(12),uint(15288),uint(1156),uint(1046),uint(1398),uint(1266),uint(18236),uint(562),uint(5648),uint(628),uint(18038),uint(20669),uint(36362),uint(848),uint(20361),uint(1838),uint(51189),uint(18698),uint(16203),uint(16093),uint(5283),uint(21571),uint(38694),uint(50837),uint(16397),uint(15917),uint(40203),uint(20282),uint(20018),uint(16573),uint(15257),uint(15367),uint(35271),uint(38232),uint(16837),uint(35623),uint(35161),uint(241),uint(263),uint(21),uint(15169),uint(1341),uint(36151),uint(36041),uint(18218),uint(1363),uint(35843),uint(1407),uint(571),uint(31743),uint(791),uint(51427),uint(36393),uint(36261),uint(20242),uint(20022),uint(51229),uint(21311),uint(16313),uint(15913),uint(15847),uint(16357),uint(16401),uint(16577),uint(15561),uint(36833),uint(15627),uint(25271),uint(15231),uint(15253),uint(50569),uint(15363),uint(10277),uint(21342),uint(21408),uint(50107),uint(50129),uint(15011),uint(11742),uint(20572),uint(272),uint(162),uint(206),uint(118),uint(20286),uint(1438),uint(1196),uint(1262),uint(51968),uint(18271),uint(18227),uint(20792),uint(668),uint(1086),uint(1152),uint(36402),uint(18667),uint(18711),uint(1042),uint(15117),uint(35664),uint(15161),uint(15271),uint(51578),uint(36082),uint(38713),uint(36192),uint(38691),uint(18716),uint(18694),uint(16261),uint(16437),uint(16393),uint(21831),uint(17),uint(567),uint(20366),uint(16833),uint(5037),uint(369),uint(281),uint(237),uint(16208),uint(1403),uint(38282),uint(16098),uint(1579),uint(35013),uint(5288),uint(35233),uint(15262),uint(35563),uint(21092),uint(21312),uint(36311),uint(21202),uint(36201),uint(36091),uint(16402),uint(268),uint(246),uint(202),uint(41274),uint(576),uint(26),uint(59097),uint(664),uint(796),uint(5033),uint(50078),uint(15918),uint(18223),uint(15566),uint(15258),uint(15236),uint(15016),uint(15368),uint(11747),uint(1082),uint(35022),uint(1346),uint(18663),uint(1368),uint(21316),uint(35242),uint(1192),uint(16318),uint(16362),uint(16406),uint(35792),uint(20841),uint(20203),uint(35572),uint(20027),uint(50839),uint(21193),uint(50069),uint(36342),uint(38731),uint(21391),uint(277),uint(563),uint(233),uint(167),uint(16151),uint(13),uint(16041),uint(15843),uint(15667),uint(18232),uint(18276),uint(15623),uint(20621),uint(25641),uint(18237),uint(36341),uint(36363),uint(18699),uint(1091),uint(1157),uint(1201),uint(1047),uint(51969),uint(1267),uint(1311),uint(18281),uint(20912),uint(21352),uint(16191),uint(16081),uint(16266),uint(21572),uint(16398),uint(51177),uint(50759),uint(51199),uint(51067),uint(50957),uint(15663),uint(50979),uint(35272),uint(572),uint(35162),uint(242),uint(16838),uint(286),uint(21361),uint(15113),uint(792),uint(22),uint(15201),uint(15267),uint(21317),uint(36042),uint(20283),uint(20261),uint(38211),uint(38233),uint(50077),uint(25281),uint(36152),uint(36262),uint(1408),uint(1342),uint(15571),uint(20661),uint(50359),uint(16578),uint(20573),uint(15263),uint(15241),uint(25272),uint(20243),uint(20287),uint(20023),uint(21431),uint(21343),uint(20111),uint(50139),uint(50227),uint(15021),uint(669),uint(35281),uint(361),uint(273),uint(1043),uint(207),uint(911),uint(1087),uint(251),uint(18668),uint(163),uint(5271),uint(18228),uint(18272),uint(51428),uint(36403),uint(1351),uint(18712),uint(16156),uint(1153),uint(1197),uint(16046),uint(1263),uint(16367),uint(15848),uint(16433),uint(1571),uint(38273),uint(15628),uint(20626),uint(15562),uint(5038),uint(11743),uint(15166),uint(15232),uint(10278),uint(20362),uint(15276),uint(15364),uint(38031),uint(20208),uint(20252),uint(18),uint(20164),uint(35202),uint(15012),uint(50108),uint(21203),uint(21313),uint(1206),uint(238),uint(21401),uint(282),uint(1096),uint(36831),uint(20367),uint(16196),uint(16152),uint(16086),uint(16042),uint(568),uint(15668),uint(18286),uint(15118),uint(15162),uint(15206),uint(1316),uint(15272),uint(38283),uint(51579),uint(21093),uint(51227),uint(36312),uint(20112),uint(36202),uint(36092),uint(16403),uint(203),uint(247),uint(27),uint(50567),uint(797),uint(841),uint(50127),uint(1193),uint(20662),uint(18031),uint(5641),uint(20288),uint(577),uint(621),uint(15791),uint(35111),uint(35023),uint(51179),uint(38732),uint(35243),uint(16363),uint(16341),uint(16407),uint(1347),uint(1831),uint(1391),uint(51069),uint(20842),uint(35661),uint(35573),uint(50959),uint(50057),uint(50079),uint(36431),uint(36343),uint(5276),uint(20666),uint(20622),uint(278),uint(256),uint(168),uint(20028),uint(59098),uint(1048),uint(1092),uint(916),uint(18277),uint(18211),uint(18233),uint(18717),uint(1312),uint(1356),uint(1202),uint(1158),uint(25642),uint(1268),uint(15567),uint(366),uint(15237),uint(15281),uint(15017),uint(15369),uint(35164),uint(16262),uint(35362),uint(21392),uint(35252),uint(21832),uint(35912),uint(16438),uint(1576),uint(38213),uint(11748),uint(20262),uint(16091),uint(16047),uint(16267),uint(16311),uint(51187),uint(38212),uint(35273),uint(35251),uint(35163),uint(15563),uint(287),uint(243),uint(111),uint(21318),uint(21362),uint(15167),uint(21406),uint(15233),uint(15277),uint(35361),uint(23),uint(35911),uint(25643),uint(36043),uint(15013),uint(1431),uint(1343),uint(50109),uint(50087),uint(36571),uint(31741),uint(573),uint(661),uint(36351),uint(36263),uint(36153),uint(51178),uint(16192),uint(18731),uint(16082),uint(5272),uint(16342),uint(38661),uint(15796),uint(16408),uint(20271),uint(15664),uint(5646),uint(51068),uint(15576),uint(20161),uint(50958),uint(15268),uint(38221),uint(35282),uint(362),uint(15026),uint(164),uint(252),uint(208),uint(15202),uint(15246),uint(18691),uint(40201),uint(1352),uint(5281),uint(18713),uint(1198),uint(1572),uint(18273),uint(1396),uint(626),uint(912),uint(846),uint(20011),uint(21432),uint(20231),uint(16368),uint(16346),uint(25031),uint(15792),uint(15572),uint(15242),uint(25282),uint(15286),uint(1836),uint(21573),uint(38692),uint(35203),uint(15022),uint(569),uint(50228),uint(20627),uint(35621),uint(20561),uint(261),uint(283),uint(25273),uint(38032),uint(20253),uint(20363),uint(10279),uint(36193),uint(1317),uint(1361),uint(1207),uint(35841),uint(18282),uint(18216),uint(18238),uint(20913),uint(1097),uint(36391),uint(16201),uint(51429),uint(16157)})))|(.Rotten:== uint(10171)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(20256)&.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})))|(.Peel:->contains($uint,[]uint{uint(17321)})&.Rotten:== uint(50055)))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10272)))|(.Rotten:== uint(10043)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(8888)&.Peel:->contains($uint,[]uint{uint(4201),uint(4202),uint(4203)})))|(.Rotten:== uint(10310)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10193)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(17322),uint(17323),uint(17321)})&.Rotten:== uint(60118)))|(.Rotten:== uint(60161)&.Peel:->contains($uint,[]uint{uint(10382),uint(14223),uint(61072),uint(13211),uint(61292),uint(12881),uint(61622),uint(10734),uint(61041),uint(12023),uint(61371),uint(61283),uint(61437),uint(12353),uint(10681),uint(12441),uint(60962),uint(60412),uint(60302),uint(60082),uint(12063),uint(62242),uint(12041),uint(12283),uint(12151),uint(12173),uint(12393),uint(60922),uint(15024),uint(60042),uint(60152),uint(51001),uint(12802),uint(60381),uint(60073),uint(60161),uint(60051),uint(12032),uint(61252),uint(12692),uint(15081),uint(13502),uint(60473),uint(60451),uint(13282),uint(60033),uint(571),uint(12072),uint(12094),uint(61771),uint(12292),uint(10321),uint(15253),uint(50481),uint(10642),uint(15033),uint(382),uint(14153),uint(14373),uint(13383),uint(13251),uint(12921),uint(60693),uint(13471),uint(10682),uint(10352),uint(12024),uint(10242),uint(13423),uint(13291),uint(60961),uint(61432),uint(12081),uint(12411),uint(61071),uint(60882),uint(61291),uint(61423),uint(60442),uint(14734),uint(15064),uint(61621),uint(14162),uint(14184),uint(14382),uint(62281),uint(12693),uint(12803),uint(60391),uint(60413),uint(12891),uint(60501),uint(60171),uint(15082),uint(60061),uint(60083),uint(12033),uint(60422),uint(50861),uint(13212),uint(60092),uint(12354),uint(10691),uint(12442),uint(10383),uint(10251),uint(61073),uint(61293),uint(12882),uint(60052),uint(60162),uint(13472),uint(50483),uint(50461),uint(61438),uint(61372),uint(12394),uint(13252),uint(10643),uint(10731),uint(12922),uint(572),uint(62243),uint(12174),uint(12042),uint(12064),uint(12152),uint(51002),uint(14211),uint(61042),uint(60382),uint(13771),uint(50601),uint(12082),uint(12412),uint(471),uint(14163),uint(13503),uint(14383),uint(60452),uint(17331),uint(383),uint(61253),uint(61011),uint(13371),uint(13283),uint(60351),uint(60021),uint(60043),uint(15034),uint(10322),uint(50482),uint(12073),uint(12051),uint(61772),uint(12293),uint(12381),uint(12161),uint(61433),uint(60641),uint(61521),uint(60443),uint(60421),uint(60091),uint(13213),uint(10384),uint(12091),uint(12443),uint(10353),uint(10243),uint(62282),uint(13292),uint(10683),uint(13772),uint(14212),uint(61171),uint(61281),uint(12892),uint(61523),uint(15281),uint(12034),uint(15061),uint(15083),uint(10692),uint(14731),uint(60643),uint(60181),uint(50862),uint(60071),uint(14181),uint(60093),uint(12052),uint(12162),uint(12382),uint(61043),uint(60691),uint(60471),uint(60383),uint(60031),uint(573),uint(14221),uint(13253),uint(60502),uint(50462),uint(12923),uint(60392),uint(13011),uint(60172),uint(60062),uint(10732),uint(12153),uint(12043),uint(12021),uint(61439),uint(61373),uint(12351),uint(13293),uint(13381),uint(17332),uint(60352),uint(472),uint(60022),uint(12061),uint(12083),uint(12171),uint(62244),uint(12391),uint(12413),uint(12281),uint(50602),uint(15022),uint(61773),uint(10323),uint(14384),uint(13372),uint(61012),uint(15062),uint(14732),uint(14182),uint(61091),uint(60642),uint(61421),uint(12092),uint(60981),uint(15251),uint(61522),uint(60431),uint(15031),uint(60453),uint(14151),uint(14371),uint(12352),uint(13012),uint(60182),uint(60072),uint(12022),uint(60301),uint(13773),uint(60433),uint(60411),uint(13421),uint(60081),uint(14213),uint(12981),uint(61172),uint(61282),uint(15282),uint(12893),uint(60041),uint(60063),uint(60151),uint(60173),uint(50472),uint(61251),uint(12691),uint(12383),uint(12801),uint(62241),uint(13373),uint(10733),uint(12031),uint(12053),uint(10381),uint(60921),uint(14222),uint(60393),uint(50463),uint(15252),uint(10641),uint(12071),uint(15032),uint(12093),uint(12291),uint(14152),uint(60881),uint(14372),uint(60441),uint(60353),uint(13382),uint(60472),uint(60692),uint(13294),uint(61211),uint(60032),uint(61431),uint(15023),uint(50471),uint(12062),uint(12282),uint(12392),uint(12172),uint(61092),uint(12982),uint(60982),uint(61422),uint(13422),uint(60432),uint(381),uint(10241),uint(15283),uint(10351),uint(15063),uint(14733),uint(14183),uint(14161),uint(60023),uint(14381),uint(17333),uint(13501),uint(13281)})))|(.Rotten:== uint(10383)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10101)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10204)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10307)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(11028)&.Peel:->contains($uint,[]uint{uint(1)})))|(.Rotten:== uint(50425)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(21712),uint(22152),uint(1627),uint(2903),uint(2837),uint(2221),uint(2177),uint(602),uint(20071),uint(21523),uint(1526),uint(20581),uint(2142),uint(61),uint(21461),uint(20603),uint(611),uint(63052),uint(6036),uint(1711),uint(1623),uint(2833),uint(2877),uint(20612),uint(22143),uint(2151),uint(2173),uint(5046),uint(20062),uint(598),uint(1522),uint(23622),uint(2908),uint(2226),uint(20582),uint(22223),uint(607),uint(2147),uint(23811),uint(63056),uint(22161),uint(2873),uint(22821),uint(66),uint(616),uint(5051),uint(3621),uint(1716),uint(1628),uint(2156),uint(2178),uint(2222),uint(20072),uint(2838),uint(603),uint(581),uint(22901),uint(2143),uint(1527),uint(22822),uint(1461),uint(62),uint(22162),uint(612),uint(21462),uint(2152),uint(1712),uint(20063),uint(2878),uint(71),uint(20613),uint(20591),uint(22153),uint(21713),uint(1523),uint(3626),uint(2227),uint(2161),uint(5056),uint(2821),uint(586),uint(21463),uint(608),uint(1466),uint(20583),uint(3811),uint(2148),uint(3622),uint(67),uint(617),uint(22171),uint(23812),uint(1717),uint(21621),uint(23623),uint(2157),uint(2223),uint(63057),uint(22831),uint(76),uint(582),uint(22141),uint(22163),uint(1528),uint(1462),uint(2826),uint(2166),uint(63),uint(3816),uint(591),uint(613),uint(21622),uint(23813),uint(1713),uint(2901),uint(2153),uint(72),uint(22871),uint(3627),uint(20592),uint(22902),uint(63041),uint(2822),uint(20601),uint(2162),uint(39041),uint(2228),uint(20073),uint(25041),uint(3812),uint(587),uint(1467),uint(1621),uint(2831),uint(2171),uint(68),uint(20593),uint(26031),uint(618),uint(596),uint(3623),uint(22872),uint(2158),uint(1718),uint(22172),uint(2906),uint(77),uint(22832),uint(583),uint(21521),uint(2167),uint(1463),uint(20061),uint(2871),uint(2827),uint(592),uint(3817),uint(63047),uint(20611),uint(1626),uint(22833),uint(2176),uint(21711),uint(21623),uint(73),uint(2902),uint(22173),uint(22151),uint(2836),uint(601),uint(63051),uint(22221),uint(22903),uint(3628),uint(39042),uint(2141),uint(2163),uint(20602),uint(22142),uint(588),uint(1468),uint(3813),uint(2172),uint(22873),uint(1622),uint(63042),uint(2832),uint(2876),uint(597),uint(22222),uint(1521),uint(25051),uint(23621),uint(78),uint(606),uint(2907),uint(21522),uint(6031),uint(2146),uint(2168),uint(3818),uint(5041),uint(63046),uint(2872),uint(593)})&.Rotten:== uint(13361)))|(.Rotten:== uint(10162)&.Peel:->contains($uint,[]uint{uint(1101),uint(5492),uint(1211),uint(13042),uint(1013),uint(10081),uint(12382),uint(4062),uint(5712),uint(10873),uint(10961),uint(61092),uint(2883),uint(4282),uint(7243),uint(2113),uint(2091),uint(32885),uint(2223),uint(2201),uint(2333),uint(2311),uint(10785),uint(3873),uint(10512),uint(10952),uint(4313),uint(10182),uint(11172),uint(3543),uint(3323),uint(582),uint(7472),uint(3411),uint(7252),uint(2993),uint(3081),uint(3103),uint(13341),uint(1132),uint(1022),uint(11502),uint(61083),uint(14811),uint(14833),uint(3002),uint(11212),uint(2892),uint(2122),uint(2342),uint(13491),uint(13513),uint(63),uint(833),uint(591),uint(3552),uint(5721),uint(8352),uint(3112),uint(3222),uint(1031),uint(12061),uint(1141),uint(11511),uint(8361),uint(3011),uint(2593),uint(3033),uint(2703),uint(3121),uint(13051),uint(4542),uint(12941),uint(2901),uint(2131),uint(2153),uint(2241),uint(2351),uint(7481),uint(72),uint(3561),uint(3473),uint(1062),uint(3143),uint(5123),uint(3341),uint(7512),uint(7292),uint(12981),uint(2932),uint(3152),uint(58531),uint(2272),uint(10363),uint(12972),uint(2382),uint(2294),uint(2602),uint(10011),uint(10033),uint(4142),uint(103),uint(81),uint(32881),uint(10781),uint(961),uint(3702),uint(1071),uint(1093),uint(13302),uint(3482),uint(3372),uint(9941),uint(2083),uint(1203),uint(2193),uint(17161),uint(12902),uint(10183),uint(63102),uint(3095),uint(2941),uint(11503),uint(13342),uint(2303),uint(10931),uint(2743),uint(2),uint(10953),uint(11151),uint(64092),uint(11173),uint(11142),uint(4063),uint(1102),uint(1212),uint(3381),uint(10922),uint(2202),uint(2092),uint(18991),uint(2312),uint(9061),uint(4283),uint(7231),uint(7253),uint(11512),uint(7473),uint(3412),uint(3082),uint(11),uint(10962),uint(2884),uint(121),uint(561),uint(5493),uint(5713),uint(583),uint(1133),uint(1111),uint(18081),uint(63104),uint(1001),uint(12062),uint(2123),uint(2101),uint(59021),uint(2211),uint(32886),uint(2321),uint(5722),uint(2343),uint(13351),uint(10082),uint(8353),uint(3003),uint(61652),uint(3113),uint(3091),uint(3223),uint(13021),uint(2893),uint(12951),uint(592),uint(8362),uint(1032),uint(3553),uint(1142),uint(7482),uint(2132),uint(10364),uint(2242),uint(2352),uint(10012),uint(10782),uint(4411),uint(4543),uint(13061),uint(3562),uint(10091),uint(7293),uint(3122),uint(3342),uint(7513),uint(73),uint(51),uint(3012),uint(14812),uint(61093),uint(13052),uint(2902),uint(12942),uint(601),uint(13492),uint(1151),uint(11191),uint(11213),uint(1063),uint(2141),uint(2361),uint(2273),uint(2251),uint(10351),uint(10923),uint(58532),uint(17241),uint(3703),uint(3483),uint(3571),uint(8591),uint(3373),uint(3351),uint(11143),uint(3021),uint(82),uint(3153),uint(3131),uint(7821),uint(2933),uint(962),uint(1094),uint(1072),uint(5111),uint(3901),uint(12982),uint(4341),uint(14821),uint(64093),uint(3),uint(3382),uint(32882),uint(91),uint(2942),uint(11152),uint(1213),uint(1191),uint(1103),uint(9181),uint(13022),uint(10061),uint(61651),uint(18992),uint(9062),uint(2313),uint(17162),uint(12991),uint(12903),uint(2621),uint(9942),uint(2093),uint(2291),uint(2203),uint(63103),uint(3413),uint(10932),uint(3391),uint(12),uint(122),uint(5714),uint(2951),uint(2885),uint(8081),uint(3083),uint(562),uint(13493),uint(1112),uint(1002),uint(18082),uint(63105),uint(10092),uint(12591),uint(4051),uint(5723),uint(61081),uint(11192),uint(7232),uint(2102),uint(2212),uint(13141),uint(2322),uint(21),uint(10941),uint(241),uint(4412),uint(571),uint(593),uint(7483),uint(7241),uint(3004),uint(10831),uint(3092),uint(12063),uint(13352),uint(1011),uint(1143),uint(1121),uint(11513),uint(61094),uint(10783),uint(14822),uint(2991),uint(3013),uint(2903),uint(2881),uint(2111),uint(2221),uint(2133),uint(2331),uint(2353),uint(10871),uint(3871),uint(52),uint(3321),uint(3541),uint(602),uint(3343),uint(8363),uint(3101),uint(3211),uint(1152),uint(6071),uint(8592),uint(3022),uint(4311),uint(7822),uint(14681),uint(13062),uint(12952),uint(2142),uint(2252),uint(15121),uint(2362),uint(83),uint(61),uint(4342),uint(3902),uint(831),uint(9063),uint(3572),uint(1073),uint(963),uint(3132),uint(3352),uint(5112),uint(9943),uint(58533),uint(14831),uint(2151),uint(12992),uint(10361),uint(10031),uint(2921),uint(3031),uint(3141),uint(2701),uint(17242),uint(12961),uint(10352),uint(2261),uint(2591),uint(92),uint(13511),uint(3471),uint(3383),uint(10062),uint(1214),uint(1192),uint(13023),uint(3084),uint(2952),uint(10832),uint(8082),uint(2292),uint(13),uint(10942),uint(123),uint(2622),uint(101),uint(5121),uint(11153),uint(4052),uint(563),uint(1091),uint(1113),uint(1201),uint(3392),uint(10933),uint(32883),uint(1003),uint(7233),uint(2191),uint(2213),uint(2103),uint(2081),uint(2323),uint(2301),uint(9182),uint(17163),uint(11501),uint(7242),uint(3093),uint(22),uint(10951),uint(4281),uint(242),uint(2741),uint(11171),uint(4413),uint(12381),uint(4061),uint(572),uint(1122),uint(14682),uint(1012),uint(12592),uint(2112),uint(2222),uint(5711),uint(2332),uint(12064),uint(3322),uint(10181),uint(10071),uint(2992),uint(3102),uint(3212),uint(61091),uint(5491),uint(10511),uint(31),uint(53),uint(2882),uint(603),uint(12962),uint(581),uint(8593),uint(13512),uint(8351),uint(3872),uint(1021),uint(7823),uint(3542),uint(1153),uint(1131),uint(2121),uint(10353),uint(7251),uint(7603),uint(2143),uint(2363),uint(2341),uint(15131),uint(7471),uint(61095),uint(4312),uint(3551),uint(3573),uint(3133),uint(3111),uint(3221),uint(62),uint(10784),uint(4343),uint(3001),uint(3023),uint(61082),uint(4541),uint(13063),uint(13041),uint(2891),uint(6072),uint(832),uint(18083),uint(964),uint(10872),uint(3903),uint(10362),uint(2152),uint(2262),uint(10032),uint(2592),uint(10934),uint(3472),uint(13301),uint(11154),uint(93),uint(71),uint(3032),uint(2702),uint(3142),uint(2922),uint(1061),uint(63101),uint(8083),uint(1193),uint(11211),uint(2271),uint(2293),uint(12993),uint(12971),uint(2381),uint(2623),uint(64091),uint(7511),uint(2601),uint(14832),uint(7291),uint(17243),uint(3701),uint(3371),uint(3393),uint(4141),uint(3481),uint(102),uint(2931),uint(11141),uint(3085),uint(3151),uint(1092),uint(1202),uint(12901),uint(12593),uint(10072),uint(4053),uint(2302),uint(2742),uint(6011),uint(2082),uint(2192),uint(5131),uint(10921),uint(10063),uint(10943),uint(23),uint(1),uint(243),uint(32884),uint(10833),uint(3094),uint(573),uint(58534)})))|(.Rotten:== uint(10127)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10159)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(4),uint(1)})))|(.Rotten:== uint(10724)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10019)&.Peel:->contains($uint,[]uint{uint(6),uint(2),uint(7),uint(3),uint(4),uint(5),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(82),uint(3),uint(83),uint(1),uint(81),uint(2)})&.Rotten:== uint(10795)))|(.Rotten:== uint(10270)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(83),uint(81),uint(82)})&.Rotten:== uint(20038)))|(.Peel:->contains($uint,[]uint{uint(83),uint(1),uint(81),uint(2),uint(82),uint(3)})&.Rotten:== uint(10079)))|(.Rotten:== uint(10142)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10227)&.Peel:->contains($uint,[]uint{uint(83),uint(81),uint(82)})))|(.Rotten:== uint(50001)&.Peel:->contains($uint,[]uint{uint(13288),uint(54888),uint(17569),uint(14168),uint(18119),uint(13838),uint(13728),uint(10877),uint(10987),uint(10899),uint(10679),uint(10767),uint(10789),uint(12848),uint(15567),uint(14929),uint(14907),uint(10868),uint(10538),uint(15237),uint(10978),uint(652),uint(10758),uint(14379),uint(17358),uint(13609),uint(13169),uint(11638),uint(14137),uint(14159),uint(17688),uint(11528),uint(11418),uint(13807),uint(11088),uint(11308),uint(13829),uint(13719),uint(13697),uint(15277),uint(14947),uint(10798),uint(10908),uint(10688),uint(14859),uint(14639),uint(14749),uint(17098),uint(13737),uint(13759),uint(54307),uint(13319),uint(14177),uint(13297),uint(14199),uint(13429),uint(11590),uint(11568),uint(11458),uint(17978),uint(11348),uint(19078),uint(18528),uint(12527),uint(13077),uint(11647),uint(11559),uint(11449),uint(12857),uint(12879),uint(11427),uint(13187),uint(11537),uint(12769),uint(11317),uint(11339),uint(57079),uint(17107),uint(14718),uint(17217),uint(17129),uint(12589),uint(12677),uint(12567),uint(12457),uint(17068),uint(12919),uint(12809),uint(12787),uint(13249),uint(13447),uint(11489),uint(11599),uint(11357),uint(11379),uint(17948),uint(18168),uint(18058),uint(14648),uint(14868),uint(18388),uint(14098),uint(13768),uint(14208),uint(10169),uint(13438),uint(14428),uint(13988),uint(12448),uint(11269),uint(657),uint(10829),uint(10807),uint(10917),uint(12778),uint(10939),uint(17099),uint(10697),uint(10719),uint(10367),uint(14138),uint(13808),uint(13698),uint(58429),uint(11419),uint(11529),uint(11507),uint(11287),uint(11309),uint(11397),uint(11089),uint(12818),uint(10737),uint(10759),uint(10847),uint(10539),uint(10869),uint(10979),uint(17169),uint(17147),uint(10957),uint(17939),uint(11388),uint(11168),uint(11278),uint(10948),uint(15207),uint(18577),uint(10728),uint(14569),uint(14657),uint(14877),uint(18159),uint(14899),uint(13997),uint(14019),uint(19347),uint(13887),uint(14129),uint(14217),uint(13777),uint(13799),uint(13667),uint(13689),uint(14437),uint(14459),uint(18687),uint(11538),uint(11428),uint(11318),uint(10878),uint(14917),uint(15247),uint(10988),uint(10768),uint(12528),uint(17117),uint(14037),uint(13817),uint(17337),uint(13839),uint(17359),uint(14719),uint(13729),uint(17227),uint(14169),uint(17689),uint(11648),uint(653),uint(12849),uint(12827),uint(13597),uint(11639),uint(13289),uint(15568),uint(14908),uint(18177),uint(13197),uint(12867),uint(18617),uint(17979),uint(17957),uint(13769),uint(13747),uint(13439),uint(18529),uint(13527),uint(10368),uint(10698),uint(12449),uint(14948),uint(19057),uint(19079),uint(12757),uint(12779),uint(12537),uint(51497),uint(17218),uint(17108),uint(14178),uint(10117),uint(11657),uint(13078),uint(12858),uint(11547),uint(11569),uint(13188),uint(11349),uint(11327),uint(11459),uint(10997),uint(13738),uint(10689),uint(10667),uint(10777),uint(13298),uint(54889),uint(10799),uint(10909),uint(10887),uint(14658),uint(10707),uint(10729),uint(10817),uint(18389),uint(19027),uint(18169),uint(14878),uint(13998),uint(14218),uint(18697),uint(14438),uint(11587),uint(11389),uint(11279),uint(11169),uint(13888),uint(11367),uint(13778),uint(10949),uint(13668),uint(10927),uint(13448),uint(11358),uint(18178),uint(12568),uint(15067),uint(14957),uint(12458),uint(658),uint(10808),uint(12788),uint(10918),uint(17958),uint(12678),uint(14517),uint(14429),uint(14649),uint(19058),uint(14627),uint(14869),uint(14847),uint(13989),uint(39177),uint(54308),uint(14099),uint(14187),uint(18618),uint(14209),uint(14407),uint(17148),uint(12520),uint(11508),uint(11398),uint(11288),uint(15569),uint(10958),uint(12828),uint(18688),uint(14667),uint(14909),uint(14117),uint(14139),uint(14557),uint(18578),uint(13457),uint(13237),uint(14007),uint(19348),uint(13809),uint(13677),uint(13699),uint(17069),uint(13787),uint(10738),uint(10848),uint(18059),uint(17949),uint(12577),uint(12797),uint(12819),uint(17817),uint(13607),uint(13717),uint(13299),uint(14157),uint(14179),uint(13827),uint(13739),uint(10888),uint(10998),uint(10668),uint(12529),uint(10778),uint(12507),uint(12859),uint(10118),uint(13079),uint(13189),uint(13167),uint(14918),uint(10879),uint(10857),uint(10989),uint(10769),uint(10747),uint(17127),uint(17149),uint(13598),uint(17567),uint(11649),uint(11627),uint(11539),uint(11517),uint(14038),uint(11319),uint(11429),uint(11407),uint(57077),uint(13818),uint(11297),uint(18117),uint(14958),uint(10787),uint(10809),uint(10897),uint(10919),uint(14408),uint(10369),uint(14628),uint(14518),uint(10699),uint(10677),uint(14848),uint(17197),uint(17219),uint(17109),uint(17087),uint(13748),uint(14188),uint(13528),uint(11557),uint(11447),uint(11337),uint(11359),uint(17967),uint(12538),uint(39179),uint(11658),uint(11548),uint(12868),uint(13198),uint(12758),uint(11328),uint(14949),uint(14927),uint(51498),uint(14377),uint(17338),uint(17228),uint(17118),uint(12578),uint(39178),uint(12798),uint(13238),uint(13458),uint(17167),uint(11588),uint(11368),uint(15297),uint(18157),uint(18179),uint(17959),uint(58427),uint(17937),uint(18707),uint(10167),uint(14637),uint(14659),uint(14879),uint(14747),uint(14857),uint(54309),uint(13889),uint(13669),uint(13779),uint(13757),uint(14197),uint(14219),uint(13427),uint(13449),uint(14439),uint(19059),uint(19037),uint(13999),uint(12459),uint(12569),uint(12547),uint(10818),uint(12789),uint(17198),uint(10928),uint(12767),uint(17088),uint(10708),uint(17330),uint(12877),uint(13317),uint(14127),uint(14039),uint(14017),uint(19349),uint(13797),uint(14457),uint(13819),uint(13599),uint(13687),uint(14567),uint(18579),uint(18689),uint(11408),uint(11518),uint(11298),uint(12587),uint(12917),uint(12829),uint(12807),uint(10748),uint(10858),uint(13247),uint(11377),uint(11399),uint(11267),uint(11289),uint(10959),uint(10937),uint(17818),uint(10717),uint(10739),uint(14558),uint(10827),uint(14668),uint(10849),uint(14008),uint(14118),uint(13788),uint(13678),uint(18698),uint(19028),uint(11597),uint(11487),uint(11509),uint(11527),uint(11549),uint(11417),uint(11307),uint(57078),uint(11329),uint(10867),uint(19077),uint(10889),uint(14928),uint(10669),uint(11087),uint(10977),uint(10999),uint(51499),uint(10757),uint(10779),uint(12539),uint(17128),uint(14378),uint(13828),uint(13718),uint(17568),uint(11659),uint(11637),uint(14158),uint(18118),uint(13608),uint(54887),uint(13168),uint(11628),uint(10119),uint(15227),uint(10537),uint(14919),uint(14897),uint(12508),uint(12878),uint(13318),uint(17968),uint(13758),uint(13428),uint(651),uint(10709),uint(10687),uint(14959),uint(14849),uint(12768),uint(12548),uint(14409),uint(14519),uint(14717),uint(14629),uint(17229),uint(17119),uint(17097),uint(13837),uint(17339),uint(14167),uint(14189),uint(12847),uint(12869),uint(11558),uint(12759),uint(13199),uint(17977),uint(11338),uint(11448),uint(13749),uint(13727),uint(13529),uint(10678),uint(13287),uint(10788),uint(18527),uint(10898),uint(14647),uint(18708),uint(14669),uint(14559),uint(10718),uint(10828),uint(19038),uint(14009),uint(13987),uint(14867),uint(14097),uint(14119),uint(14207),uint(14427),uint(10168),uint(13239),uint(11598),uint(11488),uint(11268),uint(11378),uint(13767),uint(13789),uint(17089),uint(17067),uint(13679),uint(13459),uint(10938),uint(13437),uint(11567),uint(17199),uint(11589),uint(11457),uint(11347),uint(11369),uint(18167),uint(18057),uint(12447),uint(10819),uint(10797),uint(12777),uint(12799),uint(10929),uint(17969),uint(10907),uint(17947),uint(14638),uint(14858),uint(18387),uint(14748),uint(14198),uint(12509),uint(11629),uint(11519),uint(17357),uint(11409),uint(12817),uint(11387),uint(17819),uint(11277),uint(11299),uint(17687),uint(11167),uint(18699),uint(14898),uint(14128),uint(656),uint(14458),uint(14568),uint(13248),uint(14018),uint(13688),uint(13798),uint(10727),uint(10749),uint(10859),uint(10947),uint(17168),uint(17938),uint(18158),uint(15197),uint(58428),uint(12588),uint(12918),uint(12808)})))|(.Rotten:== uint(10331)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10768)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(82),uint(83),uint(81)})&.Rotten:== uint(10386)))|(.Rotten:== uint(10382)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10039)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10203)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10254)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10086)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10353)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10139)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(82),uint(83),uint(81)})&.Rotten:== uint(10255)))|(.Peel:->contains($uint,[]uint{uint(1)})&.Rotten:== uint(10512)))|(.Rotten:== uint(10723)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(30822),uint(18441),uint(35653),uint(16131),uint(41333),uint(16021),uint(35521),uint(15647),uint(15427),uint(16338),uint(10539),uint(15537),uint(15031),uint(20641),uint(20531),uint(534),uint(20421),uint(51338),uint(21323),uint(18648),uint(1326),uint(15533),uint(15423),uint(36322),uint(521),uint(653),uint(37),uint(50938),uint(18432),uint(1137),uint(35033),uint(1027),uint(15546),uint(16329),uint(15656),uint(36023),uint(20522),uint(36331),uint(36133),uint(20527),uint(16136),uint(36022),uint(16026),uint(38433),uint(15652),uint(15542),uint(50528),uint(36132),uint(15036),uint(18446),uint(1322),uint(16321),uint(1023),uint(891),uint(20646),uint(33),uint(20426),uint(10821),uint(38442),uint(15643),uint(50937),uint(539),uint(10487),uint(40532),uint(1331),uint(1133),uint(38341),uint(20034),uint(51329),uint(50427),uint(35534),uint(50537),uint(50449),uint(50647),uint(18437),uint(526),uint(658),uint(20892),uint(21332),uint(15657),uint(15547),uint(10826),uint(30823),uint(20642),uint(20532),uint(20422),uint(18341),uint(16132),uint(1327),uint(35421),uint(16022),uint(35531),uint(35641),uint(15648),uint(36323),uint(21324),uint(16326),uint(15538),uint(15428),uint(38),uint(15032),uint(1028),uint(896),uint(1336),uint(1138),uint(522),uint(18433),uint(10822),uint(35034),uint(15534),uint(51137),uint(36332),uint(20523),uint(50939),uint(18442),uint(1323),uint(421),uint(531),uint(641),uint(18447),uint(16322),uint(38641),uint(38443),uint(20031),uint(34),uint(16137),uint(16027),uint(15653),uint(1332),uint(18346),uint(15521),uint(892),uint(20647),uint(50529),uint(40533),uint(20427),uint(15037),uint(21021),uint(21131),uint(51339),uint(21333),uint(16133),uint(16023),uint(38342),uint(527),uint(20651),uint(15539),uint(20541),uint(50657),uint(18438),uint(15033),uint(20893),uint(536),uint(646),uint(50428),uint(10488),uint(426),uint(20528),uint(50538),uint(35522),uint(50648),uint(1328),uint(18342),uint(20643),uint(35642),uint(35422),uint(35532),uint(15658),uint(36324),uint(16327),uint(15526),uint(20652),uint(39),uint(20542),uint(523),uint(41331),uint(10827),uint(51327),uint(50447),uint(897),uint(1337),uint(16331),uint(15522),uint(15038),uint(10823),uint(35541),uint(35651),uint(36333),uint(10537),uint(532),uint(642),uint(18443),uint(20656),uint(422),uint(38643),uint(18641),uint(1324),uint(20533),uint(20423),uint(51138),uint(21022),uint(541),uint(651),uint(21132),uint(20648),uint(20428),uint(893),uint(38642),uint(15641),uint(20032),uint(15421),uint(50429),uint(15531),uint(50649),uint(50539),uint(1333),uint(18347),uint(16332),uint(40534),uint(20657),uint(16138),uint(16028),uint(38431),uint(528),uint(38343),uint(16336),uint(31),uint(10828),uint(35523),uint(427),uint(1131),uint(18646),uint(50658),uint(1021),uint(18448),uint(15034),uint(537),uint(647),uint(21321),uint(16323),uint(1329),uint(15426),uint(15646),uint(16328),uint(15536),uint(51337),uint(898),uint(20653),uint(20521),uint(546),uint(656),uint(35652),uint(1338),uint(35542),uint(16337),uint(15527),uint(41332),uint(18642),uint(423),uint(533),uint(643),uint(15523),uint(15039),uint(36321),uint(10538),uint(20534),uint(36),uint(1136),uint(18431),uint(18343),uint(1026),uint(542),uint(652),uint(35032),uint(18436),uint(18348),uint(16333),uint(38432),uint(35031),uint(36131),uint(36021),uint(15642),uint(1321),uint(15422),uint(15532),uint(20658),uint(20526),uint(18643),uint(32),uint(51328),uint(21322),uint(38441),uint(538),uint(50448),uint(15528),uint(428),uint(648),uint(1022),uint(1132),uint(18647),uint(30821),uint(16324),uint(20033),uint(20891),uint(21023),uint(21331),uint(21133),uint(547),uint(657),uint(15541),uint(35643),uint(15651),uint(50659),uint(50527),uint(35423),uint(35533),uint(40531)})&.Rotten:== uint(53113)))|(.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3),uint(4)})&.Rotten:== uint(10733)))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10148)))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10024)))|(.Rotten:== uint(10112)&.Peel:->contains($uint,[]uint{uint(13092),uint(14412),uint(12982),uint(10241),uint(10021),uint(11011),uint(11121),uint(11143),uint(10593),uint(10571),uint(11002),uint(14821),uint(11112),uint(10562),uint(12322),uint(12102),uint(12212),uint(14051),uint(11152),uint(10602),uint(13871),uint(12252),uint(12362),uint(12142),uint(14311),uint(12353),uint(12331),uint(12111),uint(12133),uint(12221),uint(18992),uint(13211),uint(13321),uint(13541),uint(13101),uint(13013),uint(12991),uint(12881),uint(12903),uint(10052),uint(12701),uint(12591),uint(12261),uint(13141),uint(13383),uint(12151),uint(13493),uint(13471),uint(18082),uint(10092),uint(15112),uint(13031),uint(12921),uint(13902),uint(10061),uint(10083),uint(13022),uint(14342),uint(10831),uint(13132),uint(13352),uint(16071),uint(13572),uint(11073),uint(10123),uint(10101),uint(14052),uint(10013),uint(14822),uint(10563),uint(13062),uint(12952),uint(11003),uint(11091),uint(11201),uint(15121),uint(11192),uint(12622),uint(14681),uint(12292),uint(11012),uint(11122),uint(12992),uint(14061),uint(12882),uint(14281),uint(12332),uint(14831),uint(12112),uint(12222),uint(12961),uint(12741),uint(13511),uint(12213),uint(12191),uint(12301),uint(12323),uint(12081),uint(12103),uint(10242),uint(10022),uint(10572),uint(13093),uint(13221),uint(13023),uint(13001),uint(13551),uint(13573),uint(12891),uint(13903),uint(12143),uint(12121),uint(12341),uint(12363),uint(10062),uint(16072),uint(10832),uint(13111),uint(13133),uint(10053),uint(14312),uint(11021),uint(10581),uint(10603),uint(13102),uint(13322),uint(13542),uint(11153),uint(13872),uint(11131),uint(14682),uint(11061),uint(17511),uint(12271),uint(12293),uint(13472),uint(12152),uint(14541),uint(13032),uint(14343),uint(12922),uint(12702),uint(10093),uint(10071),uint(12592),uint(12262),uint(12192),uint(12302),uint(12082),uint(12962),uint(10243),uint(12742),uint(15131),uint(10023),uint(13481),uint(13063),uint(13041),uint(12931),uint(13701),uint(14141),uint(10102),uint(14053),uint(12601),uint(12381),uint(11092),uint(11202),uint(18083),uint(13151),uint(13371),uint(13873),uint(13103),uint(13081),uint(12971),uint(12993),uint(12883),uint(14313),uint(11022),uint(11132),uint(10582),uint(13301),uint(13323),uint(13411),uint(13543),uint(11013),uint(14832),uint(11101),uint(10573),uint(11211),uint(12311),uint(12333),uint(13512),uint(12091),uint(12113),uint(12223),uint(12201),uint(14282),uint(14062),uint(11141),uint(10833),uint(10591),uint(11031),uint(12593),uint(12241),uint(12351),uint(14542),uint(12131),uint(12153),uint(12342),uint(12122),uint(13112),uint(13222),uint(13552),uint(13002),uint(12892),uint(10063),uint(12602),uint(12382),uint(12272),uint(13152),uint(13372),uint(13482),uint(13702),uint(10103),uint(10081),uint(13042),uint(12932),uint(10072),uint(17512),uint(13011),uint(12901),uint(10182),uint(12703),uint(13121),uint(13341),uint(13473),uint(13561),uint(11062),uint(14283),uint(14063),uint(14811),uint(14833),uint(13051),uint(12941),uint(13381),uint(13513),uint(13491),uint(11102),uint(11212),uint(10961),uint(11071),uint(11093),uint(11203),uint(12743),uint(14142),uint(12193),uint(12303),uint(12083),uint(11001),uint(11133),uint(11111),uint(13003),uint(12981),uint(12893),uint(12321),uint(12343),uint(12123),uint(12101),uint(12211),uint(12972),uint(13302),uint(13412),uint(12202),uint(12312),uint(12092),uint(10121),uint(10011),uint(10561),uint(10583),uint(13082),uint(13342),uint(13012),uint(13562),uint(12902),uint(10051),uint(12132),uint(12242),uint(12352),uint(10073),uint(11063),uint(13122),uint(10601),uint(14543),uint(11032),uint(14411),uint(10592),uint(13091),uint(13113),uint(13223),uint(11142),uint(18991),uint(10962),uint(11072),uint(15111),uint(13373),uint(13351),uint(13483),uint(13703),uint(13571),uint(13901),uint(14341),uint(12141),uint(18081),uint(11151),uint(13131),uint(13021),uint(12933),uint(10082),uint(12251),uint(17513),uint(12273),uint(12361),uint(12203),uint(12291),uint(12313),uint(12093),uint(13413),uint(13391),uint(14812),uint(13083),uint(13061),uint(12951),uint(10122),uint(12621),uint(10012),uint(13492),uint(13382),uint(13052),uint(12942),uint(10091),uint(11103),uint(11191),uint(11213)})))|(.Rotten:== uint(10041)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(12101),uint(12211),uint(12181),uint(12102),uint(12212),uint(12111),uint(12182),uint(12213),uint(12191),uint(12112),uint(12192),uint(12193)})&.Rotten:== uint(2911)))|(.Peel:->contains($uint,[]uint{uint(50628),uint(50848),uint(40029),uint(21937),uint(937),uint(739),uint(387),uint(20428),uint(40227),uint(40337),uint(40359),uint(41129),uint(41019),uint(40698),uint(21928),uint(41028),uint(88),uint(40038),uint(50659),uint(40069),uint(40047),uint(53259),uint(40179),uint(22698),uint(20727),uint(229),uint(20419),uint(40068),uint(21898),uint(40178),uint(40508),uint(20468),uint(50667),uint(20367),uint(18),uint(50117),uint(40948),uint(20917),uint(50399),uint(21207),uint(40187),uint(40209),uint(40957),uint(20877),uint(40737),uint(40218),uint(1259),uint(22197),uint(20429),uint(20407),uint(388),uint(51157),uint(40228),uint(1158),uint(40338),uint(50629),uint(50937),uint(50849),uint(40017),uint(40039),uint(40699),uint(177),uint(727),uint(22607),uint(22699),uint(50427),uint(50669),uint(41029),uint(41007),uint(41117),uint(40787),uint(21929),uint(50119),uint(21938),uint(41258),uint(20728),uint(40048),uint(19),uint(20918),uint(40509),uint(41257),uint(20368),uint(40949),uint(40958),uint(40738),uint(1207),uint(50118),uint(50668),uint(40188),uint(22198),uint(358),uint(40087),uint(40197),uint(40219),uint(20878),uint(21208),uint(20469),uint(20447),uint(52217),uint(21899),uint(1159),uint(51337),uint(41187),uint(22608),uint(40018),uint(50397),uint(53257),uint(178),uint(728),uint(20879),uint(22199),uint(20417),uint(51158),uint(41118),uint(41008),uint(50938),uint(21209),uint(40788),uint(20729),uint(40357),uint(41259),uint(41127),uint(41171),uint(41017),uint(21939),uint(737),uint(40049),uint(40027),uint(957),uint(50428),uint(20408),uint(1208),uint(52218),uint(40387),uint(40189),uint(20919),uint(40739),uint(40717),uint(51338),uint(359),uint(41157),uint(40937),uint(41188),uint(40088),uint(40198),uint(20448),uint(40339),uint(40207),uint(40229),uint(40317),uint(918),uint(20369),uint(41119),uint(53258),uint(41009),uint(179),uint(40789),uint(20418),uint(729),uint(40019),uint(40217),uint(1257),uint(40028),uint(50398),uint(40358),uint(20427),uint(738),uint(958),uint(50658),uint(20409),uint(41018),uint(41128),uint(21927),uint(41159),uint(41027),uint(87),uint(40939),uint(22609),uint(22697),uint(50847),uint(40037),uint(1209),uint(40719),uint(40697),uint(50429),uint(50627),uint(40718),uint(448),uint(40388),uint(228),uint(20467),uint(52219),uint(41158),uint(40938),uint(40947),uint(51339),uint(40507),uint(41189),uint(50657),uint(40199),uint(40067),uint(21897),uint(40177),uint(919),uint(51159),uint(40208),uint(50939),uint(1258)})&.Rotten:== uint(43211)))|(.Rotten:== uint(2811)&.Peel:->contains($uint,[]uint{uint(24151),uint(10142),uint(24222),uint(21551),uint(10143),uint(10552),uint(10222),uint(21552),uint(24152),uint(24223),uint(10131),uint(10681),uint(10171),uint(10132),uint(10682),uint(10141),uint(10172),uint(24221),uint(10551),uint(10221)})))|(.Rotten:== uint(10141)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})&.Rotten:== uint(10075)))|(.Peel:->contains($uint,[]uint{uint(83),uint(81),uint(82)})&.Rotten:== uint(20059)))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10428)))|(.Rotten:== uint(10291)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})&.Rotten:== uint(10486)))|(.Rotten:== uint(10038)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10202)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10260)&.Peel:->contains($uint,[]uint{uint(1),uint(2)})))|(.Rotten:== uint(10430)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(10253)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10085)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})&.Rotten:== uint(10462)))|(.Rotten:== uint(10352)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10138)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10150)))|(.Rotten:== uint(10374)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10040)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})&.Rotten:== uint(10322)))|(.Rotten:== uint(10190)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(20067),uint(20068)})&.Rotten:== uint(204)))|(.Rotten:== uint(10719)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(50119)&.Peel:->contains($uint,[]uint{uint(10222),uint(61132),uint(61022),uint(10103),uint(61092),uint(10671),uint(10781),uint(10231),uint(10121),uint(10073),uint(10042),uint(61021),uint(61131),uint(10843),uint(61483),uint(10751),uint(10223),uint(10241),uint(10122),uint(10232),uint(10672),uint(10782),uint(60481),uint(10783),uint(10233),uint(10101),uint(10752),uint(60681),uint(10242),uint(52251),uint(61301),uint(61481),uint(10251),uint(10071),uint(60482),uint(10841),uint(52252),uint(60682),uint(10102),uint(61302),uint(10243),uint(10221),uint(61091),uint(10661),uint(10041),uint(61482),uint(10842),uint(10072)})))|(.Peel:->contains($uint,[]uint{uint(81),uint(82),uint(83)})&.Rotten:== uint(20390)))|(.Rotten:== uint(10012)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Rotten:== uint(50733)&.Peel:->contains($uint,[]uint{uint(4),uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10165)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10037)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10084)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(6),uint(2),uint(7),uint(3),uint(8),uint(4),uint(9),uint(5),uint(1)})&.Rotten:== uint(50525)))|(.Rotten:== uint(10059)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10009)&.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})))|(.Peel:->contains($uint,[]uint{uint(881),uint(9047),uint(9201),uint(903),uint(33831),uint(617),uint(639),uint(661),uint(21252),uint(50163),uint(21186),uint(8387),uint(20636),uint(8321),uint(20658),uint(24697),uint(8343),uint(8211),uint(3952),uint(1277),uint(1321),uint(12228),uint(8167),uint(3864),uint(3798),uint(3842),uint(1233),uint(3776),uint(24081),uint(7683),uint(2443),uint(10323),uint(10763),uint(30782),uint(10433),uint(10411),uint(18489),uint(23773),uint(10917),uint(7419),uint(24543),uint(7441),uint(23817),uint(23861),uint(24521),uint(4084),uint(24631),uint(11093),uint(24653),uint(4216),uint(24587),uint(27601),uint(41293),uint(30452),uint(4458),uint(4678),uint(4656),uint(4546),uint(4722),uint(10741),uint(24213),uint(4568),uint(4612),uint(41183),uint(40642),uint(3807),uint(7978),uint(10446),uint(47413),uint(31103),uint(10292),uint(24486),uint(24442),uint(30531),uint(3433),uint(34592),uint(10798),uint(31213),uint(30443),uint(30421),uint(4203),uint(24552),uint(10908),uint(7604),uint(24728),uint(11018),uint(14397),uint(23782),uint(27526),uint(4467),uint(4423),uint(4577),uint(27416),uint(4401),uint(27372),uint(3257),uint(626),uint(4533),uint(7428),uint(648),uint(4511),uint(4841),uint(10732),uint(4621),uint(4643),uint(4731),uint(10534),uint(22682),uint(13209),uint(48623),uint(6152),uint(33822),uint(6042),uint(868),uint(912),uint(21327),uint(956),uint(21283),uint(21261),uint(11106),uint(26171),uint(20953),uint(48161),uint(20667),uint(11238),uint(28626),uint(11216),uint(20623),uint(28582),uint(3917),uint(13957),uint(1242),uint(1286),uint(11392),uint(20887),uint(3851),uint(2474),uint(10618),uint(2452),uint(10794),uint(28221),uint(23786),uint(10508),uint(10442),uint(28177),uint(23852),uint(10904),uint(11014),uint(14393),uint(14437),uint(6161),uint(24402),uint(6117),uint(14591),uint(24512),uint(11212),uint(11102),uint(11146),uint(28573),uint(30918),uint(10728),uint(21287),uint(21221),uint(12136),uint(21243),uint(3838),uint(3816),uint(3772),uint(31094),uint(20957),uint(26153),uint(3442),uint(8581),uint(20627),uint(26043),uint(657),uint(3266),uint(20891),uint(20913),uint(8198),uint(8176),uint(613),uint(9043),uint(1251),uint(1273),uint(877),uint(8572),uint(23443),uint(48192),uint(26162),uint(11357),uint(23421),uint(8383),uint(23201),uint(8163),uint(29202),uint(23267),uint(30742),uint(40651),uint(4168),uint(30412),uint(4212),uint(4278),uint(30324),uint(4388),uint(12809),uint(2681),uint(14428),uint(4586),uint(4542),uint(32801),uint(27429),uint(1977),uint(4652),uint(4696),uint(4476),uint(24622),uint(24842),uint(12479),uint(24732),uint(53828),uint(27561),uint(7371),uint(27451),uint(22453),uint(24482),uint(3957),uint(3913),uint(4089),uint(8172),uint(32802),uint(3803),uint(3869),uint(3847),uint(24218),uint(24592),uint(3781),uint(28191),uint(28323),uint(43202),uint(20663),uint(7688),uint(20641),uint(4441),uint(4463),uint(28213),uint(622),uint(4727),uint(7424),uint(7446),uint(666),uint(3253),uint(4551),uint(11331),uint(4573),uint(11353),uint(4617),uint(11397),uint(9206),uint(13267),uint(1326),uint(23206),uint(48341),uint(23272),uint(1238),uint(1282),uint(31394),uint(952),uint(886),uint(908),uint(21323),uint(6126),uint(23822),uint(23866),uint(29203),uint(23844),uint(47681),uint(10328),uint(20883),uint(21257),uint(20861),uint(26123),uint(23448),uint(34421),uint(53832),uint(33827),uint(6157),uint(12818),uint(23787),uint(13918),uint(23853),uint(23831),uint(2448),uint(10737),uint(10913),uint(10627),uint(10539),uint(3856),uint(32221),uint(3812),uint(27443),uint(11111),uint(10451),uint(5211),uint(10297),uint(27421),uint(20628),uint(3438),uint(6113),uint(6047),uint(917),uint(873),uint(27971),uint(30162),uint(8348),uint(3262),uint(8326),uint(8216),uint(631),uint(653),uint(10781),uint(31143),uint(31011),uint(1291),uint(30901),uint(23263),uint(22801),uint(30791),uint(27412),uint(27456),uint(1181),uint(30747),uint(1247),uint(1973),uint(13958),uint(14398),uint(6166),uint(23791),uint(6122),uint(30329),uint(14596),uint(27522),uint(10293),uint(43431),uint(32133),uint(10161),uint(11019),uint(11107),uint(4208),uint(11217),uint(11239),uint(8071),uint(10733),uint(4472),uint(20632),uint(11393),uint(28072),uint(4582),uint(4428),uint(4626),uint(11261),uint(4406),uint(10447),uint(4538),uint(4516),uint(4846),uint(7521),uint(7609),uint(42441),uint(4648),uint(4692),uint(4736),uint(2457),uint(2479),uint(10799),uint(22471),uint(28622),uint(10909),uint(7411),uint(28578),uint(28327),uint(8388),uint(4217),uint(8322),uint(28173),uint(10746),uint(8168),uint(11098),uint(11142),uint(28217),uint(3953),uint(8212),uint(4613),uint(21292),uint(3865),uint(4657),uint(4547),uint(21226),uint(21248),uint(3821),uint(4723),uint(14587),uint(10504),uint(4481),uint(3843),uint(3777),uint(10438),uint(4591),uint(10416),uint(42472),uint(882),uint(21182),uint(3447),uint(22458),uint(7376),uint(618),uint(662),uint(7442),uint(28481),uint(25221),uint(10768),uint(50321),uint(3271),uint(20918),uint(24451),uint(31112),uint(53823),uint(24561),uint(24583),uint(24473),uint(24737),uint(8577),uint(1278),uint(8621),uint(24693),uint(1256),uint(24627),uint(1322),uint(24671),uint(12132),uint(23813),uint(23857),uint(14433),uint(11094),uint(23431),uint(11116),uint(11336),uint(48193),uint(27426),uint(10742),uint(11358),uint(27602),uint(28196),uint(40643),uint(30783),uint(10764),uint(28218),uint(10786),uint(30761),uint(2686),uint(10918),uint(30453),uint(23783),uint(26172),uint(8573),uint(20624),uint(20646),uint(20668),uint(627),uint(22441),uint(3918),uint(3852),uint(20888),uint(3786),uint(28482),uint(3808),uint(913),uint(957),uint(31091),uint(31113),uint(6153),uint(22683),uint(6043),uint(33832),uint(3258),uint(891),uint(28627),uint(8586),uint(28583),uint(22472),uint(1221),uint(28341),uint(1243),uint(1287),uint(9048),uint(22802),uint(6162),uint(6118),uint(21328),uint(9202),uint(21262),uint(4402),uint(30431),uint(4556),uint(3267),uint(4512),uint(3201),uint(4468),uint(30321),uint(4446),uint(4732),uint(8221),uint(8177),uint(4578),uint(4622),uint(24201),uint(10456),uint(10412),uint(2453),uint(5216),uint(10324),uint(4842),uint(24443),uint(24421),uint(7429),uint(34593),uint(24553),uint(12801),uint(24487),uint(7451),uint(24531),uint(7561),uint(24641),uint(4521),uint(4477),uint(8626),uint(4587),uint(4653),uint(4631),uint(636),uint(658),uint(4543),uint(8076),uint(22476),uint(4697),uint(3861),uint(21222),uint(3817),uint(1186),uint(3773),uint(1252),uint(12137),uint(21288),uint(20892),uint(3421),uint(33823),uint(7526),uint(20958),uint(22806),uint(878),uint(3443),uint(24623),uint(27417),uint(32811),uint(27373),uint(1978),uint(10166),uint(7416),uint(27681),uint(24733),uint(24161),uint(7372),uint(1296),uint(24843),uint(43811),uint(27527),uint(10628),uint(4081),uint(40652),uint(24271),uint(30444),uint(30422),uint(30532),uint(10452),uint(4213),uint(24381),uint(24403),uint(24513),uint(10298),uint(24698),uint(3276),uint(24632),uint(7447),uint(24676),uint(20637),uint(20901),uint(7601),uint(27606),uint(27562),uint(27452),uint(10619),uint(10509),uint(10531),uint(30743),uint(14592),uint(30721),uint(10421),uint(28178),uint(10443),uint(30501),uint(2682),uint(4486),uint(24588),uint(24522),uint(4442),uint(14438),uint(30413),uint(623),uint(23422),uint(11213),uint(667),uint(28486),uint(28222),uint(23202),uint(3958),uint(23268),uint(1261),uint(24082),uint(1283),uint(3848),uint(21253),uint(3826),uint(1327),uint(23862),uint(3782),uint(887),uint(953),uint(6171),uint(23818),uint(21187),uint(6127),uint(11147),uint(33836),uint(26163),uint(21231),uint(8582),uint(11103),uint(6048),uint(30722),uint(30502),uint(34431),uint(30436),uint(10769),uint(26111),uint(10791),uint(30326),uint(48342),uint(53833),uint(10747),uint(27563),uint(14588),uint(27453),uint(10329),uint(10417),uint(6158),uint(4552),uint(4728),uint(3263),uint(8481),uint(4596),uint(27607),uint(4618),uint(13268),uint(8327),uint(33837),uint(32803),uint(8173),uint(8217),uint(10901),uint(24461),uint(24483),uint(24593),uint(11011),uint(2471),uint(24571),uint(28487),uint(43203),uint(8578),uint(11099),uint(11143),uint(8622),uint(2801),uint(28223),uint(4737),uint(21223),uint(4847),uint(4627),uint(918),uint(11332),uint(20871),uint(4671),uint(896),uint(11398),uint(27972),uint(4693),uint(20893),uint(43432),uint(27686),uint(632),uint(10738),uint(10782),uint(8226),uint(1226),uint(1248),uint(3857),uint(28346),uint(8072),uint(3813),uint(1292),uint(24646),uint(3791),uint(30911),uint(11112),uint(5221),uint(1182),uint(20629),uint(11266),uint(20651),uint(28192),uint(23854),uint(23832),uint(47682),uint(7456),uint(7566),uint(12806),uint(7522),uint(42442),uint(13919),uint(23788),uint(2458),uint(24272),uint(9207),uint(23436),uint(34422),uint(24382),uint(21971),uint(7412),uint(33828),uint(31351),uint(4407),uint(4451),uint(24162),uint(4561),uint(4583),uint(4517),uint(4473),uint(29041),uint(3426),uint(42473),uint(20633),uint(3448),uint(3206),uint(28623),uint(7377),uint(7421),uint(7443),uint(4086),uint(3272),uint(4218),uint(24452),uint(8587),uint(11108),uint(4548),uint(24628),uint(4526),uint(4592),uint(20611),uint(11394),uint(24672),uint(24562),uint(11262),uint(4482),uint(4636),uint(4658),uint(11218),uint(24738),uint(6167),uint(14421),uint(883),uint(6123),uint(861),uint(48162),uint(12802),uint(30163),uint(641),uint(663),uint(9203),uint(1323),uint(3844),uint(3866),uint(3822),uint(21293),uint(21271),uint(32222),uint(1257),uint(21183),uint(3778),uint(14597),uint(27422),uint(21227),uint(47414),uint(23792),uint(23858),uint(34391),uint(23801),uint(6176),uint(23845),uint(23823),uint(12221),uint(44211),uint(13959),uint(23911),uint(23867),uint(12133),uint(10162),uint(20862),uint(27523),uint(21258),uint(27413),uint(27457),uint(50322),uint(31012),uint(28381),uint(8323),uint(8213),uint(48571),uint(30902),uint(23207),uint(23273),uint(8191),uint(23251),uint(2687),uint(30748),uint(28073),uint(7971),uint(30792),uint(10536),uint(20642),uint(10448),uint(10426),uint(28161),uint(13207),uint(958),uint(892),uint(4843),uint(628),uint(12811),uint(21241),uint(21263),uint(8486),uint(20647),uint(20911),uint(8178),uint(8222),uint(1288),uint(22473),uint(1266),uint(22451),uint(3853),uint(3787),uint(3831),uint(1222),uint(10532),uint(31013),uint(47411),uint(30903),uint(10444),uint(10796),uint(10422),uint(30793),uint(10906),uint(24422),uint(24532),uint(7452),uint(24488),uint(24642),uint(4161),uint(7562),uint(2476),uint(11016),uint(7606),uint(4271),uint(4381),uint(27458),uint(4513),uint(30441),uint(4403),uint(4447),uint(27414),uint(4557),uint(4733),uint(24202),uint(4623),uint(10620),uint(10413),uint(24211),uint(30916),uint(3796),uint(40653),uint(10457),uint(31092),uint(30784),uint(24453),uint(4082),uint(7527),uint(10787),uint(24541),uint(23859),uint(30432),uint(24563),uint(7681),uint(23793),uint(24673),uint(23771),uint(24651),uint(3422),uint(4456),uint(4478),uint(41291),uint(27427),uint(4566),uint(4588),uint(30322),uint(3268),uint(2806),uint(637),uint(7417),uint(4522),uint(53826),uint(3202),uint(10743),uint(10721),uint(7373),uint(4632),uint(43812),uint(41181),uint(4676),uint(27603),uint(10501),uint(4698),uint(28197),uint(22803),uint(1187),uint(6163),uint(21228),uint(33833),uint(901),uint(21272),uint(11117),uint(23441),uint(20656),uint(11227),uint(20612),uint(20634),uint(18487),uint(28483),uint(28571),uint(1253),uint(1231),uint(11337),uint(3862),uint(3818),uint(1297),uint(23951),uint(2441),uint(10629),uint(10761),uint(10783),uint(10453),uint(23841),uint(10431),uint(28166),uint(23863),uint(14426),uint(6172),uint(10321),uint(6128),uint(10167),uint(2683),uint(11091),uint(11113),uint(24523),uint(28628),uint(28386),uint(24083),uint(28342),uint(3849),uint(21276),uint(50161),uint(3783),uint(22477),uint(5226),uint(21232),uint(3827),uint(3431),uint(21188),uint(22807),uint(20616),uint(20638),uint(11399),uint(31391),uint(11267),uint(624),uint(646),uint(668),uint(23423),uint(8341),uint(48322),uint(20902),uint(3277),uint(23203),uint(8077),uint(1262),uint(48621),uint(12138),uint(888),uint(866),uint(23432),uint(8583),uint(8627),uint(11148),uint(26173),uint(26151),uint(8482),uint(26041),uint(8328),uint(1328),uint(8218),uint(8196),uint(7976),uint(30731),uint(14593),uint(2472),uint(7602),uint(4201),uint(30291),uint(30533),uint(2802),uint(4421),uint(30423),uint(24677),uint(4553),uint(4597),uint(4531),uint(4641),uint(27418),uint(4487),uint(24611),uint(32812),uint(24633),uint(4443),uint(7426),uint(7448),uint(24721),uint(27682),uint(12226),uint(27528),uint(22442),uint(41322),uint(24471),uint(12222),uint(8073),uint(28576),uint(32813),uint(8161),uint(3836),uint(3858),uint(24647),uint(24691),uint(4166),uint(28488),uint(24581),uint(3792),uint(24163),uint(4386),uint(4276),uint(20652),uint(8623),uint(4518),uint(4452),uint(4408),uint(611),uint(633),uint(4738),uint(7413),uint(7457),uint(7523),uint(7567),uint(4562),uint(4628),uint(4672),uint(42443),uint(9041),uint(24273),uint(24383),uint(4848),uint(1293),uint(48572),uint(23261),uint(1183),uint(1227),uint(1271),uint(897),uint(41321),uint(14589),uint(10163),uint(23811),uint(12816),uint(23833),uint(20872),uint(21246),uint(23437),uint(26112),uint(34432),uint(20916),uint(32131),uint(50323),uint(53821),uint(48321),uint(33838),uint(9208),uint(23446),uint(48343),uint(6168),uint(12807),uint(23952),uint(14391),uint(23842),uint(12477),uint(21972),uint(31141),uint(47683),uint(4087),uint(26121),uint(10792),uint(10748),uint(10726),uint(10902),uint(3911),uint(3867),uint(3845),uint(11012),uint(10418),uint(3823),uint(3801),uint(10506),uint(30723),uint(20617),uint(20639),uint(20661),uint(3427),uint(22456),uint(22478),uint(30437),uint(862),uint(27608),uint(30503),uint(906),uint(22808),uint(8381),uint(43433),uint(3251),uint(13269),uint(3273),uint(642),uint(30327),uint(32804),uint(8227),uint(3207),uint(1258),uint(31352),uint(44212),uint(23208),uint(30912),uint(23252),uint(27423),uint(48163),uint(5231),uint(1236),uint(10326),uint(10436),uint(6177),uint(14431),uint(6111),uint(27973),uint(12803),uint(34423),uint(27687),uint(8346),uint(8192),uint(11096),uint(11228),uint(2688),uint(51014),uint(28347),uint(11118),uint(10722),uint(4483),uint(20621),uint(20643),uint(4461),uint(4571),uint(7972),uint(4593),uint(4637),uint(10458),uint(28193),uint(28171),uint(4527),uint(10502),uint(42474),uint(7686),uint(10766),uint(10788),uint(7378),uint(7422),uint(2446),uint(4206),uint(10911),uint(28382),uint(4272),uint(4448),uint(8223),uint(4426),uint(4382),uint(4558),uint(4646),uint(4536),uint(11351),uint(14598),uint(21281),uint(3854),uint(32223),uint(10537),uint(3832),uint(28162),uint(3788),uint(10449),uint(10427),uint(871),uint(20951),uint(7607),uint(20863),uint(893),uint(3436),uint(629),uint(7453),uint(651),uint(7563),uint(24462),uint(31101),uint(31211),uint(24572),uint(1223),uint(8588),uint(24726),uint(1267),uint(1971),uint(23802),uint(23868),uint(23912),uint(34392),uint(29042),uint(14422),uint(4162),uint(23442),uint(2807),uint(3203),uint(11281),uint(11237),uint(27371),uint(10731),uint(23266),uint(43813),uint(11391),uint(30904),uint(47412),uint(28163),uint(28383),uint(30794),uint(10797),uint(23816),uint(4083),uint(10907),uint(30442),uint(2477),uint(23772),uint(11017),uint(26161),uint(29043),uint(20613),uint(8628),uint(20657),uint(34591),uint(638),uint(12227),uint(616),uint(53827),uint(3951),uint(28581),uint(3863),uint(3841),uint(34393),uint(22452),uint(3797),uint(22474),uint(9046),uint(31102),uint(33821),uint(31212),uint(48622),uint(14396),uint(8487),uint(902),uint(3423),uint(42471),uint(28572),uint(1188),uint(1232),uint(1276),uint(1298),uint(13208),uint(22681),uint(18488),uint(6151),uint(6173),uint(6041),uint(21273),uint(21251),uint(41292),uint(8386),uint(3278),uint(3256),uint(8342),uint(4523),uint(4457),uint(4721),uint(8166),uint(4567),uint(4611),uint(41182),uint(4633),uint(24212),uint(8078),uint(4677),uint(2442),uint(10423),uint(10533),uint(10291),uint(12812),uint(7418),uint(24586),uint(7528),uint(24542),uint(24696),uint(7682),uint(24652),uint(4466),uint(4576),uint(26042),uint(4488),uint(4598),uint(8483),uint(4422),uint(4642),uint(30323),uint(647),uint(4532),uint(8197),uint(12478),uint(22443),uint(3916),uint(41323),uint(21233),uint(3806),uint(3850),uint(21277),uint(7977),uint(3828),uint(5236),uint(1263),uint(1241),uint(21321),uint(31093),uint(20881),uint(3432),uint(20903),uint(867),uint(7603),uint(911),uint(24612),uint(27428),uint(7427),uint(24722),uint(24678),uint(24216),uint(24084),uint(27604),uint(30917),uint(10727),uint(30741),uint(10617),uint(28198),uint(28176),uint(40641),uint(10507),uint(30433),uint(30411),uint(10441),uint(4202),uint(12808),uint(20648),uint(24731),uint(31392),uint(24841),uint(7414),uint(24643),uint(20626),uint(7458),uint(20912),uint(20956),uint(7568),uint(24203),uint(27441),uint(27419),uint(30732),uint(10432),uint(30534),uint(28167),uint(2451),uint(4211),uint(2473),uint(4167),uint(4277),uint(24423),uint(27683),uint(24401),uint(10168),uint(2803),uint(10322),uint(30292),uint(24533),uint(24511),uint(24621),uint(4453),uint(14427),uint(4387),uint(11356),uint(634),uint(656),uint(48191),uint(48323),uint(23433),uint(28343),uint(28387),uint(28211),uint(29201),uint(612),uint(28321),uint(1272),uint(3859),uint(21242),uint(3837),uint(21286),uint(10762),uint(10784),uint(3771),uint(3793),uint(23851),uint(1228),uint(898),uint(876),uint(10916),uint(6116),uint(3441),uint(26152),uint(50162),uint(11092),uint(8571),uint(22457),uint(1976),uint(14423),uint(30293),uint(21973),uint(48573),uint(26122),uint(53822),uint(31393),uint(10736),uint(23271),uint(30161),uint(10538),uint(21291),uint(10296),uint(27442),uint(10428),uint(4651),uint(4673),uint(4541),uint(3252),uint(11396),uint(4563),uint(3428),uint(8382),uint(8228),uint(3208),uint(33826),uint(8162),uint(10912),uint(24472),uint(24648),uint(24626),uint(24582),uint(13917),uint(24736),uint(28322),uint(28212),uint(28388),uint(28168),uint(11352),uint(24692),uint(30733),uint(11286),uint(4726),uint(50324),uint(863),uint(4616),uint(27609),uint(907),uint(21322),uint(4638),uint(20882),uint(21256),uint(27521),uint(21278),uint(32132),uint(8347),uint(621),uint(643),uint(8171),uint(24591),uint(28577),uint(10793),uint(24613),uint(3956),uint(8193),uint(24723),uint(10903),uint(3912),uint(3868),uint(1237),uint(3802),uint(1281),uint(3846),uint(11101),uint(11013),uint(28071),uint(951),uint(7973),uint(43201),uint(20662),uint(11211),uint(30746),uint(20618),uint(23843),uint(12817),uint(23821),uint(7687),uint(9042),uint(2447),uint(23447),uint(34433),uint(24481),uint(7423),uint(31142),uint(53831),uint(28621),uint(4088),uint(12223),uint(24217),uint(14392),uint(4572),uint(14436),uint(23953),uint(4528),uint(4462),uint(20886),uint(20952),uint(7608),uint(3437),uint(20666),uint(3261),uint(4207),uint(4163),uint(4273),uint(4383),uint(24463),uint(11141),uint(24441),uint(24551),uint(8576),uint(11097),uint(4537),uint(4581),uint(20622),uint(4647),uint(24573),uint(4471),uint(4427),uint(11229),uint(24727),uint(30504),uint(6178),uint(14432),uint(30438),uint(6156),uint(6112),uint(872),uint(6046),uint(916),uint(12813),uint(23253),uint(30328),uint(652),uint(44213),uint(3833),uint(21282),uint(23913),uint(1246),uint(12131),uint(3811),uint(27411),uint(1268),uint(23781),uint(23803),uint(21326),uint(23812),uint(12804),uint(6121),uint(30451),uint(23438),uint(2478),uint(2456),uint(31111),uint(31353),uint(23856),uint(1972),uint(27688),uint(10327),uint(20873),uint(3446),uint(4691),uint(21247),uint(27424),uint(21181),uint(10767),uint(26113),uint(8488),uint(10789),uint(20917),uint(2808),uint(28216),uint(30913),uint(10723),uint(23262),uint(28348),uint(28326),uint(30781),uint(20631),uint(20653),uint(10437),uint(28172),uint(10503)})&.Rotten:== uint(13163)))|(.Rotten:== uint(10377)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))|(.Rotten:== uint(10373)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Peel:->contains($uint,[]uint{uint(2),uint(3),uint(1)})&.Rotten:== uint(10409)))|(.Rotten:== uint(10348)&.Peel:->contains($uint,[]uint{uint(1),uint(2),uint(3)})))|(.Rotten:== uint(10794)&.Peel:->contains($uint,[]uint{uint(3),uint(1),uint(2)})))))) \ No newline at end of file diff --git a/validator/tests/pb/BenchBridgePepperAndFountainTarget/valid.main.PuddingMilkshake.desc.pb b/validator/tests/pb/BenchBridgePepperAndFountainTarget/valid.main.PuddingMilkshake.desc.pb new file mode 100644 index 0000000..e9ed857 --- /dev/null +++ b/validator/tests/pb/BenchBridgePepperAndFountainTarget/valid.main.PuddingMilkshake.desc.pb @@ -0,0 +1,4 @@ + + + +ZBaJa \ No newline at end of file diff --git a/validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.json b/validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.json new file mode 100644 index 0000000..9bbe556 --- /dev/null +++ b/validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.json @@ -0,0 +1,247 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FinanceJudo" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SpyCarpenter" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.txt b/validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.txt new file mode 100644 index 0000000..1ae1e36 --- /dev/null +++ b/validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.txt @@ -0,0 +1 @@ +[*,FinanceJudo[*,SaladWorry[*,SpyCarpenter:(.BridgePepper:_:*="a"&.FountainTarget:_:*="a"),*],*],*] \ No newline at end of file diff --git a/validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.xml b/validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.xml new file mode 100644 index 0000000..61206ce --- /dev/null +++ b/validator/tests/pb/BenchBridgePepperAndFountainTarget/validator.xml @@ -0,0 +1,254 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + FinanceJudo + + + + + + + [ + + + + + * + + + + + , + + + + + + + + SaladWorry + + + + + + + [ + + + + + * + + + + + , + + + + + + + + SpyCarpenter + + + + + : + + + + + ( + + + + + . + + + + + + BridgePepper + + + + + : + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + & + + + + + . + + + + + + FountainTarget + + + + + : + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + ) + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/BightTurn/invalid.main.Knot.desc.pb b/validator/tests/pb/BightTurn/invalid.main.Knot.desc.pb new file mode 100644 index 0000000..dac67b4 --- /dev/null +++ b/validator/tests/pb/BightTurn/invalid.main.Knot.desc.pb @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/validator/tests/pb/BightTurn/validator.json b/validator/tests/pb/BightTurn/validator.json new file mode 100644 index 0000000..c0099b7 --- /dev/null +++ b/validator/tests/pb/BightTurn/validator.json @@ -0,0 +1,59 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/BightTurn/validator.txt b/validator/tests/pb/BightTurn/validator.txt new file mode 100644 index 0000000..d86366c --- /dev/null +++ b/validator/tests/pb/BightTurn/validator.txt @@ -0,0 +1 @@ +_:_:Elbow:==true \ No newline at end of file diff --git a/validator/tests/pb/BightTurn/validator.xml b/validator/tests/pb/BightTurn/validator.xml new file mode 100644 index 0000000..2190dd3 --- /dev/null +++ b/validator/tests/pb/BightTurn/validator.xml @@ -0,0 +1,61 @@ + + + + + + + _ + + + + + : + + + + + + + _ + + + + + : + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/BridgePepper/valid.main.PuddingMilkshake.desc.pb b/validator/tests/pb/BridgePepper/valid.main.PuddingMilkshake.desc.pb new file mode 100644 index 0000000..882b90e --- /dev/null +++ b/validator/tests/pb/BridgePepper/valid.main.PuddingMilkshake.desc.pb @@ -0,0 +1,3 @@ + + +ZBa \ No newline at end of file diff --git a/validator/tests/pb/BridgePepper/validator.json b/validator/tests/pb/BridgePepper/validator.json new file mode 100644 index 0000000..b923eb5 --- /dev/null +++ b/validator/tests/pb/BridgePepper/validator.json @@ -0,0 +1,208 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FinanceJudo" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SpyCarpenter" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/BridgePepper/validator.txt b/validator/tests/pb/BridgePepper/validator.txt new file mode 100644 index 0000000..96aeac0 --- /dev/null +++ b/validator/tests/pb/BridgePepper/validator.txt @@ -0,0 +1 @@ +[*,FinanceJudo[*,SaladWorry[*,SpyCarpenter[*,BridgePepper:_:*="a",*],*],*],*] \ No newline at end of file diff --git a/validator/tests/pb/BridgePepper/validator.xml b/validator/tests/pb/BridgePepper/validator.xml new file mode 100644 index 0000000..c2bbb7b --- /dev/null +++ b/validator/tests/pb/BridgePepper/validator.xml @@ -0,0 +1,213 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + FinanceJudo + + + + + + + [ + + + + + * + + + + + , + + + + + + + + SaladWorry + + + + + + + [ + + + + + * + + + + + , + + + + + + + + SpyCarpenter + + + + + + + [ + + + + + * + + + + + , + + + + + + + + BridgePepper + + + + + : + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/ContextDavid/invalid.main.Person.desc.pb b/validator/tests/pb/ContextDavid/invalid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/ContextDavid/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/ContextDavid/validator.json b/validator/tests/pb/ContextDavid/validator.json new file mode 100644 index 0000000..b4beea9 --- /dev/null +++ b/validator/tests/pb/ContextDavid/validator.json @@ -0,0 +1,103 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"TheStreet\"", + "StringValue": "TheStreet" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/ContextDavid/validator.txt b/validator/tests/pb/ContextDavid/validator.txt new file mode 100644 index 0000000..a26833d --- /dev/null +++ b/validator/tests/pb/ContextDavid/validator.txt @@ -0,0 +1 @@ +.Addresses:_[Number:==456,Street:=="TheStreet"] \ No newline at end of file diff --git a/validator/tests/pb/ContextDavid/validator.xml b/validator/tests/pb/ContextDavid/validator.xml new file mode 100644 index 0000000..607dff1 --- /dev/null +++ b/validator/tests/pb/ContextDavid/validator.xml @@ -0,0 +1,108 @@ + + + + + . + + + + + + Addresses + + + + + : + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + + + == + + + + "TheStreet" + TheStreet + + + + + + + + + + + ] + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/ContextRobert/valid.main.Person.desc.pb b/validator/tests/pb/ContextRobert/valid.main.Person.desc.pb new file mode 100644 index 0000000..0894177 --- /dev/null +++ b/validator/tests/pb/ContextRobert/valid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +Robert TheStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/ContextRobert/validator.json b/validator/tests/pb/ContextRobert/validator.json new file mode 100644 index 0000000..b4beea9 --- /dev/null +++ b/validator/tests/pb/ContextRobert/validator.json @@ -0,0 +1,103 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"TheStreet\"", + "StringValue": "TheStreet" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/ContextRobert/validator.txt b/validator/tests/pb/ContextRobert/validator.txt new file mode 100644 index 0000000..a26833d --- /dev/null +++ b/validator/tests/pb/ContextRobert/validator.txt @@ -0,0 +1 @@ +.Addresses:_[Number:==456,Street:=="TheStreet"] \ No newline at end of file diff --git a/validator/tests/pb/ContextRobert/validator.xml b/validator/tests/pb/ContextRobert/validator.xml new file mode 100644 index 0000000..607dff1 --- /dev/null +++ b/validator/tests/pb/ContextRobert/validator.xml @@ -0,0 +1,108 @@ + + + + + . + + + + + + Addresses + + + + + : + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + + + == + + + + "TheStreet" + TheStreet + + + + + + + + + + + ] + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/CorrectTypeRobert/valid.main.Person.desc.pb b/validator/tests/pb/CorrectTypeRobert/valid.main.Person.desc.pb new file mode 100644 index 0000000..0894177 --- /dev/null +++ b/validator/tests/pb/CorrectTypeRobert/valid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +Robert TheStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/CorrectTypeRobert/validator.json b/validator/tests/pb/CorrectTypeRobert/validator.json new file mode 100644 index 0000000..746ca4c --- /dev/null +++ b/validator/tests/pb/CorrectTypeRobert/validator.json @@ -0,0 +1,62 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "type", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/CorrectTypeRobert/validator.txt b/validator/tests/pb/CorrectTypeRobert/validator.txt new file mode 100644 index 0000000..b4cabd9 --- /dev/null +++ b/validator/tests/pb/CorrectTypeRobert/validator.txt @@ -0,0 +1 @@ +[Name:->type($string),*] \ No newline at end of file diff --git a/validator/tests/pb/CorrectTypeRobert/validator.xml b/validator/tests/pb/CorrectTypeRobert/validator.xml new file mode 100644 index 0000000..e208c1a --- /dev/null +++ b/validator/tests/pb/CorrectTypeRobert/validator.xml @@ -0,0 +1,62 @@ + + + + + [ + + + + + + Name + + + + + : + + + + + + -> + + + type + + ( + + + + + + + 109 + + + + + ) + + + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/DPocketRoses/invalid.main.PocketRoses.desc.pb b/validator/tests/pb/DPocketRoses/invalid.main.PocketRoses.desc.pb new file mode 100644 index 0000000..91a35ff --- /dev/null +++ b/validator/tests/pb/DPocketRoses/invalid.main.PocketRoses.desc.pb @@ -0,0 +1 @@ +BaBbBc \ No newline at end of file diff --git a/validator/tests/pb/DPocketRoses/validator.json b/validator/tests/pb/DPocketRoses/validator.json new file mode 100644 index 0000000..4264d8b --- /dev/null +++ b/validator/tests/pb/DPocketRoses/validator.json @@ -0,0 +1,60 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"d\"", + "StringValue": "d" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/DPocketRoses/validator.txt b/validator/tests/pb/DPocketRoses/validator.txt new file mode 100644 index 0000000..b01201b --- /dev/null +++ b/validator/tests/pb/DPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[0:=="d",*] \ No newline at end of file diff --git a/validator/tests/pb/DPocketRoses/validator.xml b/validator/tests/pb/DPocketRoses/validator.xml new file mode 100644 index 0000000..5d2acfe --- /dev/null +++ b/validator/tests/pb/DPocketRoses/validator.xml @@ -0,0 +1,63 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 0 + + + + + : + + + + + + + == + + + + "d" + d + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/DontErrorGivenWrongType/invalid.main.Person.desc.pb b/validator/tests/pb/DontErrorGivenWrongType/invalid.main.Person.desc.pb new file mode 100644 index 0000000..66d3694 --- /dev/null +++ b/validator/tests/pb/DontErrorGivenWrongType/invalid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +SomeStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/DontErrorGivenWrongType/validator.json b/validator/tests/pb/DontErrorGivenWrongType/validator.json new file mode 100644 index 0000000..b4faf57 --- /dev/null +++ b/validator/tests/pb/DontErrorGivenWrongType/validator.json @@ -0,0 +1,94 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "uint(0)", + "UintValue": 0 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/DontErrorGivenWrongType/validator.txt b/validator/tests/pb/DontErrorGivenWrongType/validator.txt new file mode 100644 index 0000000..5bafb7f --- /dev/null +++ b/validator/tests/pb/DontErrorGivenWrongType/validator.txt @@ -0,0 +1 @@ +[Addresses:_[Number:>=uint(0),*],*] \ No newline at end of file diff --git a/validator/tests/pb/DontErrorGivenWrongType/validator.xml b/validator/tests/pb/DontErrorGivenWrongType/validator.xml new file mode 100644 index 0000000..fc595d4 --- /dev/null +++ b/validator/tests/pb/DontErrorGivenWrongType/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + + Addresses + + + + + : + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + >= + + + + uint(0) + 0 + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilJohn/invalid.main.Person.desc.pb b/validator/tests/pb/EmptyOrNilJohn/invalid.main.Person.desc.pb new file mode 100644 index 0000000..4463814 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilJohn/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +John +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilJohn/validator.json b/validator/tests/pb/EmptyOrNilJohn/validator.json new file mode 100644 index 0000000..d68c824 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilJohn/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "empty" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "empty", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilJohn/validator.txt b/validator/tests/pb/EmptyOrNilJohn/validator.txt new file mode 100644 index 0000000..ad903a6 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilJohn/validator.txt @@ -0,0 +1,3 @@ +(@empty|@nil) +#empty=[*,Name:->eq(length($string),0),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilJohn/validator.xml b/validator/tests/pb/EmptyOrNilJohn/validator.xml new file mode 100644 index 0000000..4c72a76 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilJohn/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + empty + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + empty + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilNoname/valid.main.Person.desc.pb b/validator/tests/pb/EmptyOrNilNoname/valid.main.Person.desc.pb new file mode 100644 index 0000000..1aa3496 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilNoname/valid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +SomeStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilNoname/validator.json b/validator/tests/pb/EmptyOrNilNoname/validator.json new file mode 100644 index 0000000..d68c824 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilNoname/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "empty" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "empty", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilNoname/validator.txt b/validator/tests/pb/EmptyOrNilNoname/validator.txt new file mode 100644 index 0000000..ad903a6 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilNoname/validator.txt @@ -0,0 +1,3 @@ +(@empty|@nil) +#empty=[*,Name:->eq(length($string),0),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilNoname/validator.xml b/validator/tests/pb/EmptyOrNilNoname/validator.xml new file mode 100644 index 0000000..4c72a76 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilNoname/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + empty + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + empty + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilSmith/valid.main.Person.desc.pb b/validator/tests/pb/EmptyOrNilSmith/valid.main.Person.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..2ecf2a7293ae76e0b20bd820ebe46b39d8479846 GIT binary patch literal 30 icmd;L5aQ!t6ygfb&rJ<3DN0Q(k>WBiG%~la1R(%hWCoc4 literal 0 HcmV?d00001 diff --git a/validator/tests/pb/EmptyOrNilSmith/validator.json b/validator/tests/pb/EmptyOrNilSmith/validator.json new file mode 100644 index 0000000..d68c824 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilSmith/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "empty" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "empty", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilSmith/validator.txt b/validator/tests/pb/EmptyOrNilSmith/validator.txt new file mode 100644 index 0000000..ad903a6 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilSmith/validator.txt @@ -0,0 +1,3 @@ +(@empty|@nil) +#empty=[*,Name:->eq(length($string),0),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/pb/EmptyOrNilSmith/validator.xml b/validator/tests/pb/EmptyOrNilSmith/validator.xml new file mode 100644 index 0000000..4c72a76 --- /dev/null +++ b/validator/tests/pb/EmptyOrNilSmith/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + empty + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + empty + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/pb/FinalCPocketRoses/valid.main.PocketRoses.desc.pb b/validator/tests/pb/FinalCPocketRoses/valid.main.PocketRoses.desc.pb new file mode 100644 index 0000000..91a35ff --- /dev/null +++ b/validator/tests/pb/FinalCPocketRoses/valid.main.PocketRoses.desc.pb @@ -0,0 +1 @@ +BaBbBc \ No newline at end of file diff --git a/validator/tests/pb/FinalCPocketRoses/validator.json b/validator/tests/pb/FinalCPocketRoses/validator.json new file mode 100644 index 0000000..105c55a --- /dev/null +++ b/validator/tests/pb/FinalCPocketRoses/validator.json @@ -0,0 +1,60 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 2 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/FinalCPocketRoses/validator.txt b/validator/tests/pb/FinalCPocketRoses/validator.txt new file mode 100644 index 0000000..36df8ad --- /dev/null +++ b/validator/tests/pb/FinalCPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[*,2:=="c"] \ No newline at end of file diff --git a/validator/tests/pb/FinalCPocketRoses/validator.xml b/validator/tests/pb/FinalCPocketRoses/validator.xml new file mode 100644 index 0000000..87cfb48 --- /dev/null +++ b/validator/tests/pb/FinalCPocketRoses/validator.xml @@ -0,0 +1,63 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + * + + + + + , + + + + + + 2 + + + + + : + + + + + + + == + + + + "c" + c + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/HiddenLeftRecursionDavid/valid.main.Person.desc.pb b/validator/tests/pb/HiddenLeftRecursionDavid/valid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/HiddenLeftRecursionDavid/valid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/HiddenLeftRecursionDavid/validator.json b/validator/tests/pb/HiddenLeftRecursionDavid/validator.json new file mode 100644 index 0000000..f36edfb --- /dev/null +++ b/validator/tests/pb/HiddenLeftRecursionDavid/validator.json @@ -0,0 +1,96 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "hidden" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "hidden", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/HiddenLeftRecursionDavid/validator.txt b/validator/tests/pb/HiddenLeftRecursionDavid/validator.txt new file mode 100644 index 0000000..534c1be --- /dev/null +++ b/validator/tests/pb/HiddenLeftRecursionDavid/validator.txt @@ -0,0 +1,2 @@ +(@hidden|[*,Telephone:=="0123456789"]) +#hidden=@main \ No newline at end of file diff --git a/validator/tests/pb/HiddenLeftRecursionDavid/validator.xml b/validator/tests/pb/HiddenLeftRecursionDavid/validator.xml new file mode 100644 index 0000000..f62291e --- /dev/null +++ b/validator/tests/pb/HiddenLeftRecursionDavid/validator.xml @@ -0,0 +1,94 @@ + + + + + ( + + + + + @ + + hidden + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + + + + + + # + + hidden + + = + + + + + @ + + main + + + + \ No newline at end of file diff --git a/validator/tests/pb/HiddenLeftRecursionRobert/invalid.main.Person.desc.pb b/validator/tests/pb/HiddenLeftRecursionRobert/invalid.main.Person.desc.pb new file mode 100644 index 0000000..0894177 --- /dev/null +++ b/validator/tests/pb/HiddenLeftRecursionRobert/invalid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +Robert TheStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/HiddenLeftRecursionRobert/validator.json b/validator/tests/pb/HiddenLeftRecursionRobert/validator.json new file mode 100644 index 0000000..f36edfb --- /dev/null +++ b/validator/tests/pb/HiddenLeftRecursionRobert/validator.json @@ -0,0 +1,96 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "hidden" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "hidden", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/HiddenLeftRecursionRobert/validator.txt b/validator/tests/pb/HiddenLeftRecursionRobert/validator.txt new file mode 100644 index 0000000..534c1be --- /dev/null +++ b/validator/tests/pb/HiddenLeftRecursionRobert/validator.txt @@ -0,0 +1,2 @@ +(@hidden|[*,Telephone:=="0123456789"]) +#hidden=@main \ No newline at end of file diff --git a/validator/tests/pb/HiddenLeftRecursionRobert/validator.xml b/validator/tests/pb/HiddenLeftRecursionRobert/validator.xml new file mode 100644 index 0000000..f62291e --- /dev/null +++ b/validator/tests/pb/HiddenLeftRecursionRobert/validator.xml @@ -0,0 +1,94 @@ + + + + + ( + + + + + @ + + hidden + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + + + + + + # + + hidden + + = + + + + + @ + + main + + + + \ No newline at end of file diff --git a/validator/tests/pb/InSetPersonDavid/invalid.main.Person.desc.pb b/validator/tests/pb/InSetPersonDavid/invalid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/InSetPersonDavid/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/InSetPersonDavid/validator.json b/validator/tests/pb/InSetPersonDavid/validator.json new file mode 100644 index 0000000..949e35b --- /dev/null +++ b/validator/tests/pb/InSetPersonDavid/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "contains", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "List": { + "Type": 209, + "OpenCurly": { + "Value": "{" + }, + "Elems": [ + { + "Terminal": { + "Literal": "\"The\"", + "StringValue": "The" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Robert\"", + "StringValue": "Robert" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Smith\"", + "StringValue": "Smith" + } + } + ], + "CloseCurly": { + "Value": "}" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/InSetPersonDavid/validator.txt b/validator/tests/pb/InSetPersonDavid/validator.txt new file mode 100644 index 0000000..5d9f6f3 --- /dev/null +++ b/validator/tests/pb/InSetPersonDavid/validator.txt @@ -0,0 +1 @@ +.Name:->contains($string,[]string{"The","Robert","Smith"}) \ No newline at end of file diff --git a/validator/tests/pb/InSetPersonDavid/validator.xml b/validator/tests/pb/InSetPersonDavid/validator.xml new file mode 100644 index 0000000..48591ef --- /dev/null +++ b/validator/tests/pb/InSetPersonDavid/validator.xml @@ -0,0 +1,90 @@ + + + + + . + + + + + + Name + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 109 + + + + + + , + + + 209 + + { + + + + "The" + The + + + + + + , + + + "Robert" + Robert + + + + + + , + + + "Smith" + Smith + + + + + } + + + + + ) + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/InSetPersonRobert/valid.main.Person.desc.pb b/validator/tests/pb/InSetPersonRobert/valid.main.Person.desc.pb new file mode 100644 index 0000000..0894177 --- /dev/null +++ b/validator/tests/pb/InSetPersonRobert/valid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +Robert TheStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/InSetPersonRobert/validator.json b/validator/tests/pb/InSetPersonRobert/validator.json new file mode 100644 index 0000000..949e35b --- /dev/null +++ b/validator/tests/pb/InSetPersonRobert/validator.json @@ -0,0 +1,89 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "contains", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "List": { + "Type": 209, + "OpenCurly": { + "Value": "{" + }, + "Elems": [ + { + "Terminal": { + "Literal": "\"The\"", + "StringValue": "The" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Robert\"", + "StringValue": "Robert" + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"Smith\"", + "StringValue": "Smith" + } + } + ], + "CloseCurly": { + "Value": "}" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/InSetPersonRobert/validator.txt b/validator/tests/pb/InSetPersonRobert/validator.txt new file mode 100644 index 0000000..5d9f6f3 --- /dev/null +++ b/validator/tests/pb/InSetPersonRobert/validator.txt @@ -0,0 +1 @@ +.Name:->contains($string,[]string{"The","Robert","Smith"}) \ No newline at end of file diff --git a/validator/tests/pb/InSetPersonRobert/validator.xml b/validator/tests/pb/InSetPersonRobert/validator.xml new file mode 100644 index 0000000..48591ef --- /dev/null +++ b/validator/tests/pb/InSetPersonRobert/validator.xml @@ -0,0 +1,90 @@ + + + + + . + + + + + + Name + + + + + : + + + + + + -> + + + contains + + ( + + + + + + + 109 + + + + + + , + + + 209 + + { + + + + "The" + The + + + + + + , + + + "Robert" + Robert + + + + + + , + + + "Smith" + Smith + + + + + } + + + + + ) + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/KnotKnotElbow/valid.main.Knot.desc.pb b/validator/tests/pb/KnotKnotElbow/valid.main.Knot.desc.pb new file mode 100644 index 0000000..649e601 --- /dev/null +++ b/validator/tests/pb/KnotKnotElbow/valid.main.Knot.desc.pb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/pb/KnotKnotElbow/validator.json b/validator/tests/pb/KnotKnotElbow/validator.json new file mode 100644 index 0000000..c0099b7 --- /dev/null +++ b/validator/tests/pb/KnotKnotElbow/validator.json @@ -0,0 +1,59 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/KnotKnotElbow/validator.txt b/validator/tests/pb/KnotKnotElbow/validator.txt new file mode 100644 index 0000000..d86366c --- /dev/null +++ b/validator/tests/pb/KnotKnotElbow/validator.txt @@ -0,0 +1 @@ +_:_:Elbow:==true \ No newline at end of file diff --git a/validator/tests/pb/KnotKnotElbow/validator.xml b/validator/tests/pb/KnotKnotElbow/validator.xml new file mode 100644 index 0000000..2190dd3 --- /dev/null +++ b/validator/tests/pb/KnotKnotElbow/validator.xml @@ -0,0 +1,61 @@ + + + + + + + _ + + + + + : + + + + + + + _ + + + + + : + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/LatentSimplificationFalse/invalid.main.TypewriterPrison.desc.pb b/validator/tests/pb/LatentSimplificationFalse/invalid.main.TypewriterPrison.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..032ba77c42a0fd41219a05db22a73349834e2b08 GIT binary patch literal 12 Tcmb2*5@3>GaAHjKVoU@82YLaY literal 0 HcmV?d00001 diff --git a/validator/tests/pb/LatentSimplificationFalse/validator.json b/validator/tests/pb/LatentSimplificationFalse/validator.json new file mode 100644 index 0000000..7840101 --- /dev/null +++ b/validator/tests/pb/LatentSimplificationFalse/validator.json @@ -0,0 +1,727 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003c=" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "DaisySled" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/LatentSimplificationFalse/validator.txt b/validator/tests/pb/LatentSimplificationFalse/validator.txt new file mode 100644 index 0000000..e914da9 --- /dev/null +++ b/validator/tests/pb/LatentSimplificationFalse/validator.txt @@ -0,0 +1 @@ +((((.PocketRoses:.MenuPaperclip:._:*="a"|.PocketRoses:.BeetlePoker:._:*="a")|(.PocketRoses:.MenuPaperclip:._:*="b"|.PocketRoses:.BeetlePoker:._:*="b"))&(.PocketRoses:.MenuPaperclip:._:*="c"|.PocketRoses:.BeetlePoker:._:*="c"))&(.PocketRoses:.BadgeShopping:<=2&(.PocketRoses:.BadgeShopping:>=0&.PocketRoses:.DaisySled:>=1))) \ No newline at end of file diff --git a/validator/tests/pb/LatentSimplificationFalse/validator.xml b/validator/tests/pb/LatentSimplificationFalse/validator.xml new file mode 100644 index 0000000..b6bfd25 --- /dev/null +++ b/validator/tests/pb/LatentSimplificationFalse/validator.xml @@ -0,0 +1,754 @@ + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + <= + + + + 2 + 2 + + + + + + + + + + + + + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + >= + + + + 0 + 0 + + + + + + + + + + + + + + + + + & + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + DaisySled + + + + + : + + + + + + + >= + + + + 1 + 1 + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/LatentSimplificationTrue/valid.main.TypewriterPrison.desc.pb b/validator/tests/pb/LatentSimplificationTrue/valid.main.TypewriterPrison.desc.pb new file mode 100644 index 0000000..8765749 --- /dev/null +++ b/validator/tests/pb/LatentSimplificationTrue/valid.main.TypewriterPrison.desc.pb @@ -0,0 +1,2 @@ + +BbJc \ No newline at end of file diff --git a/validator/tests/pb/LatentSimplificationTrue/validator.json b/validator/tests/pb/LatentSimplificationTrue/validator.json new file mode 100644 index 0000000..7840101 --- /dev/null +++ b/validator/tests/pb/LatentSimplificationTrue/validator.json @@ -0,0 +1,727 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BeetlePoker" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003c=" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BadgeShopping" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "DaisySled" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "\u003e=" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/LatentSimplificationTrue/validator.txt b/validator/tests/pb/LatentSimplificationTrue/validator.txt new file mode 100644 index 0000000..e914da9 --- /dev/null +++ b/validator/tests/pb/LatentSimplificationTrue/validator.txt @@ -0,0 +1 @@ +((((.PocketRoses:.MenuPaperclip:._:*="a"|.PocketRoses:.BeetlePoker:._:*="a")|(.PocketRoses:.MenuPaperclip:._:*="b"|.PocketRoses:.BeetlePoker:._:*="b"))&(.PocketRoses:.MenuPaperclip:._:*="c"|.PocketRoses:.BeetlePoker:._:*="c"))&(.PocketRoses:.BadgeShopping:<=2&(.PocketRoses:.BadgeShopping:>=0&.PocketRoses:.DaisySled:>=1))) \ No newline at end of file diff --git a/validator/tests/pb/LatentSimplificationTrue/validator.xml b/validator/tests/pb/LatentSimplificationTrue/validator.xml new file mode 100644 index 0000000..b6bfd25 --- /dev/null +++ b/validator/tests/pb/LatentSimplificationTrue/validator.xml @@ -0,0 +1,754 @@ + + + + + ( + + + + + ( + + + + + ( + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + + + + + + + + + + + ) + + + + + | + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "b" + b + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + MenuPaperclip + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + | + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BeetlePoker + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + + *= + + + + "c" + c + + + + + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + <= + + + + 2 + 2 + + + + + + + + + + + + + + + + + & + + + + + ( + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + BadgeShopping + + + + + : + + + + + + + >= + + + + 0 + 0 + + + + + + + + + + + + + + + + + & + + + + + . + + + + + + PocketRoses + + + + + : + + + + + . + + + + + + DaisySled + + + + + : + + + + + + + >= + + + + 1 + 1 + + + + + + + + + + + + + + + + + ) + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/LeftRecursionDavid/valid.main.Person.desc.pb b/validator/tests/pb/LeftRecursionDavid/valid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/LeftRecursionDavid/valid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/LeftRecursionDavid/validator.json b/validator/tests/pb/LeftRecursionDavid/validator.json new file mode 100644 index 0000000..33d5b61 --- /dev/null +++ b/validator/tests/pb/LeftRecursionDavid/validator.json @@ -0,0 +1,72 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/LeftRecursionDavid/validator.txt b/validator/tests/pb/LeftRecursionDavid/validator.txt new file mode 100644 index 0000000..d76d7d4 --- /dev/null +++ b/validator/tests/pb/LeftRecursionDavid/validator.txt @@ -0,0 +1 @@ +(@main|[*,Telephone:=="0123456789"]) \ No newline at end of file diff --git a/validator/tests/pb/LeftRecursionDavid/validator.xml b/validator/tests/pb/LeftRecursionDavid/validator.xml new file mode 100644 index 0000000..ba1fb1e --- /dev/null +++ b/validator/tests/pb/LeftRecursionDavid/validator.xml @@ -0,0 +1,74 @@ + + + + + ( + + + + + @ + + main + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/LeftRecursionRobert/invalid.main.Person.desc.pb b/validator/tests/pb/LeftRecursionRobert/invalid.main.Person.desc.pb new file mode 100644 index 0000000..0894177 --- /dev/null +++ b/validator/tests/pb/LeftRecursionRobert/invalid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +Robert TheStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/LeftRecursionRobert/validator.json b/validator/tests/pb/LeftRecursionRobert/validator.json new file mode 100644 index 0000000..33d5b61 --- /dev/null +++ b/validator/tests/pb/LeftRecursionRobert/validator.json @@ -0,0 +1,72 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/LeftRecursionRobert/validator.txt b/validator/tests/pb/LeftRecursionRobert/validator.txt new file mode 100644 index 0000000..d76d7d4 --- /dev/null +++ b/validator/tests/pb/LeftRecursionRobert/validator.txt @@ -0,0 +1 @@ +(@main|[*,Telephone:=="0123456789"]) \ No newline at end of file diff --git a/validator/tests/pb/LeftRecursionRobert/validator.xml b/validator/tests/pb/LeftRecursionRobert/validator.xml new file mode 100644 index 0000000..ba1fb1e --- /dev/null +++ b/validator/tests/pb/LeftRecursionRobert/validator.xml @@ -0,0 +1,74 @@ + + + + + ( + + + + + @ + + main + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/LenNameJohn/invalid.main.Person.desc.pb b/validator/tests/pb/LenNameJohn/invalid.main.Person.desc.pb new file mode 100644 index 0000000..4463814 --- /dev/null +++ b/validator/tests/pb/LenNameJohn/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +John +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/LenNameJohn/validator.json b/validator/tests/pb/LenNameJohn/validator.json new file mode 100644 index 0000000..c70c6dd --- /dev/null +++ b/validator/tests/pb/LenNameJohn/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/LenNameJohn/validator.txt b/validator/tests/pb/LenNameJohn/validator.txt new file mode 100644 index 0000000..ca5eb5b --- /dev/null +++ b/validator/tests/pb/LenNameJohn/validator.txt @@ -0,0 +1 @@ +[*,Name:->eq(length($string),0),*] \ No newline at end of file diff --git a/validator/tests/pb/LenNameJohn/validator.xml b/validator/tests/pb/LenNameJohn/validator.xml new file mode 100644 index 0000000..87ff11c --- /dev/null +++ b/validator/tests/pb/LenNameJohn/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/LenNameNoname/invalid.main.Person.desc.pb b/validator/tests/pb/LenNameNoname/invalid.main.Person.desc.pb new file mode 100644 index 0000000..1aa3496 --- /dev/null +++ b/validator/tests/pb/LenNameNoname/invalid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +SomeStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/LenNameNoname/validator.json b/validator/tests/pb/LenNameNoname/validator.json new file mode 100644 index 0000000..c70c6dd --- /dev/null +++ b/validator/tests/pb/LenNameNoname/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/LenNameNoname/validator.txt b/validator/tests/pb/LenNameNoname/validator.txt new file mode 100644 index 0000000..ca5eb5b --- /dev/null +++ b/validator/tests/pb/LenNameNoname/validator.txt @@ -0,0 +1 @@ +[*,Name:->eq(length($string),0),*] \ No newline at end of file diff --git a/validator/tests/pb/LenNameNoname/validator.xml b/validator/tests/pb/LenNameNoname/validator.xml new file mode 100644 index 0000000..87ff11c --- /dev/null +++ b/validator/tests/pb/LenNameNoname/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/LenNameSmith/valid.main.Person.desc.pb b/validator/tests/pb/LenNameSmith/valid.main.Person.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..2ecf2a7293ae76e0b20bd820ebe46b39d8479846 GIT binary patch literal 30 icmd;L5aQ!t6ygfb&rJ<3DN0Q(k>WBiG%~la1R(%hWCoc4 literal 0 HcmV?d00001 diff --git a/validator/tests/pb/LenNameSmith/validator.json b/validator/tests/pb/LenNameSmith/validator.json new file mode 100644 index 0000000..c70c6dd --- /dev/null +++ b/validator/tests/pb/LenNameSmith/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "length", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "0", + "IntValue": 0 + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/LenNameSmith/validator.txt b/validator/tests/pb/LenNameSmith/validator.txt new file mode 100644 index 0000000..ca5eb5b --- /dev/null +++ b/validator/tests/pb/LenNameSmith/validator.txt @@ -0,0 +1 @@ +[*,Name:->eq(length($string),0),*] \ No newline at end of file diff --git a/validator/tests/pb/LenNameSmith/validator.xml b/validator/tests/pb/LenNameSmith/validator.xml new file mode 100644 index 0000000..87ff11c --- /dev/null +++ b/validator/tests/pb/LenNameSmith/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + eq + + ( + + + + length + + ( + + + + + + + 109 + + + + + ) + + + + + + , + + + 0 + 0 + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressMover/invalid.main.Person.desc.pb b/validator/tests/pb/ListIndexAddressMover/invalid.main.Person.desc.pb new file mode 100644 index 0000000..6c27ec6 --- /dev/null +++ b/validator/tests/pb/ListIndexAddressMover/invalid.main.Person.desc.pb @@ -0,0 +1,8 @@ + +Mover { TheStreet +SomeStreet +SomeStreet +SomeStreet +SomeStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressMover/validator.json b/validator/tests/pb/ListIndexAddressMover/validator.json new file mode 100644 index 0000000..6ecafe6 --- /dev/null +++ b/validator/tests/pb/ListIndexAddressMover/validator.json @@ -0,0 +1,172 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressMover/validator.txt b/validator/tests/pb/ListIndexAddressMover/validator.txt new file mode 100644 index 0000000..3dffdfc --- /dev/null +++ b/validator/tests/pb/ListIndexAddressMover/validator.txt @@ -0,0 +1 @@ +[*,Addresses[*,_:.Number:==2,_:.Number:==1],*] \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressMover/validator.xml b/validator/tests/pb/ListIndexAddressMover/validator.xml new file mode 100644 index 0000000..62d8a9d --- /dev/null +++ b/validator/tests/pb/ListIndexAddressMover/validator.xml @@ -0,0 +1,177 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + + + , + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressRoutine/invalid.main.Person.desc.pb b/validator/tests/pb/ListIndexAddressRoutine/invalid.main.Person.desc.pb new file mode 100644 index 0000000..b171897 --- /dev/null +++ b/validator/tests/pb/ListIndexAddressRoutine/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +Routine +SomeStreet +0124444444 \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressRoutine/validator.json b/validator/tests/pb/ListIndexAddressRoutine/validator.json new file mode 100644 index 0000000..6ecafe6 --- /dev/null +++ b/validator/tests/pb/ListIndexAddressRoutine/validator.json @@ -0,0 +1,172 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressRoutine/validator.txt b/validator/tests/pb/ListIndexAddressRoutine/validator.txt new file mode 100644 index 0000000..3dffdfc --- /dev/null +++ b/validator/tests/pb/ListIndexAddressRoutine/validator.txt @@ -0,0 +1 @@ +[*,Addresses[*,_:.Number:==2,_:.Number:==1],*] \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressRoutine/validator.xml b/validator/tests/pb/ListIndexAddressRoutine/validator.xml new file mode 100644 index 0000000..62d8a9d --- /dev/null +++ b/validator/tests/pb/ListIndexAddressRoutine/validator.xml @@ -0,0 +1,177 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + + + , + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressShaker/valid.main.Person.desc.pb b/validator/tests/pb/ListIndexAddressShaker/valid.main.Person.desc.pb new file mode 100644 index 0000000..ccbf272 --- /dev/null +++ b/validator/tests/pb/ListIndexAddressShaker/valid.main.Person.desc.pb @@ -0,0 +1,7 @@ + +Shaker7 +SomeStreet +SomeStreet +SomeStreet +SomeStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressShaker/validator.json b/validator/tests/pb/ListIndexAddressShaker/validator.json new file mode 100644 index 0000000..6ecafe6 --- /dev/null +++ b/validator/tests/pb/ListIndexAddressShaker/validator.json @@ -0,0 +1,172 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "2", + "IntValue": 2 + } + } + } + } + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressShaker/validator.txt b/validator/tests/pb/ListIndexAddressShaker/validator.txt new file mode 100644 index 0000000..3dffdfc --- /dev/null +++ b/validator/tests/pb/ListIndexAddressShaker/validator.txt @@ -0,0 +1 @@ +[*,Addresses[*,_:.Number:==2,_:.Number:==1],*] \ No newline at end of file diff --git a/validator/tests/pb/ListIndexAddressShaker/validator.xml b/validator/tests/pb/ListIndexAddressShaker/validator.xml new file mode 100644 index 0000000..62d8a9d --- /dev/null +++ b/validator/tests/pb/ListIndexAddressShaker/validator.xml @@ -0,0 +1,177 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 2 + 2 + + + + + + + + + + + + + + + , + + + + + + + _ + + + + + : + + + + + . + + + + + + Number + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesDavid/valid.main.Person.desc.pb b/validator/tests/pb/ListOfTelephonesDavid/valid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesDavid/valid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesDavid/validator.json b/validator/tests/pb/ListOfTelephonesDavid/validator.json new file mode 100644 index 0000000..477a1bb --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesDavid/validator.json @@ -0,0 +1,131 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "or", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesDavid/validator.txt b/validator/tests/pb/ListOfTelephonesDavid/validator.txt new file mode 100644 index 0000000..644337f --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesDavid/validator.txt @@ -0,0 +1 @@ +[*,Telephone:->or(eq($string,"0123456789"),eq($string,"0127897897")),*] \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesDavid/validator.xml b/validator/tests/pb/ListOfTelephonesDavid/validator.xml new file mode 100644 index 0000000..0194a78 --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesDavid/validator.xml @@ -0,0 +1,130 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + -> + + + or + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0123456789" + 0123456789 + + + + + ) + + + + + + , + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0127897897" + 0127897897 + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesRoutine/invalid.main.Person.desc.pb b/validator/tests/pb/ListOfTelephonesRoutine/invalid.main.Person.desc.pb new file mode 100644 index 0000000..b171897 --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesRoutine/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +Routine +SomeStreet +0124444444 \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesRoutine/validator.json b/validator/tests/pb/ListOfTelephonesRoutine/validator.json new file mode 100644 index 0000000..477a1bb --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesRoutine/validator.json @@ -0,0 +1,131 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "or", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesRoutine/validator.txt b/validator/tests/pb/ListOfTelephonesRoutine/validator.txt new file mode 100644 index 0000000..644337f --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesRoutine/validator.txt @@ -0,0 +1 @@ +[*,Telephone:->or(eq($string,"0123456789"),eq($string,"0127897897")),*] \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesRoutine/validator.xml b/validator/tests/pb/ListOfTelephonesRoutine/validator.xml new file mode 100644 index 0000000..0194a78 --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesRoutine/validator.xml @@ -0,0 +1,130 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + -> + + + or + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0123456789" + 0123456789 + + + + + ) + + + + + + , + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0127897897" + 0127897897 + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesShaker/valid.main.Person.desc.pb b/validator/tests/pb/ListOfTelephonesShaker/valid.main.Person.desc.pb new file mode 100644 index 0000000..ccbf272 --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesShaker/valid.main.Person.desc.pb @@ -0,0 +1,7 @@ + +Shaker7 +SomeStreet +SomeStreet +SomeStreet +SomeStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesShaker/validator.json b/validator/tests/pb/ListOfTelephonesShaker/validator.json new file mode 100644 index 0000000..477a1bb --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesShaker/validator.json @@ -0,0 +1,131 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "or", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + }, + { + "Comma": { + "Value": "," + }, + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesShaker/validator.txt b/validator/tests/pb/ListOfTelephonesShaker/validator.txt new file mode 100644 index 0000000..644337f --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesShaker/validator.txt @@ -0,0 +1 @@ +[*,Telephone:->or(eq($string,"0123456789"),eq($string,"0127897897")),*] \ No newline at end of file diff --git a/validator/tests/pb/ListOfTelephonesShaker/validator.xml b/validator/tests/pb/ListOfTelephonesShaker/validator.xml new file mode 100644 index 0000000..0194a78 --- /dev/null +++ b/validator/tests/pb/ListOfTelephonesShaker/validator.xml @@ -0,0 +1,130 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Telephone + + + + + : + + + + + + -> + + + or + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0123456789" + 0123456789 + + + + + ) + + + + + + , + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "0127897897" + 0127897897 + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameDavid/invalid.main.Person.desc.pb b/validator/tests/pb/NaiveNotNameDavid/invalid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/NaiveNotNameDavid/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameDavid/validator.json b/validator/tests/pb/NaiveNotNameDavid/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/pb/NaiveNotNameDavid/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameDavid/validator.txt b/validator/tests/pb/NaiveNotNameDavid/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/pb/NaiveNotNameDavid/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameDavid/validator.xml b/validator/tests/pb/NaiveNotNameDavid/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/pb/NaiveNotNameDavid/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameNoname/invalid.main.Person.desc.pb b/validator/tests/pb/NaiveNotNameNoname/invalid.main.Person.desc.pb new file mode 100644 index 0000000..1aa3496 --- /dev/null +++ b/validator/tests/pb/NaiveNotNameNoname/invalid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +SomeStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameNoname/validator.json b/validator/tests/pb/NaiveNotNameNoname/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/pb/NaiveNotNameNoname/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameNoname/validator.txt b/validator/tests/pb/NaiveNotNameNoname/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/pb/NaiveNotNameNoname/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameNoname/validator.xml b/validator/tests/pb/NaiveNotNameNoname/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/pb/NaiveNotNameNoname/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameRobert/valid.main.Person.desc.pb b/validator/tests/pb/NaiveNotNameRobert/valid.main.Person.desc.pb new file mode 100644 index 0000000..0894177 --- /dev/null +++ b/validator/tests/pb/NaiveNotNameRobert/valid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +Robert TheStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameRobert/validator.json b/validator/tests/pb/NaiveNotNameRobert/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/pb/NaiveNotNameRobert/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameRobert/validator.txt b/validator/tests/pb/NaiveNotNameRobert/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/pb/NaiveNotNameRobert/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameRobert/validator.xml b/validator/tests/pb/NaiveNotNameRobert/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/pb/NaiveNotNameRobert/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameSmith/valid.main.Person.desc.pb b/validator/tests/pb/NaiveNotNameSmith/valid.main.Person.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..2ecf2a7293ae76e0b20bd820ebe46b39d8479846 GIT binary patch literal 30 icmd;L5aQ!t6ygfb&rJ<3DN0Q(k>WBiG%~la1R(%hWCoc4 literal 0 HcmV?d00001 diff --git a/validator/tests/pb/NaiveNotNameSmith/validator.json b/validator/tests/pb/NaiveNotNameSmith/validator.json new file mode 100644 index 0000000..c0f67fa --- /dev/null +++ b/validator/tests/pb/NaiveNotNameSmith/validator.json @@ -0,0 +1,98 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameSmith/validator.txt b/validator/tests/pb/NaiveNotNameSmith/validator.txt new file mode 100644 index 0000000..d4f8dee --- /dev/null +++ b/validator/tests/pb/NaiveNotNameSmith/validator.txt @@ -0,0 +1 @@ +[*,Name:->not(eq($string,"David")),*] \ No newline at end of file diff --git a/validator/tests/pb/NaiveNotNameSmith/validator.xml b/validator/tests/pb/NaiveNotNameSmith/validator.xml new file mode 100644 index 0000000..d483196 --- /dev/null +++ b/validator/tests/pb/NaiveNotNameSmith/validator.xml @@ -0,0 +1,97 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/NextAPocketRoses/invalid.main.PocketRoses.desc.pb b/validator/tests/pb/NextAPocketRoses/invalid.main.PocketRoses.desc.pb new file mode 100644 index 0000000..91a35ff --- /dev/null +++ b/validator/tests/pb/NextAPocketRoses/invalid.main.PocketRoses.desc.pb @@ -0,0 +1 @@ +BaBbBc \ No newline at end of file diff --git a/validator/tests/pb/NextAPocketRoses/validator.json b/validator/tests/pb/NextAPocketRoses/validator.json new file mode 100644 index 0000000..49beb20 --- /dev/null +++ b/validator/tests/pb/NextAPocketRoses/validator.json @@ -0,0 +1,118 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 1 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 0 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "IntValue": 2 + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"c\"", + "StringValue": "c" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/NextAPocketRoses/validator.txt b/validator/tests/pb/NextAPocketRoses/validator.txt new file mode 100644 index 0000000..577118a --- /dev/null +++ b/validator/tests/pb/NextAPocketRoses/validator.txt @@ -0,0 +1 @@ +MenuPaperclip[1:=="a",0:=="b",2:=="c"] \ No newline at end of file diff --git a/validator/tests/pb/NextAPocketRoses/validator.xml b/validator/tests/pb/NextAPocketRoses/validator.xml new file mode 100644 index 0000000..6ad24e5 --- /dev/null +++ b/validator/tests/pb/NextAPocketRoses/validator.xml @@ -0,0 +1,125 @@ + + + + + + MenuPaperclip + + + + + + + [ + + + + + + 1 + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + , + + + + + + + + 0 + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + , + + + + + + 2 + + + + + : + + + + + + + == + + + + "c" + c + + + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/NilNameJohn/invalid.main.Person.desc.pb b/validator/tests/pb/NilNameJohn/invalid.main.Person.desc.pb new file mode 100644 index 0000000..4463814 --- /dev/null +++ b/validator/tests/pb/NilNameJohn/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +John +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/NilNameJohn/validator.json b/validator/tests/pb/NilNameJohn/validator.json new file mode 100644 index 0000000..2779c47 --- /dev/null +++ b/validator/tests/pb/NilNameJohn/validator.json @@ -0,0 +1,41 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/NilNameJohn/validator.txt b/validator/tests/pb/NilNameJohn/validator.txt new file mode 100644 index 0000000..0e09869 --- /dev/null +++ b/validator/tests/pb/NilNameJohn/validator.txt @@ -0,0 +1 @@ +!(.Name:*) \ No newline at end of file diff --git a/validator/tests/pb/NilNameJohn/validator.xml b/validator/tests/pb/NilNameJohn/validator.xml new file mode 100644 index 0000000..75f6b17 --- /dev/null +++ b/validator/tests/pb/NilNameJohn/validator.xml @@ -0,0 +1,42 @@ + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/NilNameNoname/valid.main.Person.desc.pb b/validator/tests/pb/NilNameNoname/valid.main.Person.desc.pb new file mode 100644 index 0000000..1aa3496 --- /dev/null +++ b/validator/tests/pb/NilNameNoname/valid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +SomeStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/NilNameNoname/validator.json b/validator/tests/pb/NilNameNoname/validator.json new file mode 100644 index 0000000..2779c47 --- /dev/null +++ b/validator/tests/pb/NilNameNoname/validator.json @@ -0,0 +1,41 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/NilNameNoname/validator.txt b/validator/tests/pb/NilNameNoname/validator.txt new file mode 100644 index 0000000..0e09869 --- /dev/null +++ b/validator/tests/pb/NilNameNoname/validator.txt @@ -0,0 +1 @@ +!(.Name:*) \ No newline at end of file diff --git a/validator/tests/pb/NilNameNoname/validator.xml b/validator/tests/pb/NilNameNoname/validator.xml new file mode 100644 index 0000000..75f6b17 --- /dev/null +++ b/validator/tests/pb/NilNameNoname/validator.xml @@ -0,0 +1,42 @@ + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/NilNameSmith/invalid.main.Person.desc.pb b/validator/tests/pb/NilNameSmith/invalid.main.Person.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..2ecf2a7293ae76e0b20bd820ebe46b39d8479846 GIT binary patch literal 30 icmd;L5aQ!t6ygfb&rJ<3DN0Q(k>WBiG%~la1R(%hWCoc4 literal 0 HcmV?d00001 diff --git a/validator/tests/pb/NilNameSmith/validator.json b/validator/tests/pb/NilNameSmith/validator.json new file mode 100644 index 0000000..2779c47 --- /dev/null +++ b/validator/tests/pb/NilNameSmith/validator.json @@ -0,0 +1,41 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/NilNameSmith/validator.txt b/validator/tests/pb/NilNameSmith/validator.txt new file mode 100644 index 0000000..0e09869 --- /dev/null +++ b/validator/tests/pb/NilNameSmith/validator.txt @@ -0,0 +1 @@ +!(.Name:*) \ No newline at end of file diff --git a/validator/tests/pb/NilNameSmith/validator.xml b/validator/tests/pb/NilNameSmith/validator.xml new file mode 100644 index 0000000..75f6b17 --- /dev/null +++ b/validator/tests/pb/NilNameSmith/validator.xml @@ -0,0 +1,42 @@ + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressDavidPerson/valid.main.Person.desc.pb b/validator/tests/pb/OptionalAddressDavidPerson/valid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/OptionalAddressDavidPerson/valid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressDavidPerson/validator.json b/validator/tests/pb/OptionalAddressDavidPerson/validator.json new file mode 100644 index 0000000..fd3e097 --- /dev/null +++ b/validator/tests/pb/OptionalAddressDavidPerson/validator.json @@ -0,0 +1,178 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressDavidPerson/validator.txt b/validator/tests/pb/OptionalAddressDavidPerson/validator.txt new file mode 100644 index 0000000..551725e --- /dev/null +++ b/validator/tests/pb/OptionalAddressDavidPerson/validator.txt @@ -0,0 +1 @@ +.Addresses[(_[Number:*,Street:*])?,_[Number:==456,Street:*]] \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressDavidPerson/validator.xml b/validator/tests/pb/OptionalAddressDavidPerson/validator.xml new file mode 100644 index 0000000..99d93ad --- /dev/null +++ b/validator/tests/pb/OptionalAddressDavidPerson/validator.xml @@ -0,0 +1,184 @@ + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + ( + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + * + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ) + + + ? + + + + + , + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ] + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressMoverPerson/invalid.main.Person.desc.pb b/validator/tests/pb/OptionalAddressMoverPerson/invalid.main.Person.desc.pb new file mode 100644 index 0000000..6c27ec6 --- /dev/null +++ b/validator/tests/pb/OptionalAddressMoverPerson/invalid.main.Person.desc.pb @@ -0,0 +1,8 @@ + +Mover { TheStreet +SomeStreet +SomeStreet +SomeStreet +SomeStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressMoverPerson/validator.json b/validator/tests/pb/OptionalAddressMoverPerson/validator.json new file mode 100644 index 0000000..fd3e097 --- /dev/null +++ b/validator/tests/pb/OptionalAddressMoverPerson/validator.json @@ -0,0 +1,178 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressMoverPerson/validator.txt b/validator/tests/pb/OptionalAddressMoverPerson/validator.txt new file mode 100644 index 0000000..551725e --- /dev/null +++ b/validator/tests/pb/OptionalAddressMoverPerson/validator.txt @@ -0,0 +1 @@ +.Addresses[(_[Number:*,Street:*])?,_[Number:==456,Street:*]] \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressMoverPerson/validator.xml b/validator/tests/pb/OptionalAddressMoverPerson/validator.xml new file mode 100644 index 0000000..99d93ad --- /dev/null +++ b/validator/tests/pb/OptionalAddressMoverPerson/validator.xml @@ -0,0 +1,184 @@ + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + ( + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + * + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ) + + + ? + + + + + , + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ] + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressRobertPerson/valid.main.Person.desc.pb b/validator/tests/pb/OptionalAddressRobertPerson/valid.main.Person.desc.pb new file mode 100644 index 0000000..0894177 --- /dev/null +++ b/validator/tests/pb/OptionalAddressRobertPerson/valid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +Robert TheStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressRobertPerson/validator.json b/validator/tests/pb/OptionalAddressRobertPerson/validator.json new file mode 100644 index 0000000..fd3e097 --- /dev/null +++ b/validator/tests/pb/OptionalAddressRobertPerson/validator.json @@ -0,0 +1,178 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressRobertPerson/validator.txt b/validator/tests/pb/OptionalAddressRobertPerson/validator.txt new file mode 100644 index 0000000..551725e --- /dev/null +++ b/validator/tests/pb/OptionalAddressRobertPerson/validator.txt @@ -0,0 +1 @@ +.Addresses[(_[Number:*,Street:*])?,_[Number:==456,Street:*]] \ No newline at end of file diff --git a/validator/tests/pb/OptionalAddressRobertPerson/validator.xml b/validator/tests/pb/OptionalAddressRobertPerson/validator.xml new file mode 100644 index 0000000..99d93ad --- /dev/null +++ b/validator/tests/pb/OptionalAddressRobertPerson/validator.xml @@ -0,0 +1,184 @@ + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + ( + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + * + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ) + + + ? + + + + + , + + + + + + + _ + + + + + + + [ + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + Street + + + + + : + + + + + * + + + + + + + ] + + + + + + + ] + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameJohnPerson/invalid.main.Person.desc.pb b/validator/tests/pb/OptionalNameJohnPerson/invalid.main.Person.desc.pb new file mode 100644 index 0000000..4463814 --- /dev/null +++ b/validator/tests/pb/OptionalNameJohnPerson/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +John +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameJohnPerson/validator.json b/validator/tests/pb/OptionalNameJohnPerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/pb/OptionalNameJohnPerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameJohnPerson/validator.txt b/validator/tests/pb/OptionalNameJohnPerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/pb/OptionalNameJohnPerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameJohnPerson/validator.xml b/validator/tests/pb/OptionalNameJohnPerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/pb/OptionalNameJohnPerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameNonamePerson/valid.main.Person.desc.pb b/validator/tests/pb/OptionalNameNonamePerson/valid.main.Person.desc.pb new file mode 100644 index 0000000..1aa3496 --- /dev/null +++ b/validator/tests/pb/OptionalNameNonamePerson/valid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +SomeStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameNonamePerson/validator.json b/validator/tests/pb/OptionalNameNonamePerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/pb/OptionalNameNonamePerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameNonamePerson/validator.txt b/validator/tests/pb/OptionalNameNonamePerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/pb/OptionalNameNonamePerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameNonamePerson/validator.xml b/validator/tests/pb/OptionalNameNonamePerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/pb/OptionalNameNonamePerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameRoutinePerson/invalid.main.Person.desc.pb b/validator/tests/pb/OptionalNameRoutinePerson/invalid.main.Person.desc.pb new file mode 100644 index 0000000..b171897 --- /dev/null +++ b/validator/tests/pb/OptionalNameRoutinePerson/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +Routine +SomeStreet +0124444444 \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameRoutinePerson/validator.json b/validator/tests/pb/OptionalNameRoutinePerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/pb/OptionalNameRoutinePerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameRoutinePerson/validator.txt b/validator/tests/pb/OptionalNameRoutinePerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/pb/OptionalNameRoutinePerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameRoutinePerson/validator.xml b/validator/tests/pb/OptionalNameRoutinePerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/pb/OptionalNameRoutinePerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameShakerPerson/valid.main.Person.desc.pb b/validator/tests/pb/OptionalNameShakerPerson/valid.main.Person.desc.pb new file mode 100644 index 0000000..ccbf272 --- /dev/null +++ b/validator/tests/pb/OptionalNameShakerPerson/valid.main.Person.desc.pb @@ -0,0 +1,7 @@ + +Shaker7 +SomeStreet +SomeStreet +SomeStreet +SomeStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameShakerPerson/validator.json b/validator/tests/pb/OptionalNameShakerPerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/pb/OptionalNameShakerPerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameShakerPerson/validator.txt b/validator/tests/pb/OptionalNameShakerPerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/pb/OptionalNameShakerPerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameShakerPerson/validator.xml b/validator/tests/pb/OptionalNameShakerPerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/pb/OptionalNameShakerPerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameSmithPerson/valid.main.Person.desc.pb b/validator/tests/pb/OptionalNameSmithPerson/valid.main.Person.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..2ecf2a7293ae76e0b20bd820ebe46b39d8479846 GIT binary patch literal 30 icmd;L5aQ!t6ygfb&rJ<3DN0Q(k>WBiG%~la1R(%hWCoc4 literal 0 HcmV?d00001 diff --git a/validator/tests/pb/OptionalNameSmithPerson/validator.json b/validator/tests/pb/OptionalNameSmithPerson/validator.json new file mode 100644 index 0000000..de6670f --- /dev/null +++ b/validator/tests/pb/OptionalNameSmithPerson/validator.json @@ -0,0 +1,102 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0127897897\"", + "StringValue": "0127897897" + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameSmithPerson/validator.txt b/validator/tests/pb/OptionalNameSmithPerson/validator.txt new file mode 100644 index 0000000..31ecd50 --- /dev/null +++ b/validator/tests/pb/OptionalNameSmithPerson/validator.txt @@ -0,0 +1 @@ +[(Name:*)?,Addresses:*,Telephone:=="0127897897"] \ No newline at end of file diff --git a/validator/tests/pb/OptionalNameSmithPerson/validator.xml b/validator/tests/pb/OptionalNameSmithPerson/validator.xml new file mode 100644 index 0000000..6b00e8d --- /dev/null +++ b/validator/tests/pb/OptionalNameSmithPerson/validator.xml @@ -0,0 +1,106 @@ + + + + + [ + + + + + ( + + + + + + Name + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + , + + + + + + + + Addresses + + + + + : + + + + + * + + + + + + + , + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0127897897" + 0127897897 + + + + + + + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneDavid/valid.main.Person.desc.pb b/validator/tests/pb/OrNameTelephoneDavid/valid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneDavid/valid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneDavid/validator.json b/validator/tests/pb/OrNameTelephoneDavid/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneDavid/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneDavid/validator.txt b/validator/tests/pb/OrNameTelephoneDavid/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneDavid/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneDavid/validator.xml b/validator/tests/pb/OrNameTelephoneDavid/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneDavid/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneJohn/valid.main.Person.desc.pb b/validator/tests/pb/OrNameTelephoneJohn/valid.main.Person.desc.pb new file mode 100644 index 0000000..4463814 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneJohn/valid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +John +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneJohn/validator.json b/validator/tests/pb/OrNameTelephoneJohn/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneJohn/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneJohn/validator.txt b/validator/tests/pb/OrNameTelephoneJohn/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneJohn/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneJohn/validator.xml b/validator/tests/pb/OrNameTelephoneJohn/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneJohn/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneMover/valid.main.Person.desc.pb b/validator/tests/pb/OrNameTelephoneMover/valid.main.Person.desc.pb new file mode 100644 index 0000000..6c27ec6 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneMover/valid.main.Person.desc.pb @@ -0,0 +1,8 @@ + +Mover { TheStreet +SomeStreet +SomeStreet +SomeStreet +SomeStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneMover/validator.json b/validator/tests/pb/OrNameTelephoneMover/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneMover/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneMover/validator.txt b/validator/tests/pb/OrNameTelephoneMover/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneMover/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneMover/validator.xml b/validator/tests/pb/OrNameTelephoneMover/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneMover/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneSmith/invalid.main.Person.desc.pb b/validator/tests/pb/OrNameTelephoneSmith/invalid.main.Person.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..2ecf2a7293ae76e0b20bd820ebe46b39d8479846 GIT binary patch literal 30 icmd;L5aQ!t6ygfb&rJ<3DN0Q(k>WBiG%~la1R(%hWCoc4 literal 0 HcmV?d00001 diff --git a/validator/tests/pb/OrNameTelephoneSmith/validator.json b/validator/tests/pb/OrNameTelephoneSmith/validator.json new file mode 100644 index 0000000..b89ff49 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneSmith/validator.json @@ -0,0 +1,87 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Telephone" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"0123456789\"", + "StringValue": "0123456789" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneSmith/validator.txt b/validator/tests/pb/OrNameTelephoneSmith/validator.txt new file mode 100644 index 0000000..9ad5bf6 --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneSmith/validator.txt @@ -0,0 +1 @@ +(.Name:=="David"|.Telephone:=="0123456789") \ No newline at end of file diff --git a/validator/tests/pb/OrNameTelephoneSmith/validator.xml b/validator/tests/pb/OrNameTelephoneSmith/validator.xml new file mode 100644 index 0000000..7ff5d2a --- /dev/null +++ b/validator/tests/pb/OrNameTelephoneSmith/validator.xml @@ -0,0 +1,91 @@ + + + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + + + == + + + + "David" + David + + + + + + + + + + + + + | + + + + + . + + + + + + Telephone + + + + + : + + + + + + + == + + + + "0123456789" + 0123456789 + + + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonDavid/invalid.main.Person.desc.pb b/validator/tests/pb/ProperNotNamePersonDavid/invalid.main.Person.desc.pb new file mode 100644 index 0000000..41265d8 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonDavid/invalid.main.Person.desc.pb @@ -0,0 +1,4 @@ + +David { TheStreet +SomeStreet +0123456789 \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonDavid/validator.json b/validator/tests/pb/ProperNotNamePersonDavid/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonDavid/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonDavid/validator.txt b/validator/tests/pb/ProperNotNamePersonDavid/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonDavid/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonDavid/validator.xml b/validator/tests/pb/ProperNotNamePersonDavid/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonDavid/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonNoname/valid.main.Person.desc.pb b/validator/tests/pb/ProperNotNamePersonNoname/valid.main.Person.desc.pb new file mode 100644 index 0000000..1aa3496 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonNoname/valid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +SomeStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonNoname/validator.json b/validator/tests/pb/ProperNotNamePersonNoname/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonNoname/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonNoname/validator.txt b/validator/tests/pb/ProperNotNamePersonNoname/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonNoname/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonNoname/validator.xml b/validator/tests/pb/ProperNotNamePersonNoname/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonNoname/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonRobert/valid.main.Person.desc.pb b/validator/tests/pb/ProperNotNamePersonRobert/valid.main.Person.desc.pb new file mode 100644 index 0000000..0894177 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonRobert/valid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +Robert TheStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonRobert/validator.json b/validator/tests/pb/ProperNotNamePersonRobert/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonRobert/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonRobert/validator.txt b/validator/tests/pb/ProperNotNamePersonRobert/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonRobert/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonRobert/validator.xml b/validator/tests/pb/ProperNotNamePersonRobert/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonRobert/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonSmith/valid.main.Person.desc.pb b/validator/tests/pb/ProperNotNamePersonSmith/valid.main.Person.desc.pb new file mode 100644 index 0000000000000000000000000000000000000000..2ecf2a7293ae76e0b20bd820ebe46b39d8479846 GIT binary patch literal 30 icmd;L5aQ!t6ygfb&rJ<3DN0Q(k>WBiG%~la1R(%hWCoc4 literal 0 HcmV?d00001 diff --git a/validator/tests/pb/ProperNotNamePersonSmith/validator.json b/validator/tests/pb/ProperNotNamePersonSmith/validator.json new file mode 100644 index 0000000..706927f --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonSmith/validator.json @@ -0,0 +1,196 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "name" + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "nil" + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "PatternDecls": [ + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "name", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "not", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Function": { + "Name": "eq", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 109 + } + } + }, + { + "Comma": { + "Value": "," + }, + "Terminal": { + "Literal": "\"David\"", + "StringValue": "David" + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + }, + { + "Hash": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "#" + }, + "Name": "nil", + "Eq": { + "Value": "=" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + ] +} \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonSmith/validator.txt b/validator/tests/pb/ProperNotNamePersonSmith/validator.txt new file mode 100644 index 0000000..2e81699 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonSmith/validator.txt @@ -0,0 +1,3 @@ +(@name|@nil) +#name=[*,Name:->not(eq($string,"David")),*] +#nil=!(.Name:*) \ No newline at end of file diff --git a/validator/tests/pb/ProperNotNamePersonSmith/validator.xml b/validator/tests/pb/ProperNotNamePersonSmith/validator.xml new file mode 100644 index 0000000..13635c9 --- /dev/null +++ b/validator/tests/pb/ProperNotNamePersonSmith/validator.xml @@ -0,0 +1,190 @@ + + + + + ( + + + + + @ + + name + + + + | + + + + + @ + + nil + + + + ) + + + + + + + + + # + + name + + = + + + + + [ + + + + + * + + + + + , + + + + + + + + Name + + + + + : + + + + + + -> + + + not + + ( + + + + eq + + ( + + + + + + + 109 + + + + + + , + + + "David" + David + + + + + ) + + + + + ) + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + + + + # + + nil + + = + + + + + ! + + + ( + + + + + . + + + + + + Name + + + + + : + + + + + * + + + + + + + + + ) + + + + + \ No newline at end of file diff --git a/validator/tests/pb/PuddingMilkShakeNotAny1/invalid.main.PuddingMilkshake.desc.pb b/validator/tests/pb/PuddingMilkShakeNotAny1/invalid.main.PuddingMilkshake.desc.pb new file mode 100644 index 0000000..a00eb46 --- /dev/null +++ b/validator/tests/pb/PuddingMilkShakeNotAny1/invalid.main.PuddingMilkshake.desc.pb @@ -0,0 +1,3 @@ + + +ZB*isHOrIGyoLbdXZ9a4t4abCuoFvDpXvxgscJQYRGZ6uJYoqqST33HqlR5s30O61mPwPnXGrwM5AIRWwDQ1YDPZcr8iP56B7AFwemBq1MfsNojkOAPlkt58RuaNn7pTgV66TSpp \ No newline at end of file diff --git a/validator/tests/pb/PuddingMilkShakeNotAny1/validator.json b/validator/tests/pb/PuddingMilkShakeNotAny1/validator.json new file mode 100644 index 0000000..46bca96 --- /dev/null +++ b/validator/tests/pb/PuddingMilkShakeNotAny1/validator.json @@ -0,0 +1,621 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FinanceJudo" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SpyCarpenter" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.ddddddd~\"", + "StringValue": "mmm.ddddddd~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.ddddddd~\"", + "StringValue": "mmm.ddddddd~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/PuddingMilkShakeNotAny1/validator.txt b/validator/tests/pb/PuddingMilkShakeNotAny1/validator.txt new file mode 100644 index 0000000..79ffb2c --- /dev/null +++ b/validator/tests/pb/PuddingMilkShakeNotAny1/validator.txt @@ -0,0 +1,11 @@ +.FinanceJudo:.SaladWorry:.SpyCarpenter:((((.BridgePepper:!(._ == "aaaaaaaa@mm~") +& +.FountainTarget:!(._ == "aaaaaaaa@mm~")) +& +.BridgePepper:!(._ == "bbbbbbb@~")) +& +.FountainTarget:!(._ == "bbbbbbb@~")) +& +(.BridgePepper:._ == "mmm.ddddddd~" +| +.FountainTarget:._ == "mmm.ddddddd~")) \ No newline at end of file diff --git a/validator/tests/pb/PuddingMilkShakeNotAny1/validator.xml b/validator/tests/pb/PuddingMilkShakeNotAny1/validator.xml new file mode 100644 index 0000000..bc4c01c --- /dev/null +++ b/validator/tests/pb/PuddingMilkShakeNotAny1/validator.xml @@ -0,0 +1,592 @@ + + + + + . + + + + + + FinanceJudo + + + + + : + + + + + . + + + + + + SaladWorry + + + + + : + + + + + . + + + + + + SpyCarpenter + + + + + : + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.ddddddd~" + mmm.ddddddd~ + + + + + + + + + + + + + + + + + + + + | + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.ddddddd~" + mmm.ddddddd~ + + + + + + + + + + + + + + + + + + ) + + + + + + ) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/PuddingMilkShakeNotAny2/invalid.main.PuddingMilkshake.desc.pb b/validator/tests/pb/PuddingMilkShakeNotAny2/invalid.main.PuddingMilkshake.desc.pb new file mode 100644 index 0000000..a00eb46 --- /dev/null +++ b/validator/tests/pb/PuddingMilkShakeNotAny2/invalid.main.PuddingMilkshake.desc.pb @@ -0,0 +1,3 @@ + + +ZB*isHOrIGyoLbdXZ9a4t4abCuoFvDpXvxgscJQYRGZ6uJYoqqST33HqlR5s30O61mPwPnXGrwM5AIRWwDQ1YDPZcr8iP56B7AFwemBq1MfsNojkOAPlkt58RuaNn7pTgV66TSpp \ No newline at end of file diff --git a/validator/tests/pb/PuddingMilkShakeNotAny2/validator.json b/validator/tests/pb/PuddingMilkShakeNotAny2/validator.json new file mode 100644 index 0000000..0f24c6f --- /dev/null +++ b/validator/tests/pb/PuddingMilkShakeNotAny2/validator.json @@ -0,0 +1,621 @@ +{ + "TopPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FinanceJudo" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SaladWorry" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SpyCarpenter" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "And": { + "OpenParen": { + "Before": {}, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"aaaaaaaa@mm~\"", + "StringValue": "aaaaaaaa@mm~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"bbbbbbb@~\"", + "StringValue": "bbbbbbb@~" + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "Ampersand": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "\u0026" + }, + "RightPattern": { + "Or": { + "OpenParen": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Before": {}, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "BridgePepper" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~\"", + "StringValue": "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "Pipe": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "|" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Before": { + "Space": [ + "\n" + ] + }, + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "FountainTarget" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Before": { + "Space": [ + " " + ] + }, + "Value": "==" + }, + "Expr": { + "Terminal": { + "Before": { + "Space": [ + " " + ] + }, + "Literal": "\"mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~\"", + "StringValue": "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + }, + "CloseParen": { + "Before": {}, + "Value": ")" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/PuddingMilkShakeNotAny2/validator.txt b/validator/tests/pb/PuddingMilkShakeNotAny2/validator.txt new file mode 100644 index 0000000..23e9e80 --- /dev/null +++ b/validator/tests/pb/PuddingMilkShakeNotAny2/validator.txt @@ -0,0 +1,11 @@ +.FinanceJudo:.SaladWorry:.SpyCarpenter:((((.BridgePepper:!(._ == "aaaaaaaa@mm~") +& +.FountainTarget:!(._ == "aaaaaaaa@mm~")) +& +.BridgePepper:!(._ == "bbbbbbb@~")) +& +.FountainTarget:!(._ == "bbbbbbb@~")) +& +(.BridgePepper:._ == "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" +| +.FountainTarget:._ == "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~")) \ No newline at end of file diff --git a/validator/tests/pb/PuddingMilkShakeNotAny2/validator.xml b/validator/tests/pb/PuddingMilkShakeNotAny2/validator.xml new file mode 100644 index 0000000..af1c45c --- /dev/null +++ b/validator/tests/pb/PuddingMilkShakeNotAny2/validator.xml @@ -0,0 +1,592 @@ + + + + + . + + + + + + FinanceJudo + + + + + : + + + + + . + + + + + + SaladWorry + + + + + : + + + + + . + + + + + + SpyCarpenter + + + + + : + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "aaaaaaaa@mm~" + aaaaaaaa@mm~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + ! + + + ( + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "bbbbbbb@~" + bbbbbbb@~ + + + + + + + + + + + + + ) + + + + + + + + + + ) + + + + + + + + & + + + + + + + + ( + + + + + + . + + + + + + BridgePepper + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~ + + + + + + + + + + + + + + + + + + + + | + + + + + + + + . + + + + + + FountainTarget + + + + + : + + + + + . + + + + + + + _ + + + + + + + + + + + + == + + + + + + + "mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~" + mmm.dddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasss~ + + + + + + + + + + + + + + + + + + ) + + + + + + ) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveElbowBightTurn/invalid.main.Knot.desc.pb b/validator/tests/pb/RecursiveElbowBightTurn/invalid.main.Knot.desc.pb new file mode 100644 index 0000000..dac67b4 --- /dev/null +++ b/validator/tests/pb/RecursiveElbowBightTurn/invalid.main.Knot.desc.pb @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveElbowBightTurn/validator.json b/validator/tests/pb/RecursiveElbowBightTurn/validator.json new file mode 100644 index 0000000..c510659 --- /dev/null +++ b/validator/tests/pb/RecursiveElbowBightTurn/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/RecursiveElbowBightTurn/validator.txt b/validator/tests/pb/RecursiveElbowBightTurn/validator.txt new file mode 100644 index 0000000..6577fcc --- /dev/null +++ b/validator/tests/pb/RecursiveElbowBightTurn/validator.txt @@ -0,0 +1 @@ +(_:@main|Elbow:==true) \ No newline at end of file diff --git a/validator/tests/pb/RecursiveElbowBightTurn/validator.xml b/validator/tests/pb/RecursiveElbowBightTurn/validator.xml new file mode 100644 index 0000000..a9b0079 --- /dev/null +++ b/validator/tests/pb/RecursiveElbowBightTurn/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveElbowKnotKnotElbow/valid.main.Knot.desc.pb b/validator/tests/pb/RecursiveElbowKnotKnotElbow/valid.main.Knot.desc.pb new file mode 100644 index 0000000..649e601 --- /dev/null +++ b/validator/tests/pb/RecursiveElbowKnotKnotElbow/valid.main.Knot.desc.pb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.json b/validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.json new file mode 100644 index 0000000..c510659 --- /dev/null +++ b/validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Elbow" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.txt b/validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.txt new file mode 100644 index 0000000..6577fcc --- /dev/null +++ b/validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.txt @@ -0,0 +1 @@ +(_:@main|Elbow:==true) \ No newline at end of file diff --git a/validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.xml b/validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.xml new file mode 100644 index 0000000..a9b0079 --- /dev/null +++ b/validator/tests/pb/RecursiveElbowKnotKnotElbow/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Elbow + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveIoUtil/valid.main.SrcTree.desc.pb b/validator/tests/pb/RecursiveIoUtil/valid.main.SrcTree.desc.pb new file mode 100644 index 0000000..a714ec8 --- /dev/null +++ b/validator/tests/pb/RecursiveIoUtil/valid.main.SrcTree.desc.pb @@ -0,0 +1,9 @@ + + io/ioutil +io +errors +sync +os +errors +io +runtime \ No newline at end of file diff --git a/validator/tests/pb/RecursiveIoUtil/validator.json b/validator/tests/pb/RecursiveIoUtil/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/pb/RecursiveIoUtil/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/RecursiveIoUtil/validator.txt b/validator/tests/pb/RecursiveIoUtil/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/pb/RecursiveIoUtil/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/pb/RecursiveIoUtil/validator.xml b/validator/tests/pb/RecursiveIoUtil/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/pb/RecursiveIoUtil/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/RecursivePath/valid.main.SrcTree.desc.pb b/validator/tests/pb/RecursivePath/valid.main.SrcTree.desc.pb new file mode 100644 index 0000000..7c395c6 --- /dev/null +++ b/validator/tests/pb/RecursivePath/valid.main.SrcTree.desc.pb @@ -0,0 +1,9 @@ + +path +errors2 +strings +errors +io +uncode + uncode/utf8 + unicode/utf8 \ No newline at end of file diff --git a/validator/tests/pb/RecursivePath/validator.json b/validator/tests/pb/RecursivePath/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/pb/RecursivePath/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/RecursivePath/validator.txt b/validator/tests/pb/RecursivePath/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/pb/RecursivePath/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/pb/RecursivePath/validator.xml b/validator/tests/pb/RecursivePath/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/pb/RecursivePath/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveRuntime/invalid.main.SrcTree.desc.pb b/validator/tests/pb/RecursiveRuntime/invalid.main.SrcTree.desc.pb new file mode 100644 index 0000000..b7d4aae --- /dev/null +++ b/validator/tests/pb/RecursiveRuntime/invalid.main.SrcTree.desc.pb @@ -0,0 +1,3 @@ + +runtime +unsafe \ No newline at end of file diff --git a/validator/tests/pb/RecursiveRuntime/validator.json b/validator/tests/pb/RecursiveRuntime/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/pb/RecursiveRuntime/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/RecursiveRuntime/validator.txt b/validator/tests/pb/RecursiveRuntime/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/pb/RecursiveRuntime/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/pb/RecursiveRuntime/validator.xml b/validator/tests/pb/RecursiveRuntime/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/pb/RecursiveRuntime/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveSyscall/invalid.main.SrcTree.desc.pb b/validator/tests/pb/RecursiveSyscall/invalid.main.SrcTree.desc.pb new file mode 100644 index 0000000..09b77f1 --- /dev/null +++ b/validator/tests/pb/RecursiveSyscall/invalid.main.SrcTree.desc.pb @@ -0,0 +1,8 @@ + +syscall +errors +runtime +sync + sync/atomic +unsafe +unsafe \ No newline at end of file diff --git a/validator/tests/pb/RecursiveSyscall/validator.json b/validator/tests/pb/RecursiveSyscall/validator.json new file mode 100644 index 0000000..d7c1263 --- /dev/null +++ b/validator/tests/pb/RecursiveSyscall/validator.json @@ -0,0 +1,149 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PackageName" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"io\"", + "StringValue": "io" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Imports" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/RecursiveSyscall/validator.txt b/validator/tests/pb/RecursiveSyscall/validator.txt new file mode 100644 index 0000000..771fd06 --- /dev/null +++ b/validator/tests/pb/RecursiveSyscall/validator.txt @@ -0,0 +1 @@ +([PackageName:=="io",*]|[*,Imports[*,_:@main,*]]) \ No newline at end of file diff --git a/validator/tests/pb/RecursiveSyscall/validator.xml b/validator/tests/pb/RecursiveSyscall/validator.xml new file mode 100644 index 0000000..3e3848a --- /dev/null +++ b/validator/tests/pb/RecursiveSyscall/validator.xml @@ -0,0 +1,152 @@ + + + + + ( + + + + + [ + + + + + + PackageName + + + + + : + + + + + + + == + + + + "io" + io + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + | + + + + + [ + + + + + * + + + + + , + + + + + + Imports + + + + + + + [ + + + + + * + + + + + , + + + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + , + + + + + * + + + + + + + ] + + + + + + + ] + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveTurnBightTurn/valid.main.Knot.desc.pb b/validator/tests/pb/RecursiveTurnBightTurn/valid.main.Knot.desc.pb new file mode 100644 index 0000000..dac67b4 --- /dev/null +++ b/validator/tests/pb/RecursiveTurnBightTurn/valid.main.Knot.desc.pb @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveTurnBightTurn/validator.json b/validator/tests/pb/RecursiveTurnBightTurn/validator.json new file mode 100644 index 0000000..924218a --- /dev/null +++ b/validator/tests/pb/RecursiveTurnBightTurn/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Turn" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/RecursiveTurnBightTurn/validator.txt b/validator/tests/pb/RecursiveTurnBightTurn/validator.txt new file mode 100644 index 0000000..d77055d --- /dev/null +++ b/validator/tests/pb/RecursiveTurnBightTurn/validator.txt @@ -0,0 +1 @@ +(_:@main|Turn:==true) \ No newline at end of file diff --git a/validator/tests/pb/RecursiveTurnBightTurn/validator.xml b/validator/tests/pb/RecursiveTurnBightTurn/validator.xml new file mode 100644 index 0000000..7560d3e --- /dev/null +++ b/validator/tests/pb/RecursiveTurnBightTurn/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Turn + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveTurnKnotKnotElbow/invalid.main.Knot.desc.pb b/validator/tests/pb/RecursiveTurnKnotKnotElbow/invalid.main.Knot.desc.pb new file mode 100644 index 0000000..649e601 --- /dev/null +++ b/validator/tests/pb/RecursiveTurnKnotKnotElbow/invalid.main.Knot.desc.pb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.json b/validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.json new file mode 100644 index 0000000..924218a --- /dev/null +++ b/validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Turn" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "true", + "BoolValue": true + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.txt b/validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.txt new file mode 100644 index 0000000..d77055d --- /dev/null +++ b/validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.txt @@ -0,0 +1 @@ +(_:@main|Turn:==true) \ No newline at end of file diff --git a/validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.xml b/validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.xml new file mode 100644 index 0000000..7560d3e --- /dev/null +++ b/validator/tests/pb/RecursiveTurnKnotKnotElbow/validator.xml @@ -0,0 +1,68 @@ + + + + + ( + + + + + + + _ + + + + + : + + + + + @ + + main + + + + + + | + + + + + + Turn + + + + + : + + + + + + + == + + + + true + true + + + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/pb/TopTop1/valid.main.TopsyTurvy.desc.pb b/validator/tests/pb/TopTop1/valid.main.TopsyTurvy.desc.pb new file mode 100644 index 0000000..9553a94 --- /dev/null +++ b/validator/tests/pb/TopTop1/valid.main.TopsyTurvy.desc.pb @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/validator/tests/pb/TopTop1/validator.json b/validator/tests/pb/TopTop1/validator.json new file mode 100644 index 0000000..e08d86a --- /dev/null +++ b/validator/tests/pb/TopTop1/validator.json @@ -0,0 +1,45 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Top" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/TopTop1/validator.txt b/validator/tests/pb/TopTop1/validator.txt new file mode 100644 index 0000000..e80b1c3 --- /dev/null +++ b/validator/tests/pb/TopTop1/validator.txt @@ -0,0 +1 @@ +_:Top:==1 \ No newline at end of file diff --git a/validator/tests/pb/TopTop1/validator.xml b/validator/tests/pb/TopTop1/validator.xml new file mode 100644 index 0000000..cc55623 --- /dev/null +++ b/validator/tests/pb/TopTop1/validator.xml @@ -0,0 +1,47 @@ + + + + + + + _ + + + + + : + + + + + + Top + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/TurfTurf1/invalid.main.TopsyTurvy.desc.pb b/validator/tests/pb/TurfTurf1/invalid.main.TopsyTurvy.desc.pb new file mode 100644 index 0000000..4baf8e1 --- /dev/null +++ b/validator/tests/pb/TurfTurf1/invalid.main.TopsyTurvy.desc.pb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/pb/TurfTurf1/validator.json b/validator/tests/pb/TurfTurf1/validator.json new file mode 100644 index 0000000..e08d86a --- /dev/null +++ b/validator/tests/pb/TurfTurf1/validator.json @@ -0,0 +1,45 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Top" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/TurfTurf1/validator.txt b/validator/tests/pb/TurfTurf1/validator.txt new file mode 100644 index 0000000..e80b1c3 --- /dev/null +++ b/validator/tests/pb/TurfTurf1/validator.txt @@ -0,0 +1 @@ +_:Top:==1 \ No newline at end of file diff --git a/validator/tests/pb/TurfTurf1/validator.xml b/validator/tests/pb/TurfTurf1/validator.xml new file mode 100644 index 0000000..cc55623 --- /dev/null +++ b/validator/tests/pb/TurfTurf1/validator.xml @@ -0,0 +1,47 @@ + + + + + + + _ + + + + + : + + + + + + Top + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonDaisySled/valid.main.TypewriterPrison.desc.pb b/validator/tests/pb/TypewriterPrisonDaisySled/valid.main.TypewriterPrison.desc.pb new file mode 100644 index 0000000..51adf66 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonDaisySled/valid.main.TypewriterPrison.desc.pb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonDaisySled/validator.json b/validator/tests/pb/TypewriterPrisonDaisySled/validator.json new file mode 100644 index 0000000..ad20821 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonDaisySled/validator.json @@ -0,0 +1,108 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "DaisySled" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "1", + "IntValue": 1 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonDaisySled/validator.txt b/validator/tests/pb/TypewriterPrisonDaisySled/validator.txt new file mode 100644 index 0000000..7e82495 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonDaisySled/validator.txt @@ -0,0 +1 @@ +[*,PocketRoses[*,DaisySled:==1,*],*] \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonDaisySled/validator.xml b/validator/tests/pb/TypewriterPrisonDaisySled/validator.xml new file mode 100644 index 0000000..66a8444 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonDaisySled/validator.xml @@ -0,0 +1,111 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + PocketRoses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + DaisySled + + + + + : + + + + + + + == + + + + 1 + 1 + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonMapShark/valid.main.TypewriterPrison.desc.pb b/validator/tests/pb/TypewriterPrisonMapShark/valid.main.TypewriterPrison.desc.pb new file mode 100644 index 0000000..37c0ae0 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonMapShark/valid.main.TypewriterPrison.desc.pb @@ -0,0 +1 @@ +a \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonMapShark/validator.json b/validator/tests/pb/TypewriterPrisonMapShark/validator.json new file mode 100644 index 0000000..f8439f3 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonMapShark/validator.json @@ -0,0 +1,108 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MapShark" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonMapShark/validator.txt b/validator/tests/pb/TypewriterPrisonMapShark/validator.txt new file mode 100644 index 0000000..a6c4842 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonMapShark/validator.txt @@ -0,0 +1 @@ +[*,PocketRoses[*,MapShark:*="a",*],*] \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonMapShark/validator.xml b/validator/tests/pb/TypewriterPrisonMapShark/validator.xml new file mode 100644 index 0000000..3b5a9c3 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonMapShark/validator.xml @@ -0,0 +1,111 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + PocketRoses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + MapShark + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonMenuPaperclip/valid.main.TypewriterPrison.desc.pb b/validator/tests/pb/TypewriterPrisonMenuPaperclip/valid.main.TypewriterPrison.desc.pb new file mode 100644 index 0000000..cc385ae --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonMenuPaperclip/valid.main.TypewriterPrison.desc.pb @@ -0,0 +1 @@ +Ba \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.json b/validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.json new file mode 100644 index 0000000..f59f12b --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.json @@ -0,0 +1,139 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "MenuPaperclip" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.txt b/validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.txt new file mode 100644 index 0000000..f3dfb74 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.txt @@ -0,0 +1 @@ +[*,PocketRoses[*,MenuPaperclip[_:*="a",*],*],*] \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.xml b/validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.xml new file mode 100644 index 0000000..3766f82 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonMenuPaperclip/validator.xml @@ -0,0 +1,142 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + PocketRoses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + MenuPaperclip + + + + + + + [ + + + + + + + _ + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonScarBusStop/valid.main.TypewriterPrison.desc.pb b/validator/tests/pb/TypewriterPrisonScarBusStop/valid.main.TypewriterPrison.desc.pb new file mode 100644 index 0000000..d1e4084 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonScarBusStop/valid.main.TypewriterPrison.desc.pb @@ -0,0 +1,2 @@ + +a \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonScarBusStop/validator.json b/validator/tests/pb/TypewriterPrisonScarBusStop/validator.json new file mode 100644 index 0000000..4151395 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonScarBusStop/validator.json @@ -0,0 +1,108 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "ScarBusStop" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "*=" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonScarBusStop/validator.txt b/validator/tests/pb/TypewriterPrisonScarBusStop/validator.txt new file mode 100644 index 0000000..c3797d2 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonScarBusStop/validator.txt @@ -0,0 +1 @@ +[*,PocketRoses[*,ScarBusStop:*="a",*],*] \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonScarBusStop/validator.xml b/validator/tests/pb/TypewriterPrisonScarBusStop/validator.xml new file mode 100644 index 0000000..b9644db --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonScarBusStop/validator.xml @@ -0,0 +1,111 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + PocketRoses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + ScarBusStop + + + + + : + + + + + + + *= + + + + "a" + a + + + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonSmileLetter/valid.main.TypewriterPrison.desc.pb b/validator/tests/pb/TypewriterPrisonSmileLetter/valid.main.TypewriterPrison.desc.pb new file mode 100644 index 0000000..5abeeb3 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonSmileLetter/valid.main.TypewriterPrison.desc.pb @@ -0,0 +1 @@ +( \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonSmileLetter/validator.json b/validator/tests/pb/TypewriterPrisonSmileLetter/validator.json new file mode 100644 index 0000000..39cc36b --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonSmileLetter/validator.json @@ -0,0 +1,106 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "PocketRoses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "SmileLetter" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Terminal": { + "Literal": "", + "Variable": { + "Type": 108 + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonSmileLetter/validator.txt b/validator/tests/pb/TypewriterPrisonSmileLetter/validator.txt new file mode 100644 index 0000000..d651c69 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonSmileLetter/validator.txt @@ -0,0 +1 @@ +[*,PocketRoses[*,SmileLetter:->$bool,*],*] \ No newline at end of file diff --git a/validator/tests/pb/TypewriterPrisonSmileLetter/validator.xml b/validator/tests/pb/TypewriterPrisonSmileLetter/validator.xml new file mode 100644 index 0000000..d4d12d1 --- /dev/null +++ b/validator/tests/pb/TypewriterPrisonSmileLetter/validator.xml @@ -0,0 +1,109 @@ + + + + + [ + + + + + * + + + + + , + + + + + + + + PocketRoses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + SmileLetter + + + + + : + + + + + + -> + + + + + + 108 + + + + + + + + + , + + + + + * + + + + + + + ] + + + + + + + , + + + + + * + + + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/WrongTypeRobert/invalid.main.Person.desc.pb b/validator/tests/pb/WrongTypeRobert/invalid.main.Person.desc.pb new file mode 100644 index 0000000..0894177 --- /dev/null +++ b/validator/tests/pb/WrongTypeRobert/invalid.main.Person.desc.pb @@ -0,0 +1,3 @@ + +Robert TheStreet +0127897897 \ No newline at end of file diff --git a/validator/tests/pb/WrongTypeRobert/validator.json b/validator/tests/pb/WrongTypeRobert/validator.json new file mode 100644 index 0000000..459bfd0 --- /dev/null +++ b/validator/tests/pb/WrongTypeRobert/validator.json @@ -0,0 +1,62 @@ +{ + "TopPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "RightArrow": { + "Value": "-\u003e" + }, + "Function": { + "Name": "type", + "OpenParen": { + "Value": "(" + }, + "Params": [ + { + "Terminal": { + "Literal": "", + "Variable": { + "Type": 103 + } + } + } + ], + "CloseParen": { + "Value": ")" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/pb/WrongTypeRobert/validator.txt b/validator/tests/pb/WrongTypeRobert/validator.txt new file mode 100644 index 0000000..e18bb10 --- /dev/null +++ b/validator/tests/pb/WrongTypeRobert/validator.txt @@ -0,0 +1 @@ +[Name:->type($int),*] \ No newline at end of file diff --git a/validator/tests/pb/WrongTypeRobert/validator.xml b/validator/tests/pb/WrongTypeRobert/validator.xml new file mode 100644 index 0000000..3755a08 --- /dev/null +++ b/validator/tests/pb/WrongTypeRobert/validator.xml @@ -0,0 +1,62 @@ + + + + + [ + + + + + + Name + + + + + : + + + + + + -> + + + type + + ( + + + + + + + 103 + + + + + ) + + + + + + + + + , + + + + + * + + + + + ] + + + + \ No newline at end of file diff --git a/validator/tests/pb/main.BananaTuple.desc b/validator/tests/pb/main.BananaTuple.desc new file mode 100644 index 0000000000000000000000000000000000000000..cba42efa5919cf25cd7e8f2efd15ed3cbd649d51 GIT binary patch literal 14514 zcmc&*TW}-Cbrnc}1R5YX9CCNDw6wc|C5u{F*c4+u3?+8>z|z?8hIM{UjCt!-;-vBG_1eW95 zu2Y&Nl80j?S8c1?j#3P9`jc$d?FYc%m$J}5`PKW!P;{+5u471Lz0Ne>9e6FP*>c-f z({_&CQjQ2N#t0guxB+@~P&0}gD4+GSY{oxz0`pF(KoKII%3qyf^AXF(hS)PKbBtdJ z0fv!0p$|A_)QP+&CL~atxW@91kz{UK_a%4m$@yiSW;~zFBS@?IomxY2R&0ILW3!ilethRM*4!S|}mf0OxFg+u< zAcP-7nSPPw`KYpC4ZK6MXU55GBl}q6j1X|4TFnM+z*WZyl707zcR(r z_>KBJ%O70duQfOK4%fG9T1qc6MuMx`dus>URQO!qJ$Uj1+H?pw+|i2q0-K{28&}aR(3p>iz)~$_X>gW>5dmoE0->C@~iPK zCazc)e|w58j!8epHu7PX;UUUb&qrfXghUju(W#x|)C_{pa`6lTDWXQ|KN6eM`Lg%q zSPLSJSCDdKYBa*B{4R4lu7%OL{Ta3pBbs=QeL2NScXQ5IR}W`8?9Sm#_sno8a}Pc^ z)&TSQQD;wcDRE`|vHIz*IzHplX~g%XYH z53<4y^Oo6^dnLYw%A;(bZ=ax%B~pQJw7h1kYx+LrEI9k;3?1L?;j0b#Mt_1W5~2s| zklpWEP2BJKC8k=ofEqhO0WI<&+k1du9m}yiGq9T03j_G>rs=esC#HW=T0(;LsZz=~ zkBVDDuSRNXPWvOEq*vKlVgVn51DmZAt97$E2#%jFy+>`IECj!R&IYO+f`;B;1s66P zJ^Mwl+4X2?EUw09aN&ghiSv@SuN<(cIlj|j{9!$Lcapx-)dTpc?1z-dhm;1x~M7_Tdf+s zU89%!WwziR-DvTUYy!`*eW&ygAace$zMz2IC$au0koza5*Qcb$hj6z_4|7#6$J~a* zI3)br_HiH?A0f3o$pqU9)6f+(7Npt=sTD!4whIXvYT|(5jXp|h1rQEf`~W+PN-#f~ zZ8Iojrxt%DJvGtB6-Q_APsDZEN7!Q5ONFdSL*xRf% z8};XFkc>cXwp~A{HI2jFgZfTQn^qI{Z%nb`=-x~J0d@|2MTHXI3YxcVkH%upZO&GG|F+)7*TWscrPu#fF6vtNZpeiCPsa$IidG1=H zxw~iVtZf?tuAgV=uKD8W=o&|&NgWRiSY{htSxEHGxxIXaWyoJTW5Q$FeR`IqH};H8 z2!Duo?#JeSy|w`(p!@`z;ZDGz5xN0D{88*cXyD-6!=3e-p-rj7#D~#_MGo1!@7TCj z8~s{}<&^{)w~c1E>)vjfT^pum9u$m3Ybcqt)7};1UrRA9%#o$rMu#(|I%9|PyJFz0 zDOMDV`FQgl{C_p?%_%lFlBPy__pa8xz!vPb)$6-ZAa0#DyVfnJq?Bo*h?fILTBy{A zxNU@07wem~o&CLo+U~~n=Hc!S@9sUjYiJ5Rsl9_keV=Jjqx5rZoLMlM7uo#o9;|w> z^wq9jt!*4Mcxfa22qJ+G<+QES-_P{E>)U~S3ybNpY=k?PG#qz`H+3fnwH>QtMznF0GHqz` zO{fhSO525_6ib+Z>qW}Qa~UVZWQ!;2+)Auh6^uNWaTPdXF*_X(o0UX->ro8Fq_}*I zWu+gmgyn!wAUUFP=@jIISrnj?FvGL`CKb`>3}foj)JoRK+kRNOEWZwk$>{L`Y)`UX z7jjrU_26e$E3v*Ag;chMz7Zmq|2oC8QVdIMx^D(2M3-5g(ozOJqa3nD2j*Bfb>eb- z#w@mLnQhwFxV;|quusKHNO*;OLx}MdEAULaJEDu-nlm){B2=!j^OCm>c_!?c+Hkxg z8oM|1TmEK>El|df*?oAnvcs6^IBuZ2D;~-*TxBf;84AI2kFnvKySfcl zD1O948%|oGU~kSvxMjl%%aPTw9Z~V+53piW0Ue#g3+U?~hdr6wi}voiHcS!eaL)fo z>UqcmWs3QBD)srP>8<_sFHJ3P(OGGQ)ZiqvVpzvrtA(+{zVH}(ykiF^gQE&Ga;4*T z+~JujKK1d)ljP!D6?Th4x}10jTis=gLKzZLI4k7)BK`j?j+MUr9ZGJE1p&pSlkat^ z20Jst$A_lnB`|(NFiK;Pk#Dyxue!nJ$hHZ&{z7mS5EPPZ!Lbv5U~Aw9ZVv}{f=Pc# zG&wkB0@y}~s#c+(4iY?LN?>?H7!vANKgO02OOuysNpdBv^v##~a9j)t6q}S@>{tO* zSD*~i9cP|WiYR^RyQ96h#gS{>ZuO9z8|g(J6%%m2A~=^~k%6@POv zT5#%uQ+6pbUSkWlEbqwmMfqm}x>p6=yZ}-?2)RDUvd6H|pMc^sf?^i+5xT|-9hZO7 z1n}1cJTEbVqVM(xU0k-z#J>A=Ng*+U;vU@kSxF%=NbzAj?CGAufzJd+d`>XHVGu!( z;2AjW#{$~~@ZS{hECCP z$r!#U81fQ>6fkS`Ob@C^-HD?7w**Ha1PPA}oKP}>N4_LIqQH;{h8~nTFuA%Hw%-

+wF??FcBX&(xilZ@cs5j0r>Aow~vKQh6{7@Xh>e^-#5Ri>DRm`#uxrUaZK?`4Mh zJwZt;gvte88#umsd~aU+ed#rh9r4-$J1ZEK4w~Sr|3GjGdk%*|f#3Xbwj8=s-jVR3 zr~4Bye_1fg89&Tw{T;K9OU0Jva1diI5NZSoG@2u+OP|R zY&)KLsB6|A3C8&lS0`At#)^~(O&XGaEQscYD6|OXKghCR8!*ZI_a}mb2?!Fv#DT>w z%nl}S&{qUQUSb4=OfV*(_)|$CF-Y;z;X(^LAsa>)W!4GK{WC!&lQ2Vp;@m7ssI*fu z6PKv33bvvGL)(-L5j(4e`-cg>^J@{~8WM|~O8zr&Zd#`kMd#NAqs(FtITHD4`d`gcWAnuIZ0xJFZ_jo#06iAUyRktz7IhUN}lF42cWYP>dDOInsxsik?nd&D5 zRYA>ns!zbRN=ROk;Xf(hq+b0&mX%3MGW4eeG=v~rCM?PDpO$b5LHOh@{PUl|gc)k< z5&|pMtjJW78~=o8Tq3GZu?*!Y$^H)*9v zrubDs!S&IMXhx9C@oUnINJ0QvnI6vulKDO<_!c-=Nd~IVGP&3eD^`>VB(r`>u*yB! zNFq=@7%nMl7LZK)ilCLNikbw#a><4Za5C4cf=dD6&=BiyGX66HFA+F2!G@MiN!FP?KcFQT)f0u2+qwqgDzZf zgmPH?T9=&ef}Ov<`fe31^ii2df$Q*%_1mB z4wC3)mILp@JH*c`_@NlC(q&QO054|X1+U_2v4SyGky2q*s0DYN<~S>2keRM`3ANEz zaC4@>Ba5FxmGDAWaaHFnsBZ*(L|ebavW>3Y?^|$(Wl=FdlvdMkefDDN@~6|I&A=tf zqDtO;0nS3BvfKQo@`#?rZz_+-Jh<&0#RghBCOd^o-%-7RHWQQCaPd2;=fdspsH_hc zz@st~E`dj7K3oHj%Gz)hJSsbe+u%`I2d;!iWhZbaJSw{Zm%^j6o7zH5)&;ew-iz8| zOm;_Gipg5qnV9UBb~YwE($2+Xj#k1$aJAod%sX~((9_Oe{?TEC>jnP%RomWlF6Cj7h&KQDdzLh643Ghx6s literal 0 HcmV?d00001 diff --git a/validator/tests/pb/main.FinanceJudo.desc b/validator/tests/pb/main.FinanceJudo.desc new file mode 100644 index 0000000000000000000000000000000000000000..3db5ee8225ab0afb7c59549851e53e1a70d8c434 GIT binary patch literal 17558 zcmc&*Ymg(?RYvpJ8C_{KJ-xGQdHt4O>vcRECVnJiNEm4}v$Gk^$SsZ6c8XH{>3Uf=Wm#MR-$15*+725kr8G@CYRQfIor!f=cn1A3RdUD?ot!NELth&b_x= zt;Ztyhs{=P)#&s&-#z!-bIv{Y#lE@4?r*zp+vZn$o*TF);px>D_nV&83tVqQ(DYTw zA%B6RP+@Dkmd$r!#u^Xwce9045c8?~=PzeAAKDlZ+8CCoQfr2gD13W?ouBYk*V%$& zb_p?cIca(W3`yb^H7w_GQ` zBtRY>1KG8>-5P}$$mvhBCASvoKVW__P&z8iW?-e|fl-msig zH=h;&_l*J61Y-$&`(QJ2QZV|hUu5U}z7v?Qy<)UU$V&au@I%_q9pvuyE{dI<+3 zPoB{RQfAnQawKL1NEmUOWgPAYyd^z?d^xi@-KUro8h0t_lyBChUSO-SKQuhkLC8tp zygD`_BWB$wM}B0Gn30Qd#BY6vG1uYlDZ;C1!%rrg`G{CXkd3qu+<~0_o`I_^-NsWY zGBn4$?U>~}PVoX0%bul$5*t%{W+*Y)v6To#_Ul0w6B;6OQF=)m*@){9+3eD*EH`W( zeVr}(f$0Sz(JdPChpw@CBr}oa77hAS|B*q5=S7Df8B=!{d9>e`o?$CP9hkN0!jG{F z6QT7N*m~$#PQbmM$H`-5^ymLkCXjKTJ5F*-1&#AV5R!N$z5Gv0+E3u$T;UVv*!rZz zGckM-{z!@^+`}A@LULEXkYpEa^Mu<-(W%S1&Bw=VH>rh<0}?T$r2byEAd>u|K)5m+ z0)?X?NXljdp>u{_VKQ%);XxudIkRv^la8?nY zCz^gA%gCs*FbBROvge{918tuu)cni7>qM?8nkRy2{+WSu$;5rn}YD2a>)upX1VbSf*?kf)PHm=r^{*Y>4_SQ zG`>NQL#fe-Q~7OjJI#fox&2wTHU>0vj{Q)I++!EM%B{zlvEL)N9=7VspKRsb)8V|$+~q+(~r%u3lqU7 zDtZrNmeUIZSyIWhLt0Qo@}lG!2Jv^&1Z!kzX-(VW zPSEfJkDFb~X`_%zU0&W=JT+~f8>{kjE&56lqB!vq5;R>5B;@Byb~4%K#J180QQ(rq^~FO1b}HbkGX zuNoCiXP0?AasUprtJX{zUD=D~^6coK26-A4^{&; zak(o=IUOvcf)9%Yx5t|p(^meDBs;CU)d&45+`rl2j(Gx)F+Kd@=kH50=bFv3__{4V z>Q~sBd-8Hqx?}@5r`9X^haizQR_TLq$f_Xgj{)58m|jm5H9p*(=O31=l1{aaAX7;A zx2)43LVQ%PWdu#3U1l1YLc~JEc3H6HKu@-df{ZvRU}U3@3AQYVgBG7;7l{e^(QKK4 znc#kh;3m5xXNZpjDd_2iC;iy7o{)MHE%L3mtmrOmv24=u^)!>NkBS6^R_SP`+^Frp zR7Np^+U#JzUTzr2hxPqRS({H5?BAGUx#6{!{zL2z*h*}a_&jLbvOE!sT~jW5;?%aT zxUi*k13ZW{u;>TuKF38iM9wh17S@f?7FEM+BCLD_HKp_z?S+(oxs*cGQK`F&(2TS08Hp-9%WsHHG;xM8cmLewWg}zx@z!PG4HPEB#|K!REZZ(> zSUUBPXIGcU#%5S#<3RBnvE-${OtIyNj45`ZX9gVsw^*FhQik|VbX1EDax6}rB%OX! z6>D>|CDt`=w~G<>#pWdnUPUh{GM!=to@v=byfmz7LyJDd%vU$(x_*ROoiHe`9`}l07!kFneZjdzBxGRszZEVLvMgrhcm$AW@+nNnC zlsw`Q3r;aZVQnr+v}B_lmJ{B#9JS*se_+NI8|Y*lxq)8%0M=w~cXV`%+Mq-fhjae5 z)Jv!XqZ0G`snqA^=J%?_FV0=s6KACxf(<938wNkMd6RsHec^HTMB55F;mHOXx!QKy z?%+(7e)Z_cQ_$79Dpre%dTHt*?A9SWub5Gg;;c}vi}e3OK7 z0w#@9CWw_{sjV$+sDnahOj8iPsT7I%x1ML~BrB3vQj_UBY58w`NQUG27$BijViemv z!0rmRLF`HDCAK2+pZw17DDFwgZQI^DW_JvYqV$RxFh8X**T+1AV5=;m(+(7J4W^sv zdj6`y)D>nlq=a~#t=;6_iR-KFpBdm@Q*f(FQ0xa0)_d6UDHi%OKzv$3ED=A6ZnJFL zm0g-a{BcsH(}P#Mi7wK+NPROvd_h6v5@MFTt zpd#(ehVUB-Arr|E1hQ7w^stL$&*bI5sW7s!kg`bV#FQB<^2Nv^2{8gf=wX|KimNw+ z_FD=~m$H?pKZJ;p_OX#UO9cP6f>{;W<~b11A`QOeC~ z3stO?%&Ak<*A!YVAx63-DnuHrCaoW4=;zl*l&eLugqf&+Lg$S4XY$TJQHW6$dn_dh z?>d8n3D3X*hN!3X@dL!l&@G_+Pkv99Q#mE6%Bigba&n0kWx45KA5vhE8c|Z(+GQ(4 z1XDNc}dklCWbWV-avE9qDSIT7a-s*ss3{|icfAVU^NOm@>DelfB@LW;s@w1An8 z^h*k9b)&$9hd+C4?w6)ciYL z{?kf6lAzFtrrzn&uPf;x>)1;)T^Piy|)lyt;T2J5=GvTC;dX|n&W zWMcsmZkm2DOTYgk5{?8&Y5E)0&$NcW8!4^$5d~@bQ*2936aG&nJdmK4{h)<=EmKG9 zzl89z5%DAbv3cKWg{nTCGFJbs#FH{K+PBVvo-1w(Pt*Q;3LzmF=WZSdQs5 z`Sq~nisSms=Gq3~<0VY|!ANr9g4K!v1{}0-&kkGi9&l!JRf<)@mSMG8HaCX3widqo z+51w3PvcxSfsFfItY+F~>xS#$`U0JbW;Qj6G@u&^9=*V_M%cyUidxU|tUzqE&l^KD zeUq&p<1&*_k?PVK&M$DSOYFSQ8xy}N{r-9}sSq_*;ieyYe9tq{RZ=i(4AF2EG4shitt>{^XJU%dhmfhdYJ1?nH-Xxy?(mg-IO7 zL^)iuS~hU?$Sbz8mN3#VA{ z3%VDV*;M^celdpl^bMw0J**TB-o+7f2|3+!ZS{a>!WXjvql5EYEaY$mOTkC4%qD&#w=!@ljxF|z<$2;B6E!qU)E{9v zbP8u(-W~-40-9WU!5E!j~3@$D90^&SLvT4_Vb0jjb3-5<$|%uA@F4IMJ;w zvVMX>c`J@Tc?=rotpVLg@aXTOyyg3rSv37KPO&_Xh`3Aku!`%efz>RU?GpFsX?XWVOcEPg8D ze;i{nGlD1cJhzb}inOII-r(gnl~3P5G84(iZ@PF;l4K;8E_zn0&8xfz&l4}Ia5X(i zBM;gYLv1;A)5B&7Zo$%Mj!@}=WzDrYW)g%rF+@LM=GBVT#&aotfFN}!Y0K!oAT2%e z(HP|>-?%}$>?PO6B!l3lp-+;iBM0WKKKxM3Lx^gMg&~@LHy(Vzl{=WkqTn46$h)fC z^pH#8%_?XUltPCsMvR(5G-}-G229+1z zaZ*1*F7PpPp~1{H{Gu41Aalv!$VGGV;DeE5q7Lnv%>Y4#3MY!d0j2QTJWI!w!AS57 zP5QS99+=z+om(c|3${YK|0U94l19Z$5vc<&eof1#)I)KhikZX*BgsXF@)gWcG8|V7 z`2(|#R>CECIx#O=UeIZobWxD}Y>ZCca1FOTZ();n*ToA1d1GOSMm+Tp(b`u90zEr} z>nCYsLL|>_HAHX(DmW4p{YjSHcYNGgui-$<<03HPaVa~m_PhK57l(}@E=t_jT)$@p zru{r-MpuQ)FtPCCi6VnsciTCm08qDH=Zyh@0Bap?pVmT{8n^K=6m5dO@g|HPZEnK#8$} zt!<>&Qs@OJzs3B4#5hd7vdgl`tUyHT0 zW!MtdC%q02w1q1rj6s|P2xZ%IyCzU@ZM5Rz`U35<18RxQm%<*9fLV9B4;=heBgBO( zSJ{P$6B{*EAq=ktM1b$wh#W0-Qk&mh#?cDHAXyJX-+b9J{byFk}{&@jZSG>@TW z>a2T9z+EL%oV*rYe6c;yGoU8{|?gM8pu@U;HUnY%nhxz`SHSE(SVF ziXDoFx3DhxEaDNbCBYNb9e5~-Us2M;8%Z?2jg*WkTw4?UqMEy@>GUMC+QEVz)kd$Q zofjivooMUyi1J2?->l@6*+Wo?O zO;qF<%m=8QL$immERbZ?4%^y;LP2geQB`UW5eJI06Rtf>nv~2ydxZX|;EzXz_IN4o zYnMrnUDU`u8!K$>G1Ve0rClN9YpB?@$B8PJ4B9*BZw#*G`PvggC-bI7@wg#C>8gr$ zl_Ynes`gGAg>Adn!PDkI`$1w6^SZW4FgqM~GP(9H!44g?CuuYgIe0>hS8Sg4)RpI$ zHk!Ms(H$3<7R3u%x*m4PzsbGKP(+T1{%a_=Fy%|<+_h(Z`2Xd< Hzc=;2t_UhW literal 0 HcmV?d00001 diff --git a/validator/tests/pb/main.Knot.desc b/validator/tests/pb/main.Knot.desc new file mode 100644 index 0000000000000000000000000000000000000000..97930f0dfe90e352cc9afaaecfef72cd5669888b GIT binary patch literal 13298 zcmc&*S#Tre5sqxjmRhnbkG;FX+ya8Rv?+&En~?aBjTc{xY*?UDQ)6i?4=c?G&1iQ` z(=Vl(Pqo_-QD)y(W>QDT6WWSTLm_zO>hbRgcA96m|V8& z)>0r?wtVeo7}>+YT_P3UU zv8Gu$Y1XXV5F3_{+C>0Wt7$n^%c&gXhEa>8u8e5cz+|(%TemBQA_gcH*R%Y^QUKSk zgo)FZc~TWkG0_YSD}sxVZdjg&`WXH})5?vo*NMvyiSNy}+BI76H< zgzZ;CiC&fj!34#aXSGh*6)QK&2(ApNQ0DJ@IV4V7L@mzvmgCv3lN)0sSAx3!quznzn`d%q<{{!K|Kcc2^l0AK#g0LIk7kJuMxH#N4LGLTh=e=u66gIkXK=F!lK^q93!l76HU zOwR;7>{(j^a2?Ct!|he6qo4FQ^CpS(FzZPMTtb|7OUKp5&f+QSd~1fhZ3i+fi}nke zn9nT9lqf{bOcyXdv2n@5=XDtb0|tv+6kd{gT1stTG@E$-4Ag!Onz-*@WL6Qn#DAciuBM!FbmM2K{vY!*HlCwRQrg+m7w{R;$^v z$Yc5L&;5}Hkg(6~sM1_PeX5Is4_=*2{An!v5&Sole|Qw8`vso9+ZVS#2E|>gg*hOG z!CgFIkd4>PU8{~EIyRe`yC!72eqSi85k%)m?N%6JK|anHt{#kmwxiB)+WC+qJok-J zBuVNC8X&*WW+1_~N!606EqK<@v8vXd*{=J>DYM?TFgz1DEe7wTG3{bV@m*zO4m`u6 zXI$qSZIwpo^Y?kKBVChyo(92G$&X+QCdRCX!i)pjA`SL zWHJkzn`_xbz**kbS2tF&$$)c3-`v^CLcp+IDwpS1O4(E(v2gcxshmv*6r>h@Vm$an zX=7(So6#m=oPDvpOlqOTM9&avnhjXWoMp0W0422iBE*?@p%-V?<`+t9#^%=c>gLA$ z8rm)x(@S^ktm>sDw4XAzRhr+%vEh6Lru)UozB@x%Vyc}|bKxasT%jfY!w^jMDL?vt z z%_fTRJ+tmv`UHPnmTw8cij$Utpmfne@Yew%|LG*8=m;e~u3ZZ0`^;0OARH6+Wy|nx%1WUGY!!$D6>c+J1C)*A?@OUqhUXQI=d~F8Z&d@(4<(f zK$axHIvz8M@$y!ww4|pb%d*?j(4lH>VBi$9TC(O!^P;gT6@$$gkDRn#csBELSykD| zN`+0F(ZF;Vx+) z&z^lIcR3=G`UJgT4!OmKwX2Za+c#THR@8Xt?pE#!F3QKLwqe7xCA`!2o-Y}%WMU~c zCfH^nOQv9ZL5j^Xu?&u@-^GHABx%F&k6y*Z(m2@p;`MNtgfKpuRns>W>1&xZ*&SmB zd)Yyuo~`!oLEu@}aXo2F`qtZ4bmxnZRvlkU0(X6^NU+da+*~Rd<<)yiSd3t8wzj%m zGW4B|?bY>Cc33UgUmk)?_t{H(9~?nju||n!`NnCx#r9&uWbH%nMPi+jA+_2SC+xv0iSN zO>|wqb-*g_gr2~G5zLz*2+Xi>1ILWh_Nofz0rF*A2rCl{h#5!@yxamzA`>EcOSfzkUs#!aav)3<|%T@j&4;dq&mCy$qnjZJ-heoYr}?K~K% zn-3gx=QuVrsNs=;+HBpKg$=!ZX3rmmIJ1`qAS{-BmzIE$#Z7$)-5>p(+tJusEiK{> z$lm~?+z7Na0y7|pKZ+9w+c@-gXMLfhXNS~n;^A(iCWlW20HG zyQdAaZewWXP62Fao<;^;w0A`LCt{EdYGi4)?(IyaPT%ePjwtw83^F2__gC-I|Eqex z9fI+$GPP%Q&#K-1FlkquL_2@86^=Wcp=;pT>{9JrpD026~6sRiL!p@+${J?4lt>pOjo{c3tKW6ij%0y?J z9qY7fL2J66?c1lQnJ(K#baENN>kjc|)$s#q$Euk<(sW1}*0b_WAdMAD)y1n6OQ=Bk zBBrPK7$>A+ix=u#OX^pp^%NiDB6!7O)@m*KtR&(`k4!Mk1ZR#zLfU~^SPt3*izC)9 z9m1M0K?7tYs_<;jU`;f3hcR@?&}>3a*u9#0Z=7i(C$_273`v!S)= zh7{I>ydEHDejS5^9L5wo(lq^jMi*Zg%Eol|OygKBIv8W|)`^ePGgYy5%dE0N|?7+z~6rRob z5FOd5!?J7DY)5o_`2%Kb)<7rY@CN$Ay?7>b8@;Q$knNO+>~hY#Ep`vqfwIK>Pb~J- z(D2IE!m~p&E9|bcz{Kz-w4hsib*n5F?@?_)U zUKLM^Vss|*61KPjQ$iREQoJkV=OXQYHpg<$zs8DNeNsRvb@H=LQHMiae0*zKtq8`K z1*24k82NGAY84k@oar_o*DnQEnm_@`3SK+W1S@UNcN?_1BUJhoqeC^{*tShIZWu3#Ia-cLQH6_I=7 z_3l+%;mG-Vy|@EMx>k{U#Q>a-3eM?}XAtcc$Z_gGVXVP)6Rqc01*axB<&qNPahN=1 zwRT-kw0{PmdrZ(x2q5bR5!Wq{*u#VV02Gf4iZPNW=scurE}zl>@FxU3B{71c={DPS zN?T^++I>w@NQ|I32eW=%Qb-I@e1I-{>IZn?Gk_9L3I@CkVh|!YhPVCHU>gAbO#x3Z z0D*Cj%J_((Zvcv?1w}@IiD~$F(_OO$A$dklLqLcC7jzdZ(*400z9kq^5vBHCh%4=3BXf`) z{9QqlU;qN&4d-?U&zAq?QhETcCYHi0e_s-2~ zKaf`A*e7AdE3GEt6Ot$-Kzso|4>lNrP@*8#Eier32GI?##10x+u_PX%~?MZj1vKFmBET7 z$go0aP?!9%AR6zWNF$7YSY_ccV37Ft6TtxjLIfB%sM$r;!2kw&K`^8wMo`ECV*rYu zN(zY~iaR=q7EeMp?k-kYM;P~Kf=U))x&o!xELy1Sq+~{>s22rWMuCxTN`**^RiX34 z0P}pQN4c`Z5~ouCw4IaI!9d>mbHOO9*d2}}zTJkeAi6I5xn-YMRIKdZ#zB^v&50cYaH z_d`M!Ez!_V2xtHyxGY$r;h&Un2_g94Cj7;xs9?t4x`bfH8WWXD^v53(AD4*YO%P{w zN;LE{0?OsF4oE50Ni_Vk0 z?_kIRO0tWl_@cCcf}(BITfjs!eMvA)^wcl3nk-X9Q+!!aaCuUrw<3t<_=;4cry#(p zObb^7(R>dJzDW*Nih<%?Ad_vUW5p_gXx2vrt30E16#~WWPD)X$fN0uB1+B~~Y7v0x z5;_Sun(HyarGRK_i2NIke_Y@tg0_ZCz0v3=1Ui6_XDit)n&C;oprSB&$qZx!2{D@L zDM2NZOOOxMn@nCJ7ou?!PP>jjaKv_4_-9?}tzhoYZ}I#W05HeIE&Rn~ zH46C`f#lK{Z-6&xXl0_Xe`Q$g+jSrv0@me;Q2X_60)k*CV2pmi=$o~u&;L!Jr92s| z;o?tL&6*d5{ky;h00LJ`&mUyo|Bzq_Af@SVtbU?C{DxFo$m1?Z(x0p?6$SpM0Cy1d zWzVnT?^+^P>t76<(4{=?e{9}Yt8G!AMy%Dp1zg3@YM(yoH(mB?;VA9j6buSvq13;9 z3oGu5yG6}a@1A^g2NvFn0i47hw&=o+G)&u>Ik(nrz5ye*BL&``#TV?_KK+J)e#Aae zAhH4*qW3y~OAYE$eb+rLZddt(HVerGn~K&F{?42BWNHpL0mF7)<}tGeocJGIM%G-n j$$kRRjbP*S>$mN8i*6aHs$zdHB;NSlMX~38e^Kne6N*-{ literal 0 HcmV?d00001 diff --git a/validator/tests/pb/main.Person.desc b/validator/tests/pb/main.Person.desc new file mode 100644 index 0000000000000000000000000000000000000000..e68c8b7d9aa25367fad91a324798fae855dd2e44 GIT binary patch literal 13294 zcmc&*YiuLc6|S8)v9BG+nPhjp;jxQ>5*F}QDX`#ep?NsL+axyQ1a?8yXkt&C*|lek zXS};X{n3g(g!+C+1qu|X3N3xo2QBnZ|IqTQ694<7RgwClEp3sC)IUAvKE~G`Z)f($ z(v>24?ws$t=bn4+x#ylcOI|II!wuVRG>xO}j_ump-JPR#!>M)5wrh9tv`v|066^^i za_eMj#cUeOo?z8*mD|YZ4m4&Xhezg;^Vj4DK>2<|1$$E|BKP_znI7_1QOKyJw~#S1 zmr&_%B}>NJdhLwfFtSnFEFP6B38@=x!>SurZ7(|lS|n7dMY(}YwY%F*v!+R61jJ%$ zhP_z!;L3Gm@|>ZckwueKG>y%Y;1Wr-495X|GxO1pJ9aif z2@d%Ps#I_ZrWsH?EBncqvuC;b`D}`M2!G1GG)5)|G#~0>$4P7lM+pvwo*dE! z4AXB!HWMKUBqJ`6q-8j+QD+{3zMPy7_9?d5E$&e8UW;DvhRQ#!Ypf}(VI^cKv)a_>;9QW)oGSN4HuwCaqO!f_>R!)+c zu4P)T(P?)K^jNm~vwvU##P4%kvNTgro$jMxjYkskKaOWU0{^19N5;s^u)s5P`NHyt zptx;xU=N5uaOY1DWMfTz+h{_Fj?AU!Z}8b}SP%I%gs2Ru+(AZZkdIM@BjFfuIjR(= zTt*UzXTC88BndT+4d@rjEQ!-)Qa8lb<~=LmSaoAZ?>1fStlsPz5S|g7;*IxUn{tRG z*{U*O4?It!XG~=at%NPu{b|Rxglp37v4M7ftmj-Ta9=Tec!NHbdofBzag53&Np7C1 z6t(5@*5X<*6H(HH(1w+@^1@~&>OGe>HgCN-GvWcZSi`6+@ZR}M43Efe=RtD9OfTI9Jv3RwY9`hV^2#y0BWzBt416Q=7$VCgo9} zTF}LW*F|w-Ydw=zrpN^CvATk4fyCrM6KI<8SgMR=s;>bgl-v@DQSSmTPOmL27T2_L zWwTV?SXcwwd2MR(?yZtqTn76|ZI$A}CbW&@YGh_uoE*9`q$$SSDLL<-V#?*4;@?Nf z^pNypXeW1)7;{m!dtUGJA|#>?I~dv-PR<}$l=Ej0NHM6S@*!VLXWQPbLp2!aJdc!p zp;7fh`2}J-?uCP~{WzKO5rvMi4@F4!LdF?t>RzP7>Fh~lo`}hc@N3dnxBt|F<^`dM8Q zXC-!oN@81u9iO0+87cx}G&)+XsXGqMSupx1R0ZFa@zs)equfHKDWV1YklAh;8lLx@ zERi*vLWy-QfEqcF?Oj1(4Z|`zx@&0016>%mrdxGwS9f-^Gf1!)%|_IND7ebyid1aD zs^0}dN`dUBEMP-0pjO*8YG<^ryK`IiGP!@MA=m|EmQZ91B$O&i*>K=!nGb@_c86|_ z>3M%>k}Q}5T6*B_7&VyFdiH=Uj^}RvLOBZVU(*ar-v*D-JMhEF9+HLAwOWzBU7#upW?T}^IdjJq zjMq`IByHntb0mYNpld;h%~7#5w9EZMLWYvKU|6TuQ?V2@_IkXT>_;Jpk9u8qbxHb0 zDvfrBm_c9mP@re0yS?Xm)=f-LY!kk9$&&6|fuv-|R}zG|K4c`2Xf2hOi(0jGUlEcK z$j#PDn?+6C+Sn|u7c(Pr!v0E>r2Efa%KOLxuoW$oIEJg8GdpxGwsdyv@j}}Smx7Yg zy&wZC4MdbRa>%kF8bZv_J9RiWiV~Hk*I-#Wu&6Pldn}h*c9jeFcAf<;s`Ps<#(EDZ zdoJY5Exiq{>vr~N#vNDV&``wZcjn;pn-P+t#}b?rsHxx~riLd5dQ?o$U+vq2Wa<18 z?p%d2mJ6#4iRBSkCTC#DQj4klNm(Uhrya_TTTOas1rMqsT$B8XDkV>xsA?N!b$ww? z<#6R78Exth?)C3+v?;9NfdR{G{W}Y7x^!mG9VIbpFNF|pvCO-aI2m0ktIOd2;P1?i zTBTH6f)$Xvg^V#H;L`BS03i0rPat&R;M=YB#iE*t%FD!o)rLh5F}s&+UCW)m93e?5 zfyQH_-fY_EG`(p;Xl719Xww3=gq^f^MENHpB;)1C!fgG^8B?91%lREq@bL&q^UZv? zdRP5l)%$IfO!TFx1G9TU?H(XgX5DDDZ72}e_OzyP7Ah$@8Yukbz`h>xr5#Ig(*GvUxPms8<1D3EX zun8nbv|Jj6oG^|JXe7+=Oh=Ovo)QouH2^Yvg!CQws6V6O^xL)BM;N?U@ zJ-`K)`FnxQy%r%;G~>tY-n&~_Cq%a_+m+4bcV!+eX8*c*U1Jz>ZA|=x7{PKwrEc&SZ9LaCR3ny%dpN&N+8Q?t?r~ zq?m6Z$Rk;WYbP9Ft?RgU3m12QO248s3Akkf z*pi1T6ri9EEqKQi!0;+p#FH=FLuL?5gO{vHa3wAK+CywPPJ0BBPSPwk3>T^^PzGrZ zQ%@>IWFLK_e->96a-rEQY>@+fv&g(61m|O%bH?WxNLwMI9V<`}Yhb$x*7K{JQ{kLq zN|EsdnL2B9wrz)(e?rhb&gmvOkk*5c>vj^~frEYsiYGY5ILae*futHX8&U}PlN_ED z7*5f)+ubH^TYBK!eN9jZ45zpVvpyv#1O_SY#LJ%M9$ff@P~vIM0GB}&f&|CmwjT>@ zA>iNO@Hhn^7}ltWj}ZDoP&~^i(h`gh!-bpfh7pG3IWY_lK?0c2ZOBM>!!dl5Gb9BD zDIjXK^bS;!nxVY>Tbv{1fw)Dwme&%(BF_tpNH8RVr3YmWOs+15?c1D9Vc2ys9%O`> zcA$_MW(9wT)5IwN!KcWP7g()p zIr`4US?&A6Y7ESnM?l`mv(M&i6LbmPCJmfv=N1Soe z!<8tkP$X%Z2!(aYA9JFK9tt&r_y<`Q90S6{zn^dp!XZcifdh+Om>q;L(2JZQDKMNu zBp4wmekv#g1}X0DZM1L_GGTSm%sRlhKjTy)2~#B~#%5kZr6(mlaEp40v!x{%>Lz7~ zI9WA3KZF?P%LB?)1r|A_{HJT3G4?`v=g&E#$YQq`68TOLa4_l_aDhSdDaC(*xZd{_ zQ1+v5v2-fUkvyF$tf7-LE)nH|$sXclLJbj=3M*uyFX0KM`WUB5$@xy<7Wk|Zl9yok z$2pve7v4|eB54VReu6_i2*O3e5)A*OfC~u1!<+CIpTdM0YU=_5JJvYQRDwHyn0GD^ zg<~W}^ORudXE>C}LmrTnvXfx=XE|I(q3S$42`2cQP@N;tY$7oUMt`28JqW}^xUb-e zOfdcn9N)vB1*FX`nBt4V0ulTg?NzL3CJ@Z}C}$OCw7x{3u-V&EHsD~c$2pe-!ll9Y-(dU`94`>KG{n{$jDC`%JqUWXw7Uf}Jk1$o6l`8% z2hzL^F_`KZP9-)MZ$FebFTNQDvwfYjiOq}eg<#yc)osEDj!+Ksf7T`63TFTGAGZH_ z0N7(<27EDD4?_N#BbhYB8^Ve-I5R=mzfdgH?RtFpeKEx_Tq1 z`@eFukVk{HZ1`kVZ#Y5Nzj3SwKyXcW+%V(*y8sISDviG(`w8m!O`$ZGhgFckpR_C$ z1pWsH_Yl~#xiud(;m*=MebM-F{moYfo=gzoon|>`Er2Si* zL4qt6hnH{3s=aDgu(;~nmkX}Il7B}?stuJl+v0WD(Uxvnvlmyq&9%r_g_7XcW*gv) z^hzH7n+pDhGJRs9UWf0#9r)&l-S|x8v70<^R(tQ2%i$ANqiM8vp_;?%{=J66=$lU+ qisWGGI1(@LH`oWxc-1+g@+WME?9(t@ULogCi}5#qcV*;l`1>zN$X7!E literal 0 HcmV?d00001 diff --git a/validator/tests/pb/main.PocketRoses.desc b/validator/tests/pb/main.PocketRoses.desc new file mode 100644 index 0000000000000000000000000000000000000000..b70cadff95d104f190d04b9e3d92619d39965022 GIT binary patch literal 14921 zcmc&*TW}=TS!Q%u&76@&t(JCoEMIml-{iHe4e~W(NYG`Z)kc?bkL0zTqNZ9iN29h{ z-IMN~mF40ADuGmrYk;aG#xY4KVhGo82_(Gm63A1k!ZQz0q>5Vr19?alFMR*G^z>Xz z&py~})mEub|KHdD`Okm;^Pm5mVc#mTt4-f;y8L=8@FV}QeRRFS!+PMfB0pFXZRWI; zkWY|U*kLmpj?33$!77i;=h)a08jG2$ql@|F2bX$4OWlYHea#Yxh3}5B*#U1&lZ|=y zDKTaibC&qqEV7A~T|cp#yf`A7^`m(oV-4QoUW0q}^WrG9$XSUN^D#ElY9G2zy_OJT z5F57)`C>hWn~$*RGj5+GMe{lKG4OUXX8iIOE?&L z@{l%=m~JD=krKz?mQHxZ1?Kc*>5P zntk4OzzPAU`2rKmp5=rROQ}7x6ijw(O0&p*J;36InuuH!UUJr?mfA%$n}3}Zy3J$G zvGFjngGdCraZ5g!1{*~%6H#v5qCd?a>vVWjbok*ub-S5+`#t|Go9gPou%BM|33hQH zwfPd8YkQ6t@t_rO@>n_hi~lGCNWae=B&DT-)@&DrY`m7s{?ml;u1eu#~UAU`e`t_{aP z)6o(*^KOF=ut(+S=VTaxv$owRcc4Sj@0fu2xqz%SJwySbcfF zTs0NNIwRCowt7m=B<62erkkW z97sM;(R&$lyjDAsDV5wiMO<)rb#-YhH{No8m1b;Qj+#VbkSLcLxV zZ&$=i^BSA+4_~cIm#l&3$a$^!AP_lgnqCNptcYgwQILnncF+<@O$c}A#fPM*Y^U5t zG}Dv_&zz%3Gd?23@}f<#Ei!{lA?AV>TNGjiv?srdgp4F=Fqf zKH3dCvJ=ve3u&@DVupCxK|#-;eRv*w))P`sYSX^;o+aH2B{rFKd^5+S>mwsUqP4cS zUanQQUMV9PL2kCawO_7T2fO=QJ7r@unXrFzgcZ8?UgnRm%dnLwl!QF0ojHM+i>J2S z_QauWPD!DpbPF<=X%I2D*%i-6G(^m>g9i4ExzGy{CN+ihnB^YNuPWir%Cn+G z&2G=7SRVtEo{N0>)Na9bqu^X*+*vD&hB7_BKO3LF9c7bZTS9|^nhI@V>a=4JTgAfi z1AS{yQhI5PR<6pv_^xm0$;W`@^_A(h$7Bhax%(Ahy zJ!>8A4}X_-tW~zkYnTBGPqPcs2sAZfGXNwX)eb~V9C~}Ovs$){k>oT9G25ufp-1;U zo7c&Yej~&3i3FOqjkfFhXEob(5Spb^FwwL^EyE7l`=b0?8D_*evNl`ybf#2i;B8X2%G9kQ+r1DUA6ldn{gWawB@5fTtBb5{5C2n3nEbTmjk=L zu(Z{|Z4<0CyR}~4sqF2Sch_F79qfK&ckkA&WhCf@*n2qDE6nIs%Dl`5sfF1*%cght zuNjv=Mg#rH$nLdSjH$4k&UVbj#BWxi5aAFLDpSEKycaL1j=KejwX{ zmAuF~a*(piZMNL0On2JFw$6N8YrcKJI zW#~7tG%}QikE0Z>RG{@DW94O=B&1|ZChAg4s#i@~dD$jKaKvIan*n`R6UnVdA#N6e z^EX*m+kr}09&Cc-NR&%QkP~L9fs8~Mo)gwY5lx(7j9eXA%vyOTj7ygbZzD13K0d(q zBOEo?R{WjZHUXX?Of8J5+}SYpRoc62Q0##cv-j3u6_9oeFX7>iRU z*-p=t#k$;Xh<%NJdWsPaMez~|uWDaY&2)+t1-9dM$PaaOt{#BdV2Wbq@H*U5L-mmgzKG@ac99cN>LgieW3 zZ1M=z6_i2TLFy$+5yj7auX_|XC33}eO9$+7*CgGdn+l#400Lu<>iCGzHw49(6-6NdQ{9Mg(%t04ki4zCp&&$n0X;-U zdORG%Zz+bn#t;Rf)~Ow!isTOE<-e^sCS#DYNZX5BhOo$2v_%pyBEr-|nS+w6J7N1B z#b!$Ej_waJVx&V9GKZPLzpH4n0zlxG*pxVSN}q#{Q&68j%I0Hp>N^r4 zM!Gcw^H&wKj`(p_8}8UGB7cb$HF?`Z`PFZF8282y)PJO?^-vuo;KYpEIdQI1bFd3U zw%wn3B-gAzR*cgzZcD&QWmXW0(6BD~CyHpQgCdO(|Bz*28!$}#`%}fi6od#6IH=e~ z*})J7`kG?MYmB1M3C0iEVS4OIhb7{vraMYpDQYzgjoqF#b#AP6+0z6 zb&2}AVk;zIq+23Gq`|7w{$YrIexpaZs>Tv$BL8W7C;WUU@B9nJsI%Aui6p+83=Sqd z0|yu)pECOo5O=z60TqAh`!by>D5OfKO55b*l1oRqbh3{tGOdOVN~H}p)s^t1Q++~F zO(yf5($lzBiR2|6{?iIB#7jTQvN~x=hyIL$#t?$*ge4vRNe$N!f)8)Pzx-KBm{D8T z5Uf}eDpN`S_@~szHKOz^8y9&>I`roiRLUa{$S1OsboehQcoIdbtL!A5;1{*(3PEPm ziAg&8mlQgNASU9xLM1Zk_)jZ*2SXM}EOzM>zpO2gK+!bnO<>ZQenl}&_v9}$nqs9$ zr}$MxA>~Pp-i#of<1<=~o`e8dnc1HWr1O1N@y$qZA{i*%VtTRdRIEfMkk0x!#j5vc zU5P+xzq6zyvw(EkHx#X2Rgy^nmP^)IfYZ6&R9p!VO%1jFrsF@a@ESo=LodDQ=(iL) zhLC3`R=0G9FDiy43X7Lsfok!Bm`?R2MWq*)cs)!mUTQH+XZsDsrWY@@7Q(n$ukGT3 zBg$d@*SeCYg2jLSAG!X;0IV_N95*H#X~=(3NGXkY!(@?$MkWpWuL6s@T?f)35LKQO zwZGR*KoC>{Cg=iVWH-}3|8EMd<;h^DKCZ0V%`gr7?+P0O2wbECKEvcjRUjm%9v^?fNiua91Tji%IWA)z( zp2W~-pPfW4U)&Z>)BgL4Apuz}4=&%bO@Gs`P;oVUWg)!+%l@XoF44%H1&+A3?7)Lm zMRx4ecD(sJE8{MF24|A{F<&JhKJ!5~b<6QMrJkJ1XX3zq(&}zB7jUS2>~j|h-YSO> z9llOlU2W!*EMM_)ULRQ~p2>58{PN5aX}XknVI`$XWAA+7N@n5P<6T(uD$7^vcCgwG ztC8OlD&?$X6REvwH<}z;wOXkA35`ar?nd(-mRq--@Vx5c76Ap5QLED+I@LZzCW8J~ z?K5%TdK8^Xv4-szTwd`{ zFgElH0az>1L|3+NIZcdsgX69Oy^f!0*w&rfK7P@%VLL&Q?uQlhuq9qtNhx!YO>ekP z^EkqJ7Pecseuv+%j4n=Cz0LG#@)!%AQ=Aea@iYArYTG}GUTE6^F0K^tcG60;P{;P| z*Bqrqaasr@o6Lvt8wGW)vD&6>74EH(8a=I~?`q)iBLpSBY9IPILYon6z0IUAsuWdR z)jBECjWn1_Ka<1k@(9O^JaF4E;lszF^CZiz`*o_BaVQQET!%W5darUf!ew>( zGHzSqmOB30Z-*zipbmnyW2Z&kqDCAi;yyYF`gUZ@h}ZZ9Rb-f?pw;&5GyB|_rH|p_ zCVn^(oEvj=E572pI6$sDu<1n-Rr_e;5!QVRO+&zSA`e(*H^wArzMayY%<6d#c443(!F@X0GGX)~!3jMVU zvl>^0_O9P<823}-4w-C$K70#>4jvf~kU+KF#E?Ho&1(n~PG~$t!t3qm+<2Hi0@w)( zz9-yxg#2RPZW)Utfh&IJ#-r3d3@2*qk#S9W25uuAVc|6%BPptL8IOw>h(!$_wN>K@ zVLm&;9o{fBmgv*)6HH*^x=`a7(aJSGK-4Q?%fW~mKTHtIZ$oW}Et4WQ>{H`O>cJ}2 zw2i0ePtbt>>1&_Pu*qcXBdRLhhjT-CBdB1iGn$C-N4(l_eRMs7OG1?mgs3KYB(&cT z@R2cMt{^%cW4aLb#QTg|@n_xELf HfdBssb0h%R literal 0 HcmV?d00001 diff --git a/validator/tests/pb/main.PuddingMilkshake.desc b/validator/tests/pb/main.PuddingMilkshake.desc new file mode 100644 index 0000000000000000000000000000000000000000..3db5ee8225ab0afb7c59549851e53e1a70d8c434 GIT binary patch literal 17558 zcmc&*Ymg(?RYvpJ8C_{KJ-xGQdHt4O>vcRECVnJiNEm4}v$Gk^$SsZ6c8XH{>3Uf=Wm#MR-$15*+725kr8G@CYRQfIor!f=cn1A3RdUD?ot!NELth&b_x= zt;Ztyhs{=P)#&s&-#z!-bIv{Y#lE@4?r*zp+vZn$o*TF);px>D_nV&83tVqQ(DYTw zA%B6RP+@Dkmd$r!#u^Xwce9045c8?~=PzeAAKDlZ+8CCoQfr2gD13W?ouBYk*V%$& zb_p?cIca(W3`yb^H7w_GQ` zBtRY>1KG8>-5P}$$mvhBCASvoKVW__P&z8iW?-e|fl-msig zH=h;&_l*J61Y-$&`(QJ2QZV|hUu5U}z7v?Qy<)UU$V&au@I%_q9pvuyE{dI<+3 zPoB{RQfAnQawKL1NEmUOWgPAYyd^z?d^xi@-KUro8h0t_lyBChUSO-SKQuhkLC8tp zygD`_BWB$wM}B0Gn30Qd#BY6vG1uYlDZ;C1!%rrg`G{CXkd3qu+<~0_o`I_^-NsWY zGBn4$?U>~}PVoX0%bul$5*t%{W+*Y)v6To#_Ul0w6B;6OQF=)m*@){9+3eD*EH`W( zeVr}(f$0Sz(JdPChpw@CBr}oa77hAS|B*q5=S7Df8B=!{d9>e`o?$CP9hkN0!jG{F z6QT7N*m~$#PQbmM$H`-5^ymLkCXjKTJ5F*-1&#AV5R!N$z5Gv0+E3u$T;UVv*!rZz zGckM-{z!@^+`}A@LULEXkYpEa^Mu<-(W%S1&Bw=VH>rh<0}?T$r2byEAd>u|K)5m+ z0)?X?NXljdp>u{_VKQ%);XxudIkRv^la8?nY zCz^gA%gCs*FbBROvge{918tuu)cni7>qM?8nkRy2{+WSu$;5rn}YD2a>)upX1VbSf*?kf)PHm=r^{*Y>4_SQ zG`>NQL#fe-Q~7OjJI#fox&2wTHU>0vj{Q)I++!EM%B{zlvEL)N9=7VspKRsb)8V|$+~q+(~r%u3lqU7 zDtZrNmeUIZSyIWhLt0Qo@}lG!2Jv^&1Z!kzX-(VW zPSEfJkDFb~X`_%zU0&W=JT+~f8>{kjE&56lqB!vq5;R>5B;@Byb~4%K#J180QQ(rq^~FO1b}HbkGX zuNoCiXP0?AasUprtJX{zUD=D~^6coK26-A4^{&; zak(o=IUOvcf)9%Yx5t|p(^meDBs;CU)d&45+`rl2j(Gx)F+Kd@=kH50=bFv3__{4V z>Q~sBd-8Hqx?}@5r`9X^haizQR_TLq$f_Xgj{)58m|jm5H9p*(=O31=l1{aaAX7;A zx2)43LVQ%PWdu#3U1l1YLc~JEc3H6HKu@-df{ZvRU}U3@3AQYVgBG7;7l{e^(QKK4 znc#kh;3m5xXNZpjDd_2iC;iy7o{)MHE%L3mtmrOmv24=u^)!>NkBS6^R_SP`+^Frp zR7Np^+U#JzUTzr2hxPqRS({H5?BAGUx#6{!{zL2z*h*}a_&jLbvOE!sT~jW5;?%aT zxUi*k13ZW{u;>TuKF38iM9wh17S@f?7FEM+BCLD_HKp_z?S+(oxs*cGQK`F&(2TS08Hp-9%WsHHG;xM8cmLewWg}zx@z!PG4HPEB#|K!REZZ(> zSUUBPXIGcU#%5S#<3RBnvE-${OtIyNj45`ZX9gVsw^*FhQik|VbX1EDax6}rB%OX! z6>D>|CDt`=w~G<>#pWdnUPUh{GM!=to@v=byfmz7LyJDd%vU$(x_*ROoiHe`9`}l07!kFneZjdzBxGRszZEVLvMgrhcm$AW@+nNnC zlsw`Q3r;aZVQnr+v}B_lmJ{B#9JS*se_+NI8|Y*lxq)8%0M=w~cXV`%+Mq-fhjae5 z)Jv!XqZ0G`snqA^=J%?_FV0=s6KACxf(<938wNkMd6RsHec^HTMB55F;mHOXx!QKy z?%+(7e)Z_cQ_$79Dpre%dTHt*?A9SWub5Gg;;c}vi}e3OK7 z0w#@9CWw_{sjV$+sDnahOj8iPsT7I%x1ML~BrB3vQj_UBY58w`NQUG27$BijViemv z!0rmRLF`HDCAK2+pZw17DDFwgZQI^DW_JvYqV$RxFh8X**T+1AV5=;m(+(7J4W^sv zdj6`y)D>nlq=a~#t=;6_iR-KFpBdm@Q*f(FQ0xa0)_d6UDHi%OKzv$3ED=A6ZnJFL zm0g-a{BcsH(}P#Mi7wK+NPROvd_h6v5@MFTt zpd#(ehVUB-Arr|E1hQ7w^stL$&*bI5sW7s!kg`bV#FQB<^2Nv^2{8gf=wX|KimNw+ z_FD=~m$H?pKZJ;p_OX#UO9cP6f>{;W<~b11A`QOeC~ z3stO?%&Ak<*A!YVAx63-DnuHrCaoW4=;zl*l&eLugqf&+Lg$S4XY$TJQHW6$dn_dh z?>d8n3D3X*hN!3X@dL!l&@G_+Pkv99Q#mE6%Bigba&n0kWx45KA5vhE8c|Z(+GQ(4 z1XDNc}dklCWbWV-avE9qDSIT7a-s*ss3{|icfAVU^NOm@>DelfB@LW;s@w1An8 z^h*k9b)&$9hd+C4?w6)ciYL z{?kf6lAzFtrrzn&uPf;x>)1;)T^Piy|)lyt;T2J5=GvTC;dX|n&W zWMcsmZkm2DOTYgk5{?8&Y5E)0&$NcW8!4^$5d~@bQ*2936aG&nJdmK4{h)<=EmKG9 zzl89z5%DAbv3cKWg{nTCGFJbs#FH{K+PBVvo-1w(Pt*Q;3LzmF=WZSdQs5 z`Sq~nisSms=Gq3~<0VY|!ANr9g4K!v1{}0-&kkGi9&l!JRf<)@mSMG8HaCX3widqo z+51w3PvcxSfsFfItY+F~>xS#$`U0JbW;Qj6G@u&^9=*V_M%cyUidxU|tUzqE&l^KD zeUq&p<1&*_k?PVK&M$DSOYFSQ8xy}N{r-9}sSq_*;ieyYe9tq{RZ=i(4AF2EG4shitt>{^XJU%dhmfhdYJ1?nH-Xxy?(mg-IO7 zL^)iuS~hU?$Sbz8mN3#VA{ z3%VDV*;M^celdpl^bMw0J**TB-o+7f2|3+!ZS{a>!WXjvql5EYEaY$mOTkC4%qD&#w=!@ljxF|z<$2;B6E!qU)E{9v zbP8u(-W~-40-9WU!5E!j~3@$D90^&SLvT4_Vb0jjb3-5<$|%uA@F4IMJ;w zvVMX>c`J@Tc?=rotpVLg@aXTOyyg3rSv37KPO&_Xh`3Aku!`%efz>RU?GpFsX?XWVOcEPg8D ze;i{nGlD1cJhzb}inOII-r(gnl~3P5G84(iZ@PF;l4K;8E_zn0&8xfz&l4}Ia5X(i zBM;gYLv1;A)5B&7Zo$%Mj!@}=WzDrYW)g%rF+@LM=GBVT#&aotfFN}!Y0K!oAT2%e z(HP|>-?%}$>?PO6B!l3lp-+;iBM0WKKKxM3Lx^gMg&~@LHy(Vzl{=WkqTn46$h)fC z^pH#8%_?XUltPCsMvR(5G-}-G229+1z zaZ*1*F7PpPp~1{H{Gu41Aalv!$VGGV;DeE5q7Lnv%>Y4#3MY!d0j2QTJWI!w!AS57 zP5QS99+=z+om(c|3${YK|0U94l19Z$5vc<&eof1#)I)KhikZX*BgsXF@)gWcG8|V7 z`2(|#R>CECIx#O=UeIZobWxD}Y>ZCca1FOTZ();n*ToA1d1GOSMm+Tp(b`u90zEr} z>nCYsLL|>_HAHX(DmW4p{YjSHcYNGgui-$<<03HPaVa~m_PhK57l(}@E=t_jT)$@p zru{r-MpuQ)FtPCCi6VnsciTCm08qDH=Zyh@0Bap?pVmT{8n^K=6m5dO@g|HPZEnK#8$} zt!<>&Qs@OJzs3B4#5hd7vdgl`tUyHT0 zW!MtdC%q02w1q1rj6s|P2xZ%IyCzU@ZM5Rz`U35<18RxQm%<*9fLV9B4;=heBgBO( zSJ{P$6B{*EAq=ktM1b$wh#W0-Qk&mh#?cDHAXyJX-+b9J{byFk}{&@jZSG>@TW z>a2T9z+EL%oV*rYe6c;yGoU8{|?gM8pu@U;HUnY%nhxz`SHSE(SVF ziXDoFx3DhxEaDNbCBYNb9e5~-Us2M;8%Z?2jg*WkTw4?UqMEy@>GUMC+QEVz)kd$Q zofjivooMUyi1J2?->l@6*+Wo?O zO;qF<%m=8QL$immERbZ?4%^y;LP2geQB`UW5eJI06Rtf>nv~2ydxZX|;EzXz_IN4o zYnMrnUDU`u8!K$>G1Ve0rClN9YpB?@$B8PJ4B9*BZw#*G`PvggC-bI7@wg#C>8gr$ zl_Ynes`gGAg>Adn!PDkI`$1w6^SZW4FgqM~GP(9H!44g?CuuYgIe0>hS8Sg4)RpI$ zHk!Ms(H$3<7R3u%x*m4PzsbGKP(+T1{%a_=Fy%|<+_h(Z`2Xd< Hzc=;2t_UhW literal 0 HcmV?d00001 diff --git a/validator/tests/pb/main.SrcTree.desc b/validator/tests/pb/main.SrcTree.desc new file mode 100644 index 0000000000000000000000000000000000000000..4c6831632133013aa2b54d4e457cf564c0dbe0a3 GIT binary patch literal 13217 zcmc&*Yj7LY6|Q8IA3K_Qa7Ba?W zQ!4#i$&t~vZk*NYW-d;L#iMdHAvLpYS~b%$_Hsj@MM{-Ml$*$8yR+SF7@8zTKrEqV z*^4C~uG~N-&YSvKSu{;WGdL^>E|Rg9>AIkg=Iyo3+%Wz6!-22w+KPR7nxi%Wq|B3) zX?0qRAwd~}_A7xzKT8r}oMO~9opTMt%#Bcj8v-g++53JDfm0SiiwmA50vsvq>=;D;y$*A4-fWgfrVSUnbR}P?PniVFa3Sp&8vaa263{x}gnyEFc9Xpqz z1cw3yRVug$a%B)xGYlx6mHlMI-LpLXLT-$D2!G1IG(sl&G#}_<$4O!bzY-h_JvpKc z7^c^VY$YNRNJg9|Y0Gpyv&K9EeK|cB?o)(;f-c3J@={&uB$@F2L34BqwjA@#qk$Fa zGi#wF{76NZn(=w)v$8~pZJG8CY%ik;elpn16%^@XR#OzX1UTi+uB(k+#8cMT)(m*t z7Rfj!?iVmI`?3^Oq7eFJDu=NT8y76>yRIevfJP%1hL@B&CZyIOn$0{&GQH+erb)u} zbjPECE}^mqB};}Nn9(SgQ1MUYgWV4vq96S3fV#cR{og%vjEwhuK-8)8A0hh&QY$CP zbjNB~p6Rq56Frvg{@fo~015ismMqN_RHu3<*x->=@=v4LkHUZP{39b|dQjjQxP4*! zLr~l{9moMO2=4p|f^4FxZ<|dB(XrXg+)V-74Vs~_iV&3{mAl9=4e|-fa3mT7Zby~k zlq*OI@ys_yfFz|RaRB{7nITEKO=_k{ZT_v^iI>$&gspL3E>&RV|?&l98(UF zG}~1T$blDV^h~I1qm^+4r$6J`mT*lvJr2<6k9D1k1@5Z`e_p>&k#{DTu>sxEtj50~a>5SE7R0|{~`i4N$tj|(qER#J0Afe%umG${mu$@1qmhRaqtEDBdpER~nn%{)6p}aw+2gS*OJ40Gxtew(x!6l|#fhGP! zoJahKxo#EsPf5g}|GPB?{15H2|q2G-8 z=VE04;7W0z4tJ4}mg()BC7#al$s;>3{l4&Xe-)K6T(bQd+)+`wPQ>udRD)?$qyisl=QxwsHJk)46O%2a` zZjQ*BO`^ma7eI|%sP?X+u)1lPj_#S7`9KH0ThpzYwyV3lxoIR=i05MJK@?o!awRG@ zZ`JMwA*D$6Qx>ox7*I2IP2;TA@pkUWT_Mj;H3YkW%p!_xfrL^eV>TQ(T8#%mXWOBv zF*6qoO_Bu*Xh{UD!7-zlsBV->OKMuMEZdF(4pp~(1E;CgQgvIH7mQ^X8vSNCa^iZy z+04ylWo0J~gMMto;5*KR{jjfVEEzZ{1L;@xLt)1DUT{W522Qs3`eDb&bbGfQ#2t}w z3W)RrucrrY$24F~YqkKpu@_IK<@79PMa1rF1WjyyPk=%ajb3VFm4I=d}GHG zj5koRG#%q?vm}eApnE}x%~G)pjLY*vL57mJVc4WMQn4`@?9O;A*^fdHAN88<>5}x# zR2uCLF@wJBqCiilv%Tkg)-6m=9235E*^2Ibk&MZXucQcbeW*yF&|0i4m9%R4bP0+P zsLfW(nwsdyv@k84*mx7kk zeINrn4Mdbxa>%kF8bZv_of@1QMT<()4cJyLY-$YYKFgJsUFE{v%rnnLm0r)qSnmU6 z&xLxqrMJO#J!g+r+(|VF10{TZXAVBU9U^1&Sb~cJJrz8}7&lAavv4+pV>QlA4Xn+r)+4hD{E!x|eNV%agtwBWbCC z#$%)2Y})5Fz1e`!%$$PIp?MsMx@hl+@=wM{)~}I;*?PA#mO2Bs^E;y8<1v!q$$YSS z*Zg1A`(2!j_mru9t9w!H9w3vAn%QdG&>%MUw5E9uIw^S?D1z<4o*4?|E^ZZJ#i{aA zX>FsjSz2E_rERT$XuWdZx|)^fsn})Q>Ki26uat6t3{ner^Awp_uRzv=)K^+wE-h|W zS!=`p2xx7{`|GhGGBu#d1)-bWX0UVdErG~A08_xKU;{dX{PF{;9k7z+HFg?Mva@40 zJE=@`$LX<7xtSyAHeY>*|edC#aj<{ zcQqSWn_fs^mCLI>a^^QNk`%*`Vu#zhw@c{~3-N4BrO!AH)uIJ47H*x`I6h+)+cfnW zJ=fT+7Ob#Ko0m}V^6^DJjJH^xqc@s8vbd}%H7j2D!bNgW@YbNtgfmkOu2=X3csY?$ z4{(7c{$617uf@nDt@yFJ_wQEL2+=Le_GEJfT{(a&%=;i!BA96r(tUGLvq6SpS3LB< zNi!6j&Djth*|5X1ZPptW@A$F@$k?=jj>cgP^o9H3OlG(GS9c-XEfMMEoO^fdG}M8j z#C$szdnP`#va#@dd}f8-l@_QN+=LcXbEjz<=sV=uo5(HohPT_vrAl-l^hK z8?QX+IKNkg(;^?83B80Zu9GP)3e2oU%q%RnMN!PUa}_PowVF*53%hyBf% zJ*gFud-RRoRa{}n`DU}YMGo|=BJ+v}oR4wN>40Y-?FJF!*nxsr1L-DQ&#!S#g>#A} zMaC0k@|@{x+b(baM4)?|(@k(7?FS*(og}#f2mJ^XPjHG+lt<`18LQjulOn*M zaEi9w?lduN>7i@)bwMF8oZ=G9`jns$7^L_BUiLKi;KC<@5>ImmxD28YBsdPY{n%iO z0RJY3Cn*5Iut!CFgwPj(;#p3Skzo8YJhoCG)W3T@F{YzC%_0FjPQlu<7E4#5L4yR1gRk;V2Hew2=jeTNi&4Z1y<`= zuD)|=R{Mdl8pHNjZIkThjM4%{`05{WPOi^Z*D3Iu?`o zaj^_MKScP>m;02f3M_I;^-sq-Ywktz&R=jwQN?aCB=Vgg;9%4<-~xlzQ%djxajoZ9 zK)H{-#mcD+NAhy2xQb5BxI~l-CwqvK2{lAeDlU`po`NTw>f@YhOs;o|x53XUp?C?0 ze}coQc=7!tDTs|kg-O2r4l~*!+dgq zC>|pTTBn3VKg*#^9_oO!RGoywKgZ!R3RUOTNjSmhh3XuEW)p=;IQk15?L#0Y!hHoV zWWw=ZZR zK^97b+qY!JUa>c@x$2(Ihj(Df^D#2+ItKjO%H)mM;g;U8W-hIJn?FrPtB$b=EXrY$ z=0D9?2d|`e^C?vxg8!dnl%0R@f)#)6K3>2%3!Fg}Z;QikK6NOzkbLv^SI6FlfByx& CvqVt< literal 0 HcmV?d00001 diff --git a/validator/tests/pb/main.TopsyTurvy.desc b/validator/tests/pb/main.TopsyTurvy.desc new file mode 100644 index 0000000000000000000000000000000000000000..2593a0d13bb502e9097ec96234df671be0164a33 GIT binary patch literal 13300 zcmc&*TW}lI8Lni@mX2guUOS0mAPEAB2}J3*KtO4szQ{(YZJCt~2~1~aEv@BEq+Ow1 zIWg0RcIai8-Y+u+3bfEEwDbnO&_ZAOLd#QUc<)0m%=AWE+VaquPG|c6=dwD|D&5UP zXr8?1{NH!}^Pm6x=Rf~Z$g2f%q;A{whH<>rwq1Lxvwgf~IMueNb5N=dHs zkt~@;qt;K+#VNOvQM=^=gOiQJ`Xpzs96-@9%1lNT!b*u`9J|x58d}w^8JcNr+t~yq zIP4>+P{9R|D}k7rW?b46p5^KnvMK5z{44j;2pR9we4vY+B(ZIrB{&#*a!4C6 zOs^5yN`xekj5tS|9RHY}}_=Qc7?@4K|NaqG>QArG+08ir+och6>Gumw_#pme&p2#}H9 z7LXZL#z=z7%$Lh6nYhPU*-%Ss%bA47xvZ8q*E7UpSS?m6bIZj{(vz4!vr(*MQXU1W z1w)K^LloCGS2Jm4f{f7-D@&*rNR0P2fuCb!!gux)?E?3h@i}QXwfDE*wqsLD1Q5)1xsx z>kmzm1@mZ01gyd}qY$gC7mJH(Qm`!9Z3P^vZhHn!QmZBEwlFUkt6J6QoZ-re>jif+ zC!3L#ov2pnWX&qyaSrThXW0*h5nFry5fvFY(c0^Wogh=Kot7VWRK_VF z(ht0jUbx#v71p$tJs^wYy_-vF;UizxeaZ`E#aIuw_U+_ zJrzsRHqJIfGH43A7lhah6-z_AJT4?;D2W?}4SE9=OF?6I#GA=}6oUAu*K}8xq;I0q zXm^Miw6lu>J=>kFJ$w=~J)rEl zkS{m&7Pzk4-lG|JT#Z9R5x?J_i_foyNQz!da8aP9f|r;o-WcdrF+F>Y?+lWq^9y)# z6-HPttTH5)M_`+rgDp!frt&XknT(uuC^sH8>46nIsETk+@~0}4JaMX`t(Dc)xfPYe zm4jrsp+C6Sd&beGu!aW)EVK2VEVSwJnLT%$#HhU#Lb$~;?@;1oc%iH=g8PHNGdpVQ zrQ!nYfZQ!)gc$+1hGzx?a^=@ZObp~$dw?)CnBP7ia^TFy} z{eM;O*HJRolcx5q?nSkGfJ~S*quH{dKwRC^8pbYEQgSp<_{)JkBjih6+zP@9lcmMt z>Uw#jxVCUc+gyA9TKV2JH6zhevCFvC*GZ;dDdhkeq!#SvNix1xhEorYzT(nSabcsv zN*mrJptK?Hug8YS3u$c>q)#}Lk^3t9_;OE z#@Jv7Q|S1bz<%Kjah8N&};Nw zV>g?y!VWE7Lc+`27kD$iV!3VIZ1l+DvL@7w=3m2Z|K) zUy;bu(V^w_`RAh3%k-@@PsQLRG_M-l4Wo*_L!P;j9IKn|PG>6*gB-8hb-VkfieD{! z@}%wjT@`MNymdP85w@^KCb=*qr0`bA?nTP~ERJPgc%3G<>I8@4(aG*Q1(odU;bU9V zXa_L9!Wo4!$jGkSM!T>;#;9%~xqi;MQV8-$mf_h6Cs^$`uHD4V9iY-LC`|%hnEZ%f9vy+m4eSfuxhPigm+<>I#%W8iUl6 zN)g#d-{@V%Wrmz74*0CIY z`_ioTJz+J5?XlVh+0PlJ1qw0i=Q$_WXS3@RIOqGxv}aE78wm$ix)p-?1r*R3ZseB`C&bUP7feB|Y$ndWo~8B^c@^Wr(;~ zRlGlhnCHuV%2fmwIi>ukW1TbhLV4#;Iitv8HyIN7P7!c0>KX8WLGvla|A4sK^DCh2 zhu>o9RGK4sI#pOfCudwD$_0}>#L0vjA}AG>$XHLp6HN6HPL-1Lox&~fvr0%_g5e+K za4KGSFNuq!B^dfK4)q`i7YR!+{Nn;HAP5g{!k>Kt6K1Hb3kaN8qdZdy9{gcGxIh$6 zkQmKVf}x+{P$my~KvK$1g5jU$a2bWF^Xw#;;4?yXjzF`C#3UH~S&sG~5EJ3Of+sS; z_|I{C7lRg%4!dBA&kGAkDBMQ<2~0547dX>+U;cutNl%JkiZ5~sCXZ_LX9U3MzXOK~Fc!?88 z^A5yds;4=XI9$B*P(Hl)VHnKzHO?juFMbw+apP8}0Y7kra+v>TUGl47_K*K&=bs0F zGbU!hFD7e2$Uku;lZJRhSdj)-CJ6gyiiNse7t$r5Rh|H~-{>Vk2vh<_@du2qUJn}n zFB~o8(O^v*ezL09ognOAIo1OpxT-sDn0fzAfCT`R#=jx^2^#oKp){9=U68;(X;~@= z{C5uSB5-8Kt-uCkx!?*c`47Ayx^~Oib35(bJzk3)ZtA8reQ5>U+zR}_6^S;G z2!0SW1Yh)JJ~^ArBVnF)tJn_jtivF;P0QEaenhIYBX^9%s5lm`15Vr19?alFMR*G^z>Xz z&py~})mEub|KHdD`Okm;^Pm5mVc#mTt4-f;y8L=8@FV}QeRRFS!+PMfB0pFXZRWI; zkWY|U*kLmpj?33$!77i;=h)a08jG2$ql@|F2bX$4OWlYHea#Yxh3}5B*#U1&lZ|=y zDKTaibC&qqEV7A~T|cp#yf`A7^`m(oV-4QoUW0q}^WrG9$XSUN^D#ElY9G2zy_OJT z5F57)`C>hWn~$*RGj5+GMe{lKG4OUXX8iIOE?&L z@{l%=m~JD=krKz?mQHxZ1?Kc*>5P zntk4OzzPAU`2rKmp5=rROQ}7x6ijw(O0&p*J;36InuuH!UUJr?mfA%$n}3}Zy3J$G zvGFjngGdCraZ5g!1{*~%6H#v5qCd?a>vVWjbok*ub-S5+`#t|Go9gPou%BM|33hQH zwfPd8YkQ6t@t_rO@>n_hi~lGCNWae=B&DT-)@&DrY`m7s{?ml;u1eu#~UAU`e`t_{aP z)6o(*^KOF=ut(+S=VTaxv$owRcc4Sj@0fu2xqz%SJwySbcfF zTs0NNIwRCowt7m=B<62erkkW z97sM;(R&$lyjDAsDV5wiMO<)rb#-YhH{No8m1b;Qj+#VbkSLcLxV zZ&$=i^BSA+4_~cIm#l&3$a$^!AP_lgnqCNptcYgwQILnncF+<@O$c}A#fPM*Y^U5t zG}Dv_&zz%3Gd?23@}f<#Ei!{lA?AV>TNGjiv?srdgp4F=Fqf zKH3dCvJ=ve3u&@DVupCxK|#-;eRv*w))P`sYSX^;o+aH2B{rFKd^5+S>mwsUqP4cS zUanQQUMV9PL2kCawO_7T2fO=QJ7r@unXrFzgcZ8?UgnRm%dnLwl!QF0ojHM+i>J2S z_QauWPD!DpbPF<=X%I2D*%i-6G(^m>g9i4ExzGy{CN+ihnB^YNuPWir%Cn+G z&2G=7SRVtEo{N0>)Na9bqu^X*+*vD&hB7_BKO3LF9c7bZTS9|^nhI@V>a=4JTgAfi z1AS{yQhI5PR<6pv_^xm0$;W`@^_A(h$7Bhax%(Ahy zJ!>8A4}X_-tW~zkYnTBGPqPcs2sAZfGXNwX)eb~V9C~}Ovs$){k>oT9G25ufp-1;U zo7c&Yej~&3i3FOqjkfFhXEob(5Spb^FwwL^EyE7l`=b0?8D_*evNl`ybf#2i;B8X2%G9kQ+r1DUA6ldn{gWawB@5fTtBb5{5C2n3nEbTmjk=L zu(Z{|Z4<0CyR}~4sqF2Sch_F79qfK&ckkA&WhCf@*n2qDE6nIs%Dl`5sfF1*%cght zuNjv=Mg#rH$nLdSjH$4k&UVbj#BWxi5aAFLDpSEKycaL1j=KejwX{ zmAuF~a*(piZMNL0On2JFw$6N8YrcKJI zW#~7tG%}QikE0Z>RG{@DW94O=B&1|ZChAg4s#i@~dD$jKaKvIan*n`R6UnVdA#N6e z^EX*m+kr}09&Cc-NR&%QkP~L9fs8~Mo)gwY5lx(7j9eXA%vyOTj7ygbZzD13K0d(q zBOEo?R{WjZHUXX?Of8J5+}SYpRoc62Q0##cv-j3u6_9oeFX7>iRU z*-p=t#k$;Xh<%NJdWsPaMez~|uWDaY&2)+t1-9dM$PaaOt{#BdV2Wbq@H*U5L-mmgzKG@ac99cN>LgieW3 zZ1M=z6_i2TLFy$+5yj7auX_|XC33}eO9$+7*CgGdn+l#400Lu<>iCGzHw49(6-6NdQ{9Mg(%t04ki4zCp&&$n0X;-U zdORG%Zz+bn#t;Rf)~Ow!isTOE<-e^sCS#DYNZX5BhOo$2v_%pyBEr-|nS+w6J7N1B z#b!$Ej_waJVx&V9GKZPLzpH4n0zlxG*pxVSN}q#{Q&68j%I0Hp>N^r4 zM!Gcw^H&wKj`(p_8}8UGB7cb$HF?`Z`PFZF8282y)PJO?^-vuo;KYpEIdQI1bFd3U zw%wn3B-gAzR*cgzZcD&QWmXW0(6BD~CyHpQgCdO(|Bz*28!$}#`%}fi6od#6IH=e~ z*})J7`kG?MYmB1M3C0iEVS4OIhb7{vraMYpDQYzgjoqF#b#AP6+0z6 zb&2}AVk;zIq+23Gq`|7w{$YrIexpaZs>Tv$BL8W7C;WUU@B9nJsI%Aui6p+83=Sqd z0|yu)pECOo5O=z60TqAh`!by>D5OfKO55b*l1oRqbh3{tGOdOVN~H}p)s^t1Q++~F zO(yf5($lzBiR2|6{?iIB#7jTQvN~x=hyIL$#t?$*ge4vRNe$N!f)8)Pzx-KBm{D8T z5Uf}eDpN`S_@~szHKOz^8y9&>I`roiRLUa{$S1OsboehQcoIdbtL!A5;1{*(3PEPm ziAg&8mlQgNASU9xLM1Zk_)jZ*2SXM}EOzM>zpO2gK+!bnO<>ZQenl}&_v9}$nqs9$ zr}$MxA>~Pp-i#of<1<=~o`e8dnc1HWr1O1N@y$qZA{i*%VtTRdRIEfMkk0x!#j5vc zU5P+xzq6zyvw(EkHx#X2Rgy^nmP^)IfYZ6&R9p!VO%1jFrsF@a@ESo=LodDQ=(iL) zhLC3`R=0G9FDiy43X7Lsfok!Bm`?R2MWq*)cs)!mUTQH+XZsDsrWY@@7Q(n$ukGT3 zBg$d@*SeCYg2jLSAG!X;0IV_N95*H#X~=(3NGXkY!(@?$MkWpWuL6s@T?f)35LKQO zwZGR*KoC>{Cg=iVWH-}3|8EMd<;h^DKCZ0V%`gr7?+P0O2wbECKEvcjRUjm%9v^?fNiua91Tji%IWA)z( zp2W~-pPfW4U)&Z>)BgL4Apuz}4=&%bO@Gs`P;oVUWg)!+%l@XoF44%H1&+A3?7)Lm zMRx4ecD(sJE8{MF24|A{F<&JhKJ!5~b<6QMrJkJ1XX3zq(&}zB7jUS2>~j|h-YSO> z9llOlU2W!*EMM_)ULRQ~p2>58{PN5aX}XknVI`$XWAA+7N@n5P<6T(uD$7^vcCgwG ztC8OlD&?$X6REvwH<}z;wOXkA35`ar?nd(-mRq--@Vx5c76Ap5QLED+I@LZzCW8J~ z?K5%TdK8^Xv4-szTwd`{ zFgElH0az>1L|3+NIZcdsgX69Oy^f!0*w&rfK7P@%VLL&Q?uQlhuq9qtNhx!YO>ekP z^EkqJ7Pecseuv+%j4n=Cz0LG#@)!%AQ=Aea@iYArYTG}GUTE6^F0K^tcG60;P{;P| z*Bqrqaasr@o6Lvt8wGW)vD&6>74EH(8a=I~?`q)iBLpSBY9IPILYon6z0IUAsuWdR z)jBECjWn1_Ka<1k@(9O^JaF4E;lszF^CZiz`*o_BaVQQET!%W5darUf!ew>( zGHzSqmOB30Z-*zipbmnyW2Z&kqDCAi;yyYF`gUZ@h}ZZ9Rb-f?pw;&5GyB|_rH|p_ zCVn^(oEvj=E572pI6$sDu<1n-Rr_e;5!QVRO+&zSA`e(*H^wArzMayY%<6d#c443(!F@X0GGX)~!3jMVU zvl>^0_O9P<823}-4w-C$K70#>4jvf~kU+KF#E?Ho&1(n~PG~$t!t3qm+<2Hi0@w)( zz9-yxg#2RPZW)Utfh&IJ#-r3d3@2*qk#S9W25uuAVc|6%BPptL8IOw>h(!$_wN>K@ zVLm&;9o{fBmgv*)6HH*^x=`a7(aJSGK-4Q?%fW~mKTHtIZ$oW}Et4WQ>{H`O>cJ}2 zw2i0ePtbt>>1&_Pu*qcXBdRLhhjT-CBdB1iGn$C-N4(l_eRMs7OG1?mgs3KYB(&cT z@R2cMt{^%cW4aLb#QTg|@n_xELf HfdBssb0h%R literal 0 HcmV?d00001 diff --git a/validator/tests/xml/ABStarAAA/invalid.xml b/validator/tests/xml/ABStarAAA/invalid.xml new file mode 100644 index 0000000..d485358 --- /dev/null +++ b/validator/tests/xml/ABStarAAA/invalid.xml @@ -0,0 +1,5 @@ + + c + a + b + \ No newline at end of file diff --git a/validator/tests/xml/ABStarAAA/validator.json b/validator/tests/xml/ABStarAAA/validator.json new file mode 100644 index 0000000..e9bb0ec --- /dev/null +++ b/validator/tests/xml/ABStarAAA/validator.json @@ -0,0 +1,99 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "ABStar" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/ABStarAAA/validator.txt b/validator/tests/xml/ABStarAAA/validator.txt new file mode 100644 index 0000000..94f0686 --- /dev/null +++ b/validator/tests/xml/ABStarAAA/validator.txt @@ -0,0 +1 @@ +ABStar:{A:=="a";B:=="b";*} \ No newline at end of file diff --git a/validator/tests/xml/ABStarAAA/validator.xml b/validator/tests/xml/ABStarAAA/validator.xml new file mode 100644 index 0000000..87b44a5 --- /dev/null +++ b/validator/tests/xml/ABStarAAA/validator.xml @@ -0,0 +1,104 @@ + + + + + + ABStar + + + + + : + + + + + { + + + + + + A + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + ; + + + + + + + + B + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + ; + + + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/ABStarABC/valid.xml b/validator/tests/xml/ABStarABC/valid.xml new file mode 100644 index 0000000..4e8649b --- /dev/null +++ b/validator/tests/xml/ABStarABC/valid.xml @@ -0,0 +1,5 @@ + + a + b + c + \ No newline at end of file diff --git a/validator/tests/xml/ABStarABC/validator.json b/validator/tests/xml/ABStarABC/validator.json new file mode 100644 index 0000000..e9bb0ec --- /dev/null +++ b/validator/tests/xml/ABStarABC/validator.json @@ -0,0 +1,99 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "ABStar" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/ABStarABC/validator.txt b/validator/tests/xml/ABStarABC/validator.txt new file mode 100644 index 0000000..94f0686 --- /dev/null +++ b/validator/tests/xml/ABStarABC/validator.txt @@ -0,0 +1 @@ +ABStar:{A:=="a";B:=="b";*} \ No newline at end of file diff --git a/validator/tests/xml/ABStarABC/validator.xml b/validator/tests/xml/ABStarABC/validator.xml new file mode 100644 index 0000000..87b44a5 --- /dev/null +++ b/validator/tests/xml/ABStarABC/validator.xml @@ -0,0 +1,104 @@ + + + + + + ABStar + + + + + : + + + + + { + + + + + + A + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + ; + + + + + + + + B + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + ; + + + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/ABStarBB/invalid.xml b/validator/tests/xml/ABStarBB/invalid.xml new file mode 100644 index 0000000..466b680 --- /dev/null +++ b/validator/tests/xml/ABStarBB/invalid.xml @@ -0,0 +1,4 @@ + + b + b + \ No newline at end of file diff --git a/validator/tests/xml/ABStarBB/validator.json b/validator/tests/xml/ABStarBB/validator.json new file mode 100644 index 0000000..e9bb0ec --- /dev/null +++ b/validator/tests/xml/ABStarBB/validator.json @@ -0,0 +1,99 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "ABStar" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/ABStarBB/validator.txt b/validator/tests/xml/ABStarBB/validator.txt new file mode 100644 index 0000000..94f0686 --- /dev/null +++ b/validator/tests/xml/ABStarBB/validator.txt @@ -0,0 +1 @@ +ABStar:{A:=="a";B:=="b";*} \ No newline at end of file diff --git a/validator/tests/xml/ABStarBB/validator.xml b/validator/tests/xml/ABStarBB/validator.xml new file mode 100644 index 0000000..87b44a5 --- /dev/null +++ b/validator/tests/xml/ABStarBB/validator.xml @@ -0,0 +1,104 @@ + + + + + + ABStar + + + + + : + + + + + { + + + + + + A + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + ; + + + + + + + + B + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + ; + + + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBAAA/valid.xml b/validator/tests/xml/ABStarBBAAA/valid.xml new file mode 100644 index 0000000..af396b9 --- /dev/null +++ b/validator/tests/xml/ABStarBBAAA/valid.xml @@ -0,0 +1,7 @@ + + b + b + c + a + b + \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBAAA/validator.json b/validator/tests/xml/ABStarBBAAA/validator.json new file mode 100644 index 0000000..e9bb0ec --- /dev/null +++ b/validator/tests/xml/ABStarBBAAA/validator.json @@ -0,0 +1,99 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "ABStar" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBAAA/validator.txt b/validator/tests/xml/ABStarBBAAA/validator.txt new file mode 100644 index 0000000..94f0686 --- /dev/null +++ b/validator/tests/xml/ABStarBBAAA/validator.txt @@ -0,0 +1 @@ +ABStar:{A:=="a";B:=="b";*} \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBAAA/validator.xml b/validator/tests/xml/ABStarBBAAA/validator.xml new file mode 100644 index 0000000..87b44a5 --- /dev/null +++ b/validator/tests/xml/ABStarBBAAA/validator.xml @@ -0,0 +1,104 @@ + + + + + + ABStar + + + + + : + + + + + { + + + + + + A + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + ; + + + + + + + + B + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + ; + + + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBC/invalid.xml b/validator/tests/xml/ABStarBBC/invalid.xml new file mode 100644 index 0000000..c327580 --- /dev/null +++ b/validator/tests/xml/ABStarBBC/invalid.xml @@ -0,0 +1,5 @@ + + b + b + c + \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBC/validator.json b/validator/tests/xml/ABStarBBC/validator.json new file mode 100644 index 0000000..e9bb0ec --- /dev/null +++ b/validator/tests/xml/ABStarBBC/validator.json @@ -0,0 +1,99 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "ABStar" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBC/validator.txt b/validator/tests/xml/ABStarBBC/validator.txt new file mode 100644 index 0000000..94f0686 --- /dev/null +++ b/validator/tests/xml/ABStarBBC/validator.txt @@ -0,0 +1 @@ +ABStar:{A:=="a";B:=="b";*} \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBC/validator.xml b/validator/tests/xml/ABStarBBC/validator.xml new file mode 100644 index 0000000..87b44a5 --- /dev/null +++ b/validator/tests/xml/ABStarBBC/validator.xml @@ -0,0 +1,104 @@ + + + + + + ABStar + + + + + : + + + + + { + + + + + + A + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + ; + + + + + + + + B + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + ; + + + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBCAC/valid.xml b/validator/tests/xml/ABStarBBCAC/valid.xml new file mode 100644 index 0000000..8884507 --- /dev/null +++ b/validator/tests/xml/ABStarBBCAC/valid.xml @@ -0,0 +1,7 @@ + + b + b + c + a + c + \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBCAC/validator.json b/validator/tests/xml/ABStarBBCAC/validator.json new file mode 100644 index 0000000..e9bb0ec --- /dev/null +++ b/validator/tests/xml/ABStarBBCAC/validator.json @@ -0,0 +1,99 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "ABStar" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBCAC/validator.txt b/validator/tests/xml/ABStarBBCAC/validator.txt new file mode 100644 index 0000000..94f0686 --- /dev/null +++ b/validator/tests/xml/ABStarBBCAC/validator.txt @@ -0,0 +1 @@ +ABStar:{A:=="a";B:=="b";*} \ No newline at end of file diff --git a/validator/tests/xml/ABStarBBCAC/validator.xml b/validator/tests/xml/ABStarBBCAC/validator.xml new file mode 100644 index 0000000..87b44a5 --- /dev/null +++ b/validator/tests/xml/ABStarBBCAC/validator.xml @@ -0,0 +1,104 @@ + + + + + + ABStar + + + + + : + + + + + { + + + + + + A + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + ; + + + + + + + + B + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + ; + + + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/ABStarCACBC/valid.xml b/validator/tests/xml/ABStarCACBC/valid.xml new file mode 100644 index 0000000..883a598 --- /dev/null +++ b/validator/tests/xml/ABStarCACBC/valid.xml @@ -0,0 +1,7 @@ + + c + a + c + b + c + \ No newline at end of file diff --git a/validator/tests/xml/ABStarCACBC/validator.json b/validator/tests/xml/ABStarCACBC/validator.json new file mode 100644 index 0000000..e9bb0ec --- /dev/null +++ b/validator/tests/xml/ABStarCACBC/validator.json @@ -0,0 +1,99 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "ABStar" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/ABStarCACBC/validator.txt b/validator/tests/xml/ABStarCACBC/validator.txt new file mode 100644 index 0000000..94f0686 --- /dev/null +++ b/validator/tests/xml/ABStarCACBC/validator.txt @@ -0,0 +1 @@ +ABStar:{A:=="a";B:=="b";*} \ No newline at end of file diff --git a/validator/tests/xml/ABStarCACBC/validator.xml b/validator/tests/xml/ABStarCACBC/validator.xml new file mode 100644 index 0000000..87b44a5 --- /dev/null +++ b/validator/tests/xml/ABStarCACBC/validator.xml @@ -0,0 +1,104 @@ + + + + + + ABStar + + + + + : + + + + + { + + + + + + A + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + ; + + + + + + + + B + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + ; + + + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/ABStarCBCAC/valid.xml b/validator/tests/xml/ABStarCBCAC/valid.xml new file mode 100644 index 0000000..cfc0b26 --- /dev/null +++ b/validator/tests/xml/ABStarCBCAC/valid.xml @@ -0,0 +1,7 @@ + + c + b + c + a + c + \ No newline at end of file diff --git a/validator/tests/xml/ABStarCBCAC/validator.json b/validator/tests/xml/ABStarCBCAC/validator.json new file mode 100644 index 0000000..e9bb0ec --- /dev/null +++ b/validator/tests/xml/ABStarCBCAC/validator.json @@ -0,0 +1,99 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "ABStar" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"a\"", + "StringValue": "a" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"b\"", + "StringValue": "b" + } + } + } + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/ABStarCBCAC/validator.txt b/validator/tests/xml/ABStarCBCAC/validator.txt new file mode 100644 index 0000000..94f0686 --- /dev/null +++ b/validator/tests/xml/ABStarCBCAC/validator.txt @@ -0,0 +1 @@ +ABStar:{A:=="a";B:=="b";*} \ No newline at end of file diff --git a/validator/tests/xml/ABStarCBCAC/validator.xml b/validator/tests/xml/ABStarCBCAC/validator.xml new file mode 100644 index 0000000..87b44a5 --- /dev/null +++ b/validator/tests/xml/ABStarCBCAC/validator.xml @@ -0,0 +1,104 @@ + + + + + + ABStar + + + + + : + + + + + { + + + + + + A + + + + + : + + + + + + + == + + + + "a" + a + + + + + + + + + + + ; + + + + + + + + B + + + + + : + + + + + + + == + + + + "b" + b + + + + + + + + + + + ; + + + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAB_AB/valid.xml b/validator/tests/xml/BasicAB_AB/valid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicAB_AB/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAB_AB/validator.json b/validator/tests/xml/BasicAB_AB/validator.json new file mode 100644 index 0000000..5114488 --- /dev/null +++ b/validator/tests/xml/BasicAB_AB/validator.json @@ -0,0 +1,33 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAB_AB/validator.txt b/validator/tests/xml/BasicAB_AB/validator.txt new file mode 100644 index 0000000..6b40a63 --- /dev/null +++ b/validator/tests/xml/BasicAB_AB/validator.txt @@ -0,0 +1 @@ +A:B: \ No newline at end of file diff --git a/validator/tests/xml/BasicAB_AB/validator.xml b/validator/tests/xml/BasicAB_AB/validator.xml new file mode 100644 index 0000000..49073e0 --- /dev/null +++ b/validator/tests/xml/BasicAB_AB/validator.xml @@ -0,0 +1,35 @@ + + + + + + A + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAB_BB/invalid.xml b/validator/tests/xml/BasicAB_BB/invalid.xml new file mode 100644 index 0000000..505a49a --- /dev/null +++ b/validator/tests/xml/BasicAB_BB/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAB_BB/validator.json b/validator/tests/xml/BasicAB_BB/validator.json new file mode 100644 index 0000000..5114488 --- /dev/null +++ b/validator/tests/xml/BasicAB_BB/validator.json @@ -0,0 +1,33 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAB_BB/validator.txt b/validator/tests/xml/BasicAB_BB/validator.txt new file mode 100644 index 0000000..6b40a63 --- /dev/null +++ b/validator/tests/xml/BasicAB_BB/validator.txt @@ -0,0 +1 @@ +A:B: \ No newline at end of file diff --git a/validator/tests/xml/BasicAB_BB/validator.xml b/validator/tests/xml/BasicAB_BB/validator.xml new file mode 100644 index 0000000..49073e0 --- /dev/null +++ b/validator/tests/xml/BasicAB_BB/validator.xml @@ -0,0 +1,35 @@ + + + + + + A + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_0/invalid.xml b/validator/tests/xml/BasicAContainsB_0/invalid.xml new file mode 100644 index 0000000..6682965 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_0/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_0/validator.json b/validator/tests/xml/BasicAContainsB_0/validator.json new file mode 100644 index 0000000..a419183 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_0/validator.json @@ -0,0 +1,40 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_0/validator.txt b/validator/tests/xml/BasicAContainsB_0/validator.txt new file mode 100644 index 0000000..9168b49 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_0/validator.txt @@ -0,0 +1 @@ +A:.B: \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_0/validator.xml b/validator/tests/xml/BasicAContainsB_0/validator.xml new file mode 100644 index 0000000..8f18792 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_0/validator.xml @@ -0,0 +1,42 @@ + + + + + + A + + + + + : + + + + + . + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_B/valid.xml b/validator/tests/xml/BasicAContainsB_B/valid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_B/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_B/validator.json b/validator/tests/xml/BasicAContainsB_B/validator.json new file mode 100644 index 0000000..a419183 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_B/validator.json @@ -0,0 +1,40 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_B/validator.txt b/validator/tests/xml/BasicAContainsB_B/validator.txt new file mode 100644 index 0000000..9168b49 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_B/validator.txt @@ -0,0 +1 @@ +A:.B: \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_B/validator.xml b/validator/tests/xml/BasicAContainsB_B/validator.xml new file mode 100644 index 0000000..8f18792 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_B/validator.xml @@ -0,0 +1,42 @@ + + + + + + A + + + + + : + + + + + . + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_CBC/valid.xml b/validator/tests/xml/BasicAContainsB_CBC/valid.xml new file mode 100644 index 0000000..32a424d --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_CBC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_CBC/validator.json b/validator/tests/xml/BasicAContainsB_CBC/validator.json new file mode 100644 index 0000000..a419183 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_CBC/validator.json @@ -0,0 +1,40 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_CBC/validator.txt b/validator/tests/xml/BasicAContainsB_CBC/validator.txt new file mode 100644 index 0000000..9168b49 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_CBC/validator.txt @@ -0,0 +1 @@ +A:.B: \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_CBC/validator.xml b/validator/tests/xml/BasicAContainsB_CBC/validator.xml new file mode 100644 index 0000000..8f18792 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_CBC/validator.xml @@ -0,0 +1,42 @@ + + + + + + A + + + + + : + + + + + . + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_CC/invalid.xml b/validator/tests/xml/BasicAContainsB_CC/invalid.xml new file mode 100644 index 0000000..46cb61a --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_CC/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_CC/validator.json b/validator/tests/xml/BasicAContainsB_CC/validator.json new file mode 100644 index 0000000..a419183 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_CC/validator.json @@ -0,0 +1,40 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_CC/validator.txt b/validator/tests/xml/BasicAContainsB_CC/validator.txt new file mode 100644 index 0000000..9168b49 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_CC/validator.txt @@ -0,0 +1 @@ +A:.B: \ No newline at end of file diff --git a/validator/tests/xml/BasicAContainsB_CC/validator.xml b/validator/tests/xml/BasicAContainsB_CC/validator.xml new file mode 100644 index 0000000..8f18792 --- /dev/null +++ b/validator/tests/xml/BasicAContainsB_CC/validator.xml @@ -0,0 +1,42 @@ + + + + + + A + + + + + : + + + + + . + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/invalid.xml b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/invalid.xml new file mode 100644 index 0000000..0adeed8 --- /dev/null +++ b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.json b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.json new file mode 100644 index 0000000..d3d4e2b --- /dev/null +++ b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.json @@ -0,0 +1,83 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.txt b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.txt new file mode 100644 index 0000000..2aae6f0 --- /dev/null +++ b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.txt @@ -0,0 +1 @@ +A[*,B:._:D:] \ No newline at end of file diff --git a/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.xml b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.xml new file mode 100644 index 0000000..788051f --- /dev/null +++ b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCA_DeeperFundementalFlaw/validator.xml @@ -0,0 +1,86 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + + B + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + D + + + + + : + + + + + <empty> + + + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/valid.xml b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/valid.xml new file mode 100644 index 0000000..a1a96d3 --- /dev/null +++ b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.json b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.json new file mode 100644 index 0000000..d3d4e2b --- /dev/null +++ b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.json @@ -0,0 +1,83 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "AnyName": { + "Underscore": { + "Value": "_" + } + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.txt b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.txt new file mode 100644 index 0000000..2aae6f0 --- /dev/null +++ b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.txt @@ -0,0 +1 @@ +A[*,B:._:D:] \ No newline at end of file diff --git a/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.xml b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.xml new file mode 100644 index 0000000..788051f --- /dev/null +++ b/validator/tests/xml/BasicAEndsWithBContainsAnyD_BCD_DeeperFundementalFlaw/validator.xml @@ -0,0 +1,86 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + + B + + + + + : + + + + + . + + + + + + + _ + + + + + : + + + + + + D + + + + + : + + + + + <empty> + + + + + + + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicALeafB_AB/valid.xml b/validator/tests/xml/BasicALeafB_AB/valid.xml new file mode 100644 index 0000000..7dea33c --- /dev/null +++ b/validator/tests/xml/BasicALeafB_AB/valid.xml @@ -0,0 +1 @@ +B \ No newline at end of file diff --git a/validator/tests/xml/BasicALeafB_AB/validator.json b/validator/tests/xml/BasicALeafB_AB/validator.json new file mode 100644 index 0000000..fee30e8 --- /dev/null +++ b/validator/tests/xml/BasicALeafB_AB/validator.json @@ -0,0 +1,31 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"B\"", + "StringValue": "B" + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicALeafB_AB/validator.txt b/validator/tests/xml/BasicALeafB_AB/validator.txt new file mode 100644 index 0000000..70895bc --- /dev/null +++ b/validator/tests/xml/BasicALeafB_AB/validator.txt @@ -0,0 +1 @@ +A:=="B" \ No newline at end of file diff --git a/validator/tests/xml/BasicALeafB_AB/validator.xml b/validator/tests/xml/BasicALeafB_AB/validator.xml new file mode 100644 index 0000000..7d5ecef --- /dev/null +++ b/validator/tests/xml/BasicALeafB_AB/validator.xml @@ -0,0 +1,33 @@ + + + + + + A + + + + + : + + + + + + + == + + + + "B" + B + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicALeafB_BB/invalid.xml b/validator/tests/xml/BasicALeafB_BB/invalid.xml new file mode 100644 index 0000000..d44a96e --- /dev/null +++ b/validator/tests/xml/BasicALeafB_BB/invalid.xml @@ -0,0 +1 @@ +B \ No newline at end of file diff --git a/validator/tests/xml/BasicALeafB_BB/validator.json b/validator/tests/xml/BasicALeafB_BB/validator.json new file mode 100644 index 0000000..fee30e8 --- /dev/null +++ b/validator/tests/xml/BasicALeafB_BB/validator.json @@ -0,0 +1,31 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"B\"", + "StringValue": "B" + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicALeafB_BB/validator.txt b/validator/tests/xml/BasicALeafB_BB/validator.txt new file mode 100644 index 0000000..70895bc --- /dev/null +++ b/validator/tests/xml/BasicALeafB_BB/validator.txt @@ -0,0 +1 @@ +A:=="B" \ No newline at end of file diff --git a/validator/tests/xml/BasicALeafB_BB/validator.xml b/validator/tests/xml/BasicALeafB_BB/validator.xml new file mode 100644 index 0000000..7d5ecef --- /dev/null +++ b/validator/tests/xml/BasicALeafB_BB/validator.xml @@ -0,0 +1,33 @@ + + + + + + A + + + + + : + + + + + + + == + + + + "B" + B + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicA_A/valid.xml b/validator/tests/xml/BasicA_A/valid.xml new file mode 100644 index 0000000..95feef0 --- /dev/null +++ b/validator/tests/xml/BasicA_A/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicA_A/validator.json b/validator/tests/xml/BasicA_A/validator.json new file mode 100644 index 0000000..b768975 --- /dev/null +++ b/validator/tests/xml/BasicA_A/validator.json @@ -0,0 +1,21 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicA_A/validator.txt b/validator/tests/xml/BasicA_A/validator.txt new file mode 100644 index 0000000..7655d07 --- /dev/null +++ b/validator/tests/xml/BasicA_A/validator.txt @@ -0,0 +1 @@ +A: \ No newline at end of file diff --git a/validator/tests/xml/BasicA_A/validator.xml b/validator/tests/xml/BasicA_A/validator.xml new file mode 100644 index 0000000..d05ecf8 --- /dev/null +++ b/validator/tests/xml/BasicA_A/validator.xml @@ -0,0 +1,22 @@ + + + + + + A + + + + + : + + + + + <empty> + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicA_B/invalid.xml b/validator/tests/xml/BasicA_B/invalid.xml new file mode 100644 index 0000000..719b227 --- /dev/null +++ b/validator/tests/xml/BasicA_B/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicA_B/validator.json b/validator/tests/xml/BasicA_B/validator.json new file mode 100644 index 0000000..b768975 --- /dev/null +++ b/validator/tests/xml/BasicA_B/validator.json @@ -0,0 +1,21 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicA_B/validator.txt b/validator/tests/xml/BasicA_B/validator.txt new file mode 100644 index 0000000..7655d07 --- /dev/null +++ b/validator/tests/xml/BasicA_B/validator.txt @@ -0,0 +1 @@ +A: \ No newline at end of file diff --git a/validator/tests/xml/BasicA_B/validator.xml b/validator/tests/xml/BasicA_B/validator.xml new file mode 100644 index 0000000..d05ecf8 --- /dev/null +++ b/validator/tests/xml/BasicA_B/validator.xml @@ -0,0 +1,22 @@ + + + + + + A + + + + + : + + + + + <empty> + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_B/invalid.xml b/validator/tests/xml/BasicAndBAnyC_B/invalid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_B/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_B/validator.json b/validator/tests/xml/BasicAndBAnyC_B/validator.json new file mode 100644 index 0000000..6327a1c --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_B/validator.json @@ -0,0 +1,105 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_B/validator.txt b/validator/tests/xml/BasicAndBAnyC_B/validator.txt new file mode 100644 index 0000000..7e3c3a5 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_B/validator.txt @@ -0,0 +1 @@ +A:([B:,*]&[*,C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_B/validator.xml b/validator/tests/xml/BasicAndBAnyC_B/validator.xml new file mode 100644 index 0000000..55a2575 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_B/validator.xml @@ -0,0 +1,108 @@ + + + + + + A + + + + + : + + + + + ( + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_BC/valid.xml b/validator/tests/xml/BasicAndBAnyC_BC/valid.xml new file mode 100644 index 0000000..f95be7b --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_BC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_BC/validator.json b/validator/tests/xml/BasicAndBAnyC_BC/validator.json new file mode 100644 index 0000000..6327a1c --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_BC/validator.json @@ -0,0 +1,105 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_BC/validator.txt b/validator/tests/xml/BasicAndBAnyC_BC/validator.txt new file mode 100644 index 0000000..7e3c3a5 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_BC/validator.txt @@ -0,0 +1 @@ +A:([B:,*]&[*,C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_BC/validator.xml b/validator/tests/xml/BasicAndBAnyC_BC/validator.xml new file mode 100644 index 0000000..55a2575 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_BC/validator.xml @@ -0,0 +1,108 @@ + + + + + + A + + + + + : + + + + + ( + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_BXXXC/valid.xml b/validator/tests/xml/BasicAndBAnyC_BXXXC/valid.xml new file mode 100644 index 0000000..c5c5b91 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_BXXXC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_BXXXC/validator.json b/validator/tests/xml/BasicAndBAnyC_BXXXC/validator.json new file mode 100644 index 0000000..6327a1c --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_BXXXC/validator.json @@ -0,0 +1,105 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_BXXXC/validator.txt b/validator/tests/xml/BasicAndBAnyC_BXXXC/validator.txt new file mode 100644 index 0000000..7e3c3a5 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_BXXXC/validator.txt @@ -0,0 +1 @@ +A:([B:,*]&[*,C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_BXXXC/validator.xml b/validator/tests/xml/BasicAndBAnyC_BXXXC/validator.xml new file mode 100644 index 0000000..55a2575 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_BXXXC/validator.xml @@ -0,0 +1,108 @@ + + + + + + A + + + + + : + + + + + ( + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_C/invalid.xml b/validator/tests/xml/BasicAndBAnyC_C/invalid.xml new file mode 100644 index 0000000..f9b2783 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_C/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_C/validator.json b/validator/tests/xml/BasicAndBAnyC_C/validator.json new file mode 100644 index 0000000..6327a1c --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_C/validator.json @@ -0,0 +1,105 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_C/validator.txt b/validator/tests/xml/BasicAndBAnyC_C/validator.txt new file mode 100644 index 0000000..7e3c3a5 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_C/validator.txt @@ -0,0 +1 @@ +A:([B:,*]&[*,C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_C/validator.xml b/validator/tests/xml/BasicAndBAnyC_C/validator.xml new file mode 100644 index 0000000..55a2575 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_C/validator.xml @@ -0,0 +1,108 @@ + + + + + + A + + + + + : + + + + + ( + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_CB/invalid.xml b/validator/tests/xml/BasicAndBAnyC_CB/invalid.xml new file mode 100644 index 0000000..670dbff --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_CB/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_CB/validator.json b/validator/tests/xml/BasicAndBAnyC_CB/validator.json new file mode 100644 index 0000000..6327a1c --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_CB/validator.json @@ -0,0 +1,105 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_CB/validator.txt b/validator/tests/xml/BasicAndBAnyC_CB/validator.txt new file mode 100644 index 0000000..7e3c3a5 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_CB/validator.txt @@ -0,0 +1 @@ +A:([B:,*]&[*,C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicAndBAnyC_CB/validator.xml b/validator/tests/xml/BasicAndBAnyC_CB/validator.xml new file mode 100644 index 0000000..55a2575 --- /dev/null +++ b/validator/tests/xml/BasicAndBAnyC_CB/validator.xml @@ -0,0 +1,108 @@ + + + + + + A + + + + + : + + + + + ( + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndContainsTree_BC/invalid.xml b/validator/tests/xml/BasicAndContainsTree_BC/invalid.xml new file mode 100644 index 0000000..2f01ccd --- /dev/null +++ b/validator/tests/xml/BasicAndContainsTree_BC/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndContainsTree_BC/validator.json b/validator/tests/xml/BasicAndContainsTree_BC/validator.json new file mode 100644 index 0000000..bec0aef --- /dev/null +++ b/validator/tests/xml/BasicAndContainsTree_BC/validator.json @@ -0,0 +1,103 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAndContainsTree_BC/validator.txt b/validator/tests/xml/BasicAndContainsTree_BC/validator.txt new file mode 100644 index 0000000..dbc0c87 --- /dev/null +++ b/validator/tests/xml/BasicAndContainsTree_BC/validator.txt @@ -0,0 +1 @@ +A:(.B:C:&.B:D:) \ No newline at end of file diff --git a/validator/tests/xml/BasicAndContainsTree_BC/validator.xml b/validator/tests/xml/BasicAndContainsTree_BC/validator.xml new file mode 100644 index 0000000..a0ef350 --- /dev/null +++ b/validator/tests/xml/BasicAndContainsTree_BC/validator.xml @@ -0,0 +1,108 @@ + + + + + + A + + + + + : + + + + + ( + + + + + . + + + + + + B + + + + + : + + + + + + C + + + + + : + + + + + <empty> + + + + + + + + + + + & + + + + + . + + + + + + B + + + + + : + + + + + + D + + + + + : + + + + + <empty> + + + + + + + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndContainsTree_BCBD/valid.xml b/validator/tests/xml/BasicAndContainsTree_BCBD/valid.xml new file mode 100644 index 0000000..1256a02 --- /dev/null +++ b/validator/tests/xml/BasicAndContainsTree_BCBD/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndContainsTree_BCBD/validator.json b/validator/tests/xml/BasicAndContainsTree_BCBD/validator.json new file mode 100644 index 0000000..bec0aef --- /dev/null +++ b/validator/tests/xml/BasicAndContainsTree_BCBD/validator.json @@ -0,0 +1,103 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAndContainsTree_BCBD/validator.txt b/validator/tests/xml/BasicAndContainsTree_BCBD/validator.txt new file mode 100644 index 0000000..dbc0c87 --- /dev/null +++ b/validator/tests/xml/BasicAndContainsTree_BCBD/validator.txt @@ -0,0 +1 @@ +A:(.B:C:&.B:D:) \ No newline at end of file diff --git a/validator/tests/xml/BasicAndContainsTree_BCBD/validator.xml b/validator/tests/xml/BasicAndContainsTree_BCBD/validator.xml new file mode 100644 index 0000000..a0ef350 --- /dev/null +++ b/validator/tests/xml/BasicAndContainsTree_BCBD/validator.xml @@ -0,0 +1,108 @@ + + + + + + A + + + + + : + + + + + ( + + + + + . + + + + + + B + + + + + : + + + + + + C + + + + + : + + + + + <empty> + + + + + + + + + + + & + + + + + . + + + + + + B + + + + + : + + + + + + D + + + + + : + + + + + <empty> + + + + + + + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_A/invalid.xml b/validator/tests/xml/BasicAndNotAB_A/invalid.xml new file mode 100644 index 0000000..95feef0 --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_A/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_A/validator.json b/validator/tests/xml/BasicAndNotAB_A/validator.json new file mode 100644 index 0000000..c7a77fa --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_A/validator.json @@ -0,0 +1,79 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_A/validator.txt b/validator/tests/xml/BasicAndNotAB_A/validator.txt new file mode 100644 index 0000000..6680cd3 --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_A/validator.txt @@ -0,0 +1 @@ +(!(A:)&!(B:)) \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_A/validator.xml b/validator/tests/xml/BasicAndNotAB_A/validator.xml new file mode 100644 index 0000000..31bb54d --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_A/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + ! + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + ) + + + + + & + + + + + ! + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_B/invalid.xml b/validator/tests/xml/BasicAndNotAB_B/invalid.xml new file mode 100644 index 0000000..719b227 --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_B/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_B/validator.json b/validator/tests/xml/BasicAndNotAB_B/validator.json new file mode 100644 index 0000000..c7a77fa --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_B/validator.json @@ -0,0 +1,79 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_B/validator.txt b/validator/tests/xml/BasicAndNotAB_B/validator.txt new file mode 100644 index 0000000..6680cd3 --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_B/validator.txt @@ -0,0 +1 @@ +(!(A:)&!(B:)) \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_B/validator.xml b/validator/tests/xml/BasicAndNotAB_B/validator.xml new file mode 100644 index 0000000..31bb54d --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_B/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + ! + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + ) + + + + + & + + + + + ! + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_C/valid.xml b/validator/tests/xml/BasicAndNotAB_C/valid.xml new file mode 100644 index 0000000..55ca53f --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_C/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_C/validator.json b/validator/tests/xml/BasicAndNotAB_C/validator.json new file mode 100644 index 0000000..c7a77fa --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_C/validator.json @@ -0,0 +1,79 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_C/validator.txt b/validator/tests/xml/BasicAndNotAB_C/validator.txt new file mode 100644 index 0000000..6680cd3 --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_C/validator.txt @@ -0,0 +1 @@ +(!(A:)&!(B:)) \ No newline at end of file diff --git a/validator/tests/xml/BasicAndNotAB_C/validator.xml b/validator/tests/xml/BasicAndNotAB_C/validator.xml new file mode 100644 index 0000000..31bb54d --- /dev/null +++ b/validator/tests/xml/BasicAndNotAB_C/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + ! + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + ) + + + + + & + + + + + ! + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAnyNotB_B/valid.xml b/validator/tests/xml/BasicAnyNotB_B/valid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicAnyNotB_B/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAnyNotB_B/validator.json b/validator/tests/xml/BasicAnyNotB_B/validator.json new file mode 100644 index 0000000..f6fd0d0 --- /dev/null +++ b/validator/tests/xml/BasicAnyNotB_B/validator.json @@ -0,0 +1,63 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAnyNotB_B/validator.txt b/validator/tests/xml/BasicAnyNotB_B/validator.txt new file mode 100644 index 0000000..1dcb2d5 --- /dev/null +++ b/validator/tests/xml/BasicAnyNotB_B/validator.txt @@ -0,0 +1 @@ +A[*,!(B:)] \ No newline at end of file diff --git a/validator/tests/xml/BasicAnyNotB_B/validator.xml b/validator/tests/xml/BasicAnyNotB_B/validator.xml new file mode 100644 index 0000000..64f28d8 --- /dev/null +++ b/validator/tests/xml/BasicAnyNotB_B/validator.xml @@ -0,0 +1,65 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + ! + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAnyNotB_C/valid.xml b/validator/tests/xml/BasicAnyNotB_C/valid.xml new file mode 100644 index 0000000..f9b2783 --- /dev/null +++ b/validator/tests/xml/BasicAnyNotB_C/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAnyNotB_C/validator.json b/validator/tests/xml/BasicAnyNotB_C/validator.json new file mode 100644 index 0000000..f6fd0d0 --- /dev/null +++ b/validator/tests/xml/BasicAnyNotB_C/validator.json @@ -0,0 +1,63 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAnyNotB_C/validator.txt b/validator/tests/xml/BasicAnyNotB_C/validator.txt new file mode 100644 index 0000000..1dcb2d5 --- /dev/null +++ b/validator/tests/xml/BasicAnyNotB_C/validator.txt @@ -0,0 +1 @@ +A[*,!(B:)] \ No newline at end of file diff --git a/validator/tests/xml/BasicAnyNotB_C/validator.xml b/validator/tests/xml/BasicAnyNotB_C/validator.xml new file mode 100644 index 0000000..64f28d8 --- /dev/null +++ b/validator/tests/xml/BasicAnyNotB_C/validator.xml @@ -0,0 +1,65 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + ! + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAorB_A/valid.xml b/validator/tests/xml/BasicAorB_A/valid.xml new file mode 100644 index 0000000..95feef0 --- /dev/null +++ b/validator/tests/xml/BasicAorB_A/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAorB_A/validator.json b/validator/tests/xml/BasicAorB_A/validator.json new file mode 100644 index 0000000..2b83bcd --- /dev/null +++ b/validator/tests/xml/BasicAorB_A/validator.json @@ -0,0 +1,53 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAorB_A/validator.txt b/validator/tests/xml/BasicAorB_A/validator.txt new file mode 100644 index 0000000..b716ec5 --- /dev/null +++ b/validator/tests/xml/BasicAorB_A/validator.txt @@ -0,0 +1 @@ +(A:|B:) \ No newline at end of file diff --git a/validator/tests/xml/BasicAorB_A/validator.xml b/validator/tests/xml/BasicAorB_A/validator.xml new file mode 100644 index 0000000..09e21e3 --- /dev/null +++ b/validator/tests/xml/BasicAorB_A/validator.xml @@ -0,0 +1,55 @@ + + + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + | + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicAorB_C/invalid.xml b/validator/tests/xml/BasicAorB_C/invalid.xml new file mode 100644 index 0000000..55ca53f --- /dev/null +++ b/validator/tests/xml/BasicAorB_C/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicAorB_C/validator.json b/validator/tests/xml/BasicAorB_C/validator.json new file mode 100644 index 0000000..2b83bcd --- /dev/null +++ b/validator/tests/xml/BasicAorB_C/validator.json @@ -0,0 +1,53 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicAorB_C/validator.txt b/validator/tests/xml/BasicAorB_C/validator.txt new file mode 100644 index 0000000..b716ec5 --- /dev/null +++ b/validator/tests/xml/BasicAorB_C/validator.txt @@ -0,0 +1 @@ +(A:|B:) \ No newline at end of file diff --git a/validator/tests/xml/BasicAorB_C/validator.xml b/validator/tests/xml/BasicAorB_C/validator.xml new file mode 100644 index 0000000..09e21e3 --- /dev/null +++ b/validator/tests/xml/BasicAorB_C/validator.xml @@ -0,0 +1,55 @@ + + + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + | + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBC_BB/invalid.xml b/validator/tests/xml/BasicConcatBC_BB/invalid.xml new file mode 100644 index 0000000..f51d79b --- /dev/null +++ b/validator/tests/xml/BasicConcatBC_BB/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBC_BB/validator.json b/validator/tests/xml/BasicConcatBC_BB/validator.json new file mode 100644 index 0000000..be9ec43 --- /dev/null +++ b/validator/tests/xml/BasicConcatBC_BB/validator.json @@ -0,0 +1,62 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBC_BB/validator.txt b/validator/tests/xml/BasicConcatBC_BB/validator.txt new file mode 100644 index 0000000..d0f6462 --- /dev/null +++ b/validator/tests/xml/BasicConcatBC_BB/validator.txt @@ -0,0 +1 @@ +A[B:,C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBC_BB/validator.xml b/validator/tests/xml/BasicConcatBC_BB/validator.xml new file mode 100644 index 0000000..f718550 --- /dev/null +++ b/validator/tests/xml/BasicConcatBC_BB/validator.xml @@ -0,0 +1,65 @@ + + + + + + A + + + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBC_BC/valid.xml b/validator/tests/xml/BasicConcatBC_BC/valid.xml new file mode 100644 index 0000000..f95be7b --- /dev/null +++ b/validator/tests/xml/BasicConcatBC_BC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBC_BC/validator.json b/validator/tests/xml/BasicConcatBC_BC/validator.json new file mode 100644 index 0000000..be9ec43 --- /dev/null +++ b/validator/tests/xml/BasicConcatBC_BC/validator.json @@ -0,0 +1,62 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBC_BC/validator.txt b/validator/tests/xml/BasicConcatBC_BC/validator.txt new file mode 100644 index 0000000..d0f6462 --- /dev/null +++ b/validator/tests/xml/BasicConcatBC_BC/validator.txt @@ -0,0 +1 @@ +A[B:,C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBC_BC/validator.xml b/validator/tests/xml/BasicConcatBC_BC/validator.xml new file mode 100644 index 0000000..f718550 --- /dev/null +++ b/validator/tests/xml/BasicConcatBC_BC/validator.xml @@ -0,0 +1,65 @@ + + + + + + A + + + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_B/valid.xml b/validator/tests/xml/BasicConcatBOptionalD_B/valid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_B/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_B/validator.json b/validator/tests/xml/BasicConcatBOptionalD_B/validator.json new file mode 100644 index 0000000..b08ff87 --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_B/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_B/validator.txt b/validator/tests/xml/BasicConcatBOptionalD_B/validator.txt new file mode 100644 index 0000000..5c2bd30 --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_B/validator.txt @@ -0,0 +1 @@ +A[B:,(D:)?] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_B/validator.xml b/validator/tests/xml/BasicConcatBOptionalD_B/validator.xml new file mode 100644 index 0000000..6c134fc --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_B/validator.xml @@ -0,0 +1,78 @@ + + + + + + A + + + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + ( + + + + + + D + + + + + : + + + + + <empty> + + + + + + + ) + + + ? + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_BD/valid.xml b/validator/tests/xml/BasicConcatBOptionalD_BD/valid.xml new file mode 100644 index 0000000..faf5c4c --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_BD/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_BD/validator.json b/validator/tests/xml/BasicConcatBOptionalD_BD/validator.json new file mode 100644 index 0000000..b08ff87 --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_BD/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_BD/validator.txt b/validator/tests/xml/BasicConcatBOptionalD_BD/validator.txt new file mode 100644 index 0000000..5c2bd30 --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_BD/validator.txt @@ -0,0 +1 @@ +A[B:,(D:)?] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_BD/validator.xml b/validator/tests/xml/BasicConcatBOptionalD_BD/validator.xml new file mode 100644 index 0000000..6c134fc --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_BD/validator.xml @@ -0,0 +1,78 @@ + + + + + + A + + + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + ( + + + + + + D + + + + + : + + + + + <empty> + + + + + + + ) + + + ? + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_D/invalid.xml b/validator/tests/xml/BasicConcatBOptionalD_D/invalid.xml new file mode 100644 index 0000000..cc62e5b --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_D/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_D/validator.json b/validator/tests/xml/BasicConcatBOptionalD_D/validator.json new file mode 100644 index 0000000..b08ff87 --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_D/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "D" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_D/validator.txt b/validator/tests/xml/BasicConcatBOptionalD_D/validator.txt new file mode 100644 index 0000000..5c2bd30 --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_D/validator.txt @@ -0,0 +1 @@ +A[B:,(D:)?] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatBOptionalD_D/validator.xml b/validator/tests/xml/BasicConcatBOptionalD_D/validator.xml new file mode 100644 index 0000000..6c134fc --- /dev/null +++ b/validator/tests/xml/BasicConcatBOptionalD_D/validator.xml @@ -0,0 +1,78 @@ + + + + + + A + + + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + ( + + + + + + D + + + + + : + + + + + <empty> + + + + + + + ) + + + ? + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_0/invalid.xml b/validator/tests/xml/BasicConcatCStar_0/invalid.xml new file mode 100644 index 0000000..6682965 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_0/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_0/validator.json b/validator/tests/xml/BasicConcatCStar_0/validator.json new file mode 100644 index 0000000..a2eb76f --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_0/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_0/validator.txt b/validator/tests/xml/BasicConcatCStar_0/validator.txt new file mode 100644 index 0000000..0e9b517 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_0/validator.txt @@ -0,0 +1 @@ +A[C:,(C:)*] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_0/validator.xml b/validator/tests/xml/BasicConcatCStar_0/validator.xml new file mode 100644 index 0000000..f106d25 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_0/validator.xml @@ -0,0 +1,78 @@ + + + + + + A + + + + + + + [ + + + + + + C + + + + + : + + + + + <empty> + + + + + + + , + + + + + ( + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_1/valid.xml b/validator/tests/xml/BasicConcatCStar_1/valid.xml new file mode 100644 index 0000000..f9b2783 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_1/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_1/validator.json b/validator/tests/xml/BasicConcatCStar_1/validator.json new file mode 100644 index 0000000..a2eb76f --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_1/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_1/validator.txt b/validator/tests/xml/BasicConcatCStar_1/validator.txt new file mode 100644 index 0000000..0e9b517 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_1/validator.txt @@ -0,0 +1 @@ +A[C:,(C:)*] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_1/validator.xml b/validator/tests/xml/BasicConcatCStar_1/validator.xml new file mode 100644 index 0000000..f106d25 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_1/validator.xml @@ -0,0 +1,78 @@ + + + + + + A + + + + + + + [ + + + + + + C + + + + + : + + + + + <empty> + + + + + + + , + + + + + ( + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_2/valid.xml b/validator/tests/xml/BasicConcatCStar_2/valid.xml new file mode 100644 index 0000000..46cb61a --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_2/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_2/validator.json b/validator/tests/xml/BasicConcatCStar_2/validator.json new file mode 100644 index 0000000..a2eb76f --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_2/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_2/validator.txt b/validator/tests/xml/BasicConcatCStar_2/validator.txt new file mode 100644 index 0000000..0e9b517 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_2/validator.txt @@ -0,0 +1 @@ +A[C:,(C:)*] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_2/validator.xml b/validator/tests/xml/BasicConcatCStar_2/validator.xml new file mode 100644 index 0000000..f106d25 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_2/validator.xml @@ -0,0 +1,78 @@ + + + + + + A + + + + + + + [ + + + + + + C + + + + + : + + + + + <empty> + + + + + + + , + + + + + ( + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_3/valid.xml b/validator/tests/xml/BasicConcatCStar_3/valid.xml new file mode 100644 index 0000000..05bed8c --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_3/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_3/validator.json b/validator/tests/xml/BasicConcatCStar_3/validator.json new file mode 100644 index 0000000..a2eb76f --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_3/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_3/validator.txt b/validator/tests/xml/BasicConcatCStar_3/validator.txt new file mode 100644 index 0000000..0e9b517 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_3/validator.txt @@ -0,0 +1 @@ +A[C:,(C:)*] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_3/validator.xml b/validator/tests/xml/BasicConcatCStar_3/validator.xml new file mode 100644 index 0000000..f106d25 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_3/validator.xml @@ -0,0 +1,78 @@ + + + + + + A + + + + + + + [ + + + + + + C + + + + + : + + + + + <empty> + + + + + + + , + + + + + ( + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_B/invalid.xml b/validator/tests/xml/BasicConcatCStar_B/invalid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_B/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_B/validator.json b/validator/tests/xml/BasicConcatCStar_B/validator.json new file mode 100644 index 0000000..a2eb76f --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_B/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_B/validator.txt b/validator/tests/xml/BasicConcatCStar_B/validator.txt new file mode 100644 index 0000000..0e9b517 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_B/validator.txt @@ -0,0 +1 @@ +A[C:,(C:)*] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_B/validator.xml b/validator/tests/xml/BasicConcatCStar_B/validator.xml new file mode 100644 index 0000000..f106d25 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_B/validator.xml @@ -0,0 +1,78 @@ + + + + + + A + + + + + + + [ + + + + + + C + + + + + : + + + + + <empty> + + + + + + + , + + + + + ( + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_CB/invalid.xml b/validator/tests/xml/BasicConcatCStar_CB/invalid.xml new file mode 100644 index 0000000..670dbff --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_CB/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_CB/validator.json b/validator/tests/xml/BasicConcatCStar_CB/validator.json new file mode 100644 index 0000000..a2eb76f --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_CB/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_CB/validator.txt b/validator/tests/xml/BasicConcatCStar_CB/validator.txt new file mode 100644 index 0000000..0e9b517 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_CB/validator.txt @@ -0,0 +1 @@ +A[C:,(C:)*] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatCStar_CB/validator.xml b/validator/tests/xml/BasicConcatCStar_CB/validator.xml new file mode 100644 index 0000000..f106d25 --- /dev/null +++ b/validator/tests/xml/BasicConcatCStar_CB/validator.xml @@ -0,0 +1,78 @@ + + + + + + A + + + + + + + [ + + + + + + C + + + + + : + + + + + <empty> + + + + + + + , + + + + + ( + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_BC/valid.xml b/validator/tests/xml/BasicConcatOrEmpty_BC/valid.xml new file mode 100644 index 0000000..f95be7b --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_BC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_BC/validator.json b/validator/tests/xml/BasicConcatOrEmpty_BC/validator.json new file mode 100644 index 0000000..587c846 --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_BC/validator.json @@ -0,0 +1,82 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_BC/validator.txt b/validator/tests/xml/BasicConcatOrEmpty_BC/validator.txt new file mode 100644 index 0000000..0d2af6b --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_BC/validator.txt @@ -0,0 +1 @@ +A[(|B:),C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_BC/validator.xml b/validator/tests/xml/BasicConcatOrEmpty_BC/validator.xml new file mode 100644 index 0000000..f7f2344 --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_BC/validator.xml @@ -0,0 +1,85 @@ + + + + + + A + + + + + + + [ + + + + + ( + + + + + <empty> + + + + + | + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_BD/invalid.xml b/validator/tests/xml/BasicConcatOrEmpty_BD/invalid.xml new file mode 100644 index 0000000..faf5c4c --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_BD/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_BD/validator.json b/validator/tests/xml/BasicConcatOrEmpty_BD/validator.json new file mode 100644 index 0000000..587c846 --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_BD/validator.json @@ -0,0 +1,82 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_BD/validator.txt b/validator/tests/xml/BasicConcatOrEmpty_BD/validator.txt new file mode 100644 index 0000000..0d2af6b --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_BD/validator.txt @@ -0,0 +1 @@ +A[(|B:),C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_BD/validator.xml b/validator/tests/xml/BasicConcatOrEmpty_BD/validator.xml new file mode 100644 index 0000000..f7f2344 --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_BD/validator.xml @@ -0,0 +1,85 @@ + + + + + + A + + + + + + + [ + + + + + ( + + + + + <empty> + + + + + | + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_C/valid.xml b/validator/tests/xml/BasicConcatOrEmpty_C/valid.xml new file mode 100644 index 0000000..f9b2783 --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_C/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_C/validator.json b/validator/tests/xml/BasicConcatOrEmpty_C/validator.json new file mode 100644 index 0000000..587c846 --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_C/validator.json @@ -0,0 +1,82 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_C/validator.txt b/validator/tests/xml/BasicConcatOrEmpty_C/validator.txt new file mode 100644 index 0000000..0d2af6b --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_C/validator.txt @@ -0,0 +1 @@ +A[(|B:),C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatOrEmpty_C/validator.xml b/validator/tests/xml/BasicConcatOrEmpty_C/validator.xml new file mode 100644 index 0000000..f7f2344 --- /dev/null +++ b/validator/tests/xml/BasicConcatOrEmpty_C/validator.xml @@ -0,0 +1,85 @@ + + + + + + A + + + + + + + [ + + + + + ( + + + + + <empty> + + + + + | + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_AB/invalid.xml b/validator/tests/xml/BasicConcatZAnyC_AB/invalid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_AB/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_AB/validator.json b/validator/tests/xml/BasicConcatZAnyC_AB/validator.json new file mode 100644 index 0000000..c43ad84 --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_AB/validator.json @@ -0,0 +1,50 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_AB/validator.txt b/validator/tests/xml/BasicConcatZAnyC_AB/validator.txt new file mode 100644 index 0000000..f4908bc --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_AB/validator.txt @@ -0,0 +1 @@ +A[*,C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_AB/validator.xml b/validator/tests/xml/BasicConcatZAnyC_AB/validator.xml new file mode 100644 index 0000000..530451d --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_AB/validator.xml @@ -0,0 +1,52 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_ABC/valid.xml b/validator/tests/xml/BasicConcatZAnyC_ABC/valid.xml new file mode 100644 index 0000000..f95be7b --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_ABC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_ABC/validator.json b/validator/tests/xml/BasicConcatZAnyC_ABC/validator.json new file mode 100644 index 0000000..c43ad84 --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_ABC/validator.json @@ -0,0 +1,50 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_ABC/validator.txt b/validator/tests/xml/BasicConcatZAnyC_ABC/validator.txt new file mode 100644 index 0000000..f4908bc --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_ABC/validator.txt @@ -0,0 +1 @@ +A[*,C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_ABC/validator.xml b/validator/tests/xml/BasicConcatZAnyC_ABC/validator.xml new file mode 100644 index 0000000..530451d --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_ABC/validator.xml @@ -0,0 +1,52 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_AC/valid.xml b/validator/tests/xml/BasicConcatZAnyC_AC/valid.xml new file mode 100644 index 0000000..f9b2783 --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_AC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_AC/validator.json b/validator/tests/xml/BasicConcatZAnyC_AC/validator.json new file mode 100644 index 0000000..c43ad84 --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_AC/validator.json @@ -0,0 +1,50 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_AC/validator.txt b/validator/tests/xml/BasicConcatZAnyC_AC/validator.txt new file mode 100644 index 0000000..f4908bc --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_AC/validator.txt @@ -0,0 +1 @@ +A[*,C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_AC/validator.xml b/validator/tests/xml/BasicConcatZAnyC_AC/validator.xml new file mode 100644 index 0000000..530451d --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_AC/validator.xml @@ -0,0 +1,52 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/invalid.xml b/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/invalid.xml new file mode 100644 index 0000000..0aa5cfb --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/invalid.xml @@ -0,0 +1 @@ +B \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.json b/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.json new file mode 100644 index 0000000..c43ad84 --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.json @@ -0,0 +1,50 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.txt b/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.txt new file mode 100644 index 0000000..f4908bc --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.txt @@ -0,0 +1 @@ +A[*,C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.xml b/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.xml new file mode 100644 index 0000000..530451d --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_ACchildB_TypicalFundementalFlaw/validator.xml @@ -0,0 +1,52 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BBBC/valid.xml b/validator/tests/xml/BasicConcatZAnyC_BBBC/valid.xml new file mode 100644 index 0000000..e715efa --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BBBC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BBBC/validator.json b/validator/tests/xml/BasicConcatZAnyC_BBBC/validator.json new file mode 100644 index 0000000..c43ad84 --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BBBC/validator.json @@ -0,0 +1,50 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BBBC/validator.txt b/validator/tests/xml/BasicConcatZAnyC_BBBC/validator.txt new file mode 100644 index 0000000..f4908bc --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BBBC/validator.txt @@ -0,0 +1 @@ +A[*,C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BBBC/validator.xml b/validator/tests/xml/BasicConcatZAnyC_BBBC/validator.xml new file mode 100644 index 0000000..530451d --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BBBC/validator.xml @@ -0,0 +1,52 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BCBC/valid.xml b/validator/tests/xml/BasicConcatZAnyC_BCBC/valid.xml new file mode 100644 index 0000000..53a2af2 --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BCBC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BCBC/validator.json b/validator/tests/xml/BasicConcatZAnyC_BCBC/validator.json new file mode 100644 index 0000000..c43ad84 --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BCBC/validator.json @@ -0,0 +1,50 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BCBC/validator.txt b/validator/tests/xml/BasicConcatZAnyC_BCBC/validator.txt new file mode 100644 index 0000000..f4908bc --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BCBC/validator.txt @@ -0,0 +1 @@ +A[*,C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BCBC/validator.xml b/validator/tests/xml/BasicConcatZAnyC_BCBC/validator.xml new file mode 100644 index 0000000..530451d --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BCBC/validator.xml @@ -0,0 +1,52 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BCCC/valid.xml b/validator/tests/xml/BasicConcatZAnyC_BCCC/valid.xml new file mode 100644 index 0000000..2b46f9a --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BCCC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BCCC/validator.json b/validator/tests/xml/BasicConcatZAnyC_BCCC/validator.json new file mode 100644 index 0000000..c43ad84 --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BCCC/validator.json @@ -0,0 +1,50 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BCCC/validator.txt b/validator/tests/xml/BasicConcatZAnyC_BCCC/validator.txt new file mode 100644 index 0000000..f4908bc --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BCCC/validator.txt @@ -0,0 +1 @@ +A[*,C:] \ No newline at end of file diff --git a/validator/tests/xml/BasicConcatZAnyC_BCCC/validator.xml b/validator/tests/xml/BasicConcatZAnyC_BCCC/validator.xml new file mode 100644 index 0000000..530451d --- /dev/null +++ b/validator/tests/xml/BasicConcatZAnyC_BCCC/validator.xml @@ -0,0 +1,52 @@ + + + + + + A + + + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ABAA/invalid.xml b/validator/tests/xml/BasicInterleaveBAnyC_ABAA/invalid.xml new file mode 100644 index 0000000..8b46dc9 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ABAA/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.json b/validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.json new file mode 100644 index 0000000..c6c0ae9 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.json @@ -0,0 +1,85 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.txt b/validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.txt new file mode 100644 index 0000000..39faa71 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.txt @@ -0,0 +1 @@ +A:{B:;{*;C:}} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.xml b/validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.xml new file mode 100644 index 0000000..43e8327 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ABAA/validator.xml @@ -0,0 +1,88 @@ + + + + + + A + + + + + : + + + + + { + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ; + + + + + { + + + + + * + + + + + ; + + + + + + C + + + + + : + + + + + <empty> + + + + + + + } + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ABACA/valid.xml b/validator/tests/xml/BasicInterleaveBAnyC_ABACA/valid.xml new file mode 100644 index 0000000..3739c46 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ABACA/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.json b/validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.json new file mode 100644 index 0000000..c6c0ae9 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.json @@ -0,0 +1,85 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.txt b/validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.txt new file mode 100644 index 0000000..39faa71 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.txt @@ -0,0 +1 @@ +A:{B:;{*;C:}} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.xml b/validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.xml new file mode 100644 index 0000000..43e8327 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ABACA/validator.xml @@ -0,0 +1,88 @@ + + + + + + A + + + + + : + + + + + { + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ; + + + + + { + + + + + * + + + + + ; + + + + + + C + + + + + : + + + + + <empty> + + + + + + + } + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/valid.xml b/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/valid.xml new file mode 100644 index 0000000..ae6e97d --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.json b/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.json new file mode 100644 index 0000000..c6c0ae9 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.json @@ -0,0 +1,85 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.txt b/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.txt new file mode 100644 index 0000000..39faa71 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.txt @@ -0,0 +1 @@ +A:{B:;{*;C:}} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.xml b/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.xml new file mode 100644 index 0000000..43e8327 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ACCBA/validator.xml @@ -0,0 +1,88 @@ + + + + + + A + + + + + : + + + + + { + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ; + + + + + { + + + + + * + + + + + ; + + + + + + C + + + + + : + + + + + <empty> + + + + + + + } + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/invalid.xml b/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/invalid.xml new file mode 100644 index 0000000..a632220 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.json b/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.json new file mode 100644 index 0000000..c6c0ae9 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.json @@ -0,0 +1,85 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.txt b/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.txt new file mode 100644 index 0000000..39faa71 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.txt @@ -0,0 +1 @@ +A:{B:;{*;C:}} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.xml b/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.xml new file mode 100644 index 0000000..43e8327 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_ACCCA/validator.xml @@ -0,0 +1,88 @@ + + + + + + A + + + + + : + + + + + { + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ; + + + + + { + + + + + * + + + + + ; + + + + + + C + + + + + : + + + + + <empty> + + + + + + + } + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_BAC/valid.xml b/validator/tests/xml/BasicInterleaveBAnyC_BAC/valid.xml new file mode 100644 index 0000000..a334f79 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_BAC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.json b/validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.json new file mode 100644 index 0000000..c6c0ae9 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.json @@ -0,0 +1,85 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.txt b/validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.txt new file mode 100644 index 0000000..39faa71 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.txt @@ -0,0 +1 @@ +A:{B:;{*;C:}} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.xml b/validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.xml new file mode 100644 index 0000000..43e8327 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_BAC/validator.xml @@ -0,0 +1,88 @@ + + + + + + A + + + + + : + + + + + { + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ; + + + + + { + + + + + * + + + + + ; + + + + + + C + + + + + : + + + + + <empty> + + + + + + + } + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_BC/valid.xml b/validator/tests/xml/BasicInterleaveBAnyC_BC/valid.xml new file mode 100644 index 0000000..f95be7b --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_BC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_BC/validator.json b/validator/tests/xml/BasicInterleaveBAnyC_BC/validator.json new file mode 100644 index 0000000..c6c0ae9 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_BC/validator.json @@ -0,0 +1,85 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_BC/validator.txt b/validator/tests/xml/BasicInterleaveBAnyC_BC/validator.txt new file mode 100644 index 0000000..39faa71 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_BC/validator.txt @@ -0,0 +1 @@ +A:{B:;{*;C:}} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBAnyC_BC/validator.xml b/validator/tests/xml/BasicInterleaveBAnyC_BC/validator.xml new file mode 100644 index 0000000..43e8327 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBAnyC_BC/validator.xml @@ -0,0 +1,88 @@ + + + + + + A + + + + + : + + + + + { + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ; + + + + + { + + + + + * + + + + + ; + + + + + + C + + + + + : + + + + + <empty> + + + + + + + } + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_BC/valid.xml b/validator/tests/xml/BasicInterleaveBC_BC/valid.xml new file mode 100644 index 0000000..f95be7b --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_BC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_BC/validator.json b/validator/tests/xml/BasicInterleaveBC_BC/validator.json new file mode 100644 index 0000000..0db2e2c --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_BC/validator.json @@ -0,0 +1,65 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_BC/validator.txt b/validator/tests/xml/BasicInterleaveBC_BC/validator.txt new file mode 100644 index 0000000..f355a17 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_BC/validator.txt @@ -0,0 +1 @@ +A:{B:;C:} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_BC/validator.xml b/validator/tests/xml/BasicInterleaveBC_BC/validator.xml new file mode 100644 index 0000000..f12a9b8 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_BC/validator.xml @@ -0,0 +1,68 @@ + + + + + + A + + + + + : + + + + + { + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ; + + + + + + C + + + + + : + + + + + <empty> + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_C/invalid.xml b/validator/tests/xml/BasicInterleaveBC_C/invalid.xml new file mode 100644 index 0000000..f9b2783 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_C/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_C/validator.json b/validator/tests/xml/BasicInterleaveBC_C/validator.json new file mode 100644 index 0000000..0db2e2c --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_C/validator.json @@ -0,0 +1,65 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_C/validator.txt b/validator/tests/xml/BasicInterleaveBC_C/validator.txt new file mode 100644 index 0000000..f355a17 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_C/validator.txt @@ -0,0 +1 @@ +A:{B:;C:} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_C/validator.xml b/validator/tests/xml/BasicInterleaveBC_C/validator.xml new file mode 100644 index 0000000..f12a9b8 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_C/validator.xml @@ -0,0 +1,68 @@ + + + + + + A + + + + + : + + + + + { + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ; + + + + + + C + + + + + : + + + + + <empty> + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_CB/valid.xml b/validator/tests/xml/BasicInterleaveBC_CB/valid.xml new file mode 100644 index 0000000..670dbff --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_CB/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_CB/validator.json b/validator/tests/xml/BasicInterleaveBC_CB/validator.json new file mode 100644 index 0000000..0db2e2c --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_CB/validator.json @@ -0,0 +1,65 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_CB/validator.txt b/validator/tests/xml/BasicInterleaveBC_CB/validator.txt new file mode 100644 index 0000000..f355a17 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_CB/validator.txt @@ -0,0 +1 @@ +A:{B:;C:} \ No newline at end of file diff --git a/validator/tests/xml/BasicInterleaveBC_CB/validator.xml b/validator/tests/xml/BasicInterleaveBC_CB/validator.xml new file mode 100644 index 0000000..f12a9b8 --- /dev/null +++ b/validator/tests/xml/BasicInterleaveBC_CB/validator.xml @@ -0,0 +1,68 @@ + + + + + + A + + + + + : + + + + + { + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ; + + + + + + C + + + + + : + + + + + <empty> + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicNone_A/invalid.xml b/validator/tests/xml/BasicNone_A/invalid.xml new file mode 100644 index 0000000..95feef0 --- /dev/null +++ b/validator/tests/xml/BasicNone_A/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicNone_A/validator.json b/validator/tests/xml/BasicNone_A/validator.json new file mode 100644 index 0000000..ce003a2 --- /dev/null +++ b/validator/tests/xml/BasicNone_A/validator.json @@ -0,0 +1,22 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicNone_A/validator.txt b/validator/tests/xml/BasicNone_A/validator.txt new file mode 100644 index 0000000..7fd4f6c --- /dev/null +++ b/validator/tests/xml/BasicNone_A/validator.txt @@ -0,0 +1 @@ +!(*) \ No newline at end of file diff --git a/validator/tests/xml/BasicNone_A/validator.xml b/validator/tests/xml/BasicNone_A/validator.xml new file mode 100644 index 0000000..187533d --- /dev/null +++ b/validator/tests/xml/BasicNone_A/validator.xml @@ -0,0 +1,22 @@ + + + + + ! + + + ( + + + + + * + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotA_A/invalid.xml b/validator/tests/xml/BasicNotA_A/invalid.xml new file mode 100644 index 0000000..95feef0 --- /dev/null +++ b/validator/tests/xml/BasicNotA_A/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotA_A/validator.json b/validator/tests/xml/BasicNotA_A/validator.json new file mode 100644 index 0000000..4611d5c --- /dev/null +++ b/validator/tests/xml/BasicNotA_A/validator.json @@ -0,0 +1,34 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicNotA_A/validator.txt b/validator/tests/xml/BasicNotA_A/validator.txt new file mode 100644 index 0000000..977f8b3 --- /dev/null +++ b/validator/tests/xml/BasicNotA_A/validator.txt @@ -0,0 +1 @@ +!(A:) \ No newline at end of file diff --git a/validator/tests/xml/BasicNotA_A/validator.xml b/validator/tests/xml/BasicNotA_A/validator.xml new file mode 100644 index 0000000..48f7e43 --- /dev/null +++ b/validator/tests/xml/BasicNotA_A/validator.xml @@ -0,0 +1,35 @@ + + + + + ! + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotA_B/valid.xml b/validator/tests/xml/BasicNotA_B/valid.xml new file mode 100644 index 0000000..719b227 --- /dev/null +++ b/validator/tests/xml/BasicNotA_B/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotA_B/validator.json b/validator/tests/xml/BasicNotA_B/validator.json new file mode 100644 index 0000000..4611d5c --- /dev/null +++ b/validator/tests/xml/BasicNotA_B/validator.json @@ -0,0 +1,34 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicNotA_B/validator.txt b/validator/tests/xml/BasicNotA_B/validator.txt new file mode 100644 index 0000000..977f8b3 --- /dev/null +++ b/validator/tests/xml/BasicNotA_B/validator.txt @@ -0,0 +1 @@ +!(A:) \ No newline at end of file diff --git a/validator/tests/xml/BasicNotA_B/validator.xml b/validator/tests/xml/BasicNotA_B/validator.xml new file mode 100644 index 0000000..48f7e43 --- /dev/null +++ b/validator/tests/xml/BasicNotA_B/validator.xml @@ -0,0 +1,35 @@ + + + + + ! + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotAndBStarC_BC/invalid.xml b/validator/tests/xml/BasicNotAndBStarC_BC/invalid.xml new file mode 100644 index 0000000..f95be7b --- /dev/null +++ b/validator/tests/xml/BasicNotAndBStarC_BC/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotAndBStarC_BC/validator.json b/validator/tests/xml/BasicNotAndBStarC_BC/validator.json new file mode 100644 index 0000000..666e163 --- /dev/null +++ b/validator/tests/xml/BasicNotAndBStarC_BC/validator.json @@ -0,0 +1,118 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicNotAndBStarC_BC/validator.txt b/validator/tests/xml/BasicNotAndBStarC_BC/validator.txt new file mode 100644 index 0000000..7860a96 --- /dev/null +++ b/validator/tests/xml/BasicNotAndBStarC_BC/validator.txt @@ -0,0 +1 @@ +A:!(([B:,*]&[*,C:])) \ No newline at end of file diff --git a/validator/tests/xml/BasicNotAndBStarC_BC/validator.xml b/validator/tests/xml/BasicNotAndBStarC_BC/validator.xml new file mode 100644 index 0000000..179cabb --- /dev/null +++ b/validator/tests/xml/BasicNotAndBStarC_BC/validator.xml @@ -0,0 +1,121 @@ + + + + + + A + + + + + : + + + + + ! + + + ( + + + + + ( + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + ) + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotAndBStarC_CB/valid.xml b/validator/tests/xml/BasicNotAndBStarC_CB/valid.xml new file mode 100644 index 0000000..670dbff --- /dev/null +++ b/validator/tests/xml/BasicNotAndBStarC_CB/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotAndBStarC_CB/validator.json b/validator/tests/xml/BasicNotAndBStarC_CB/validator.json new file mode 100644 index 0000000..666e163 --- /dev/null +++ b/validator/tests/xml/BasicNotAndBStarC_CB/validator.json @@ -0,0 +1,118 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicNotAndBStarC_CB/validator.txt b/validator/tests/xml/BasicNotAndBStarC_CB/validator.txt new file mode 100644 index 0000000..7860a96 --- /dev/null +++ b/validator/tests/xml/BasicNotAndBStarC_CB/validator.txt @@ -0,0 +1 @@ +A:!(([B:,*]&[*,C:])) \ No newline at end of file diff --git a/validator/tests/xml/BasicNotAndBStarC_CB/validator.xml b/validator/tests/xml/BasicNotAndBStarC_CB/validator.xml new file mode 100644 index 0000000..179cabb --- /dev/null +++ b/validator/tests/xml/BasicNotAndBStarC_CB/validator.xml @@ -0,0 +1,121 @@ + + + + + + A + + + + + : + + + + + ! + + + ( + + + + + ( + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + ) + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotConcatBC_BB/valid.xml b/validator/tests/xml/BasicNotConcatBC_BB/valid.xml new file mode 100644 index 0000000..f51d79b --- /dev/null +++ b/validator/tests/xml/BasicNotConcatBC_BB/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotConcatBC_BB/validator.json b/validator/tests/xml/BasicNotConcatBC_BB/validator.json new file mode 100644 index 0000000..07ce552 --- /dev/null +++ b/validator/tests/xml/BasicNotConcatBC_BB/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicNotConcatBC_BB/validator.txt b/validator/tests/xml/BasicNotConcatBC_BB/validator.txt new file mode 100644 index 0000000..d13b6aa --- /dev/null +++ b/validator/tests/xml/BasicNotConcatBC_BB/validator.txt @@ -0,0 +1 @@ +!(A[B:,C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicNotConcatBC_BB/validator.xml b/validator/tests/xml/BasicNotConcatBC_BB/validator.xml new file mode 100644 index 0000000..7275158 --- /dev/null +++ b/validator/tests/xml/BasicNotConcatBC_BB/validator.xml @@ -0,0 +1,78 @@ + + + + + ! + + + ( + + + + + + A + + + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotConcatBC_BC/invalid.xml b/validator/tests/xml/BasicNotConcatBC_BC/invalid.xml new file mode 100644 index 0000000..f95be7b --- /dev/null +++ b/validator/tests/xml/BasicNotConcatBC_BC/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicNotConcatBC_BC/validator.json b/validator/tests/xml/BasicNotConcatBC_BC/validator.json new file mode 100644 index 0000000..07ce552 --- /dev/null +++ b/validator/tests/xml/BasicNotConcatBC_BC/validator.json @@ -0,0 +1,75 @@ +{ + "TopPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicNotConcatBC_BC/validator.txt b/validator/tests/xml/BasicNotConcatBC_BC/validator.txt new file mode 100644 index 0000000..d13b6aa --- /dev/null +++ b/validator/tests/xml/BasicNotConcatBC_BC/validator.txt @@ -0,0 +1 @@ +!(A[B:,C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicNotConcatBC_BC/validator.xml b/validator/tests/xml/BasicNotConcatBC_BC/validator.xml new file mode 100644 index 0000000..7275158 --- /dev/null +++ b/validator/tests/xml/BasicNotConcatBC_BC/validator.xml @@ -0,0 +1,78 @@ + + + + + ! + + + ( + + + + + + A + + + + + + + [ + + + + + + B + + + + + : + + + + + <empty> + + + + + + + , + + + + + + C + + + + + : + + + + + <empty> + + + + + + + ] + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_B/valid.xml b/validator/tests/xml/BasicOptionalB_B/valid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_B/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_B/validator.json b/validator/tests/xml/BasicOptionalB_B/validator.json new file mode 100644 index 0000000..f5330d4 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_B/validator.json @@ -0,0 +1,46 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_B/validator.txt b/validator/tests/xml/BasicOptionalB_B/validator.txt new file mode 100644 index 0000000..0727a43 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_B/validator.txt @@ -0,0 +1 @@ +A:(B:)? \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_B/validator.xml b/validator/tests/xml/BasicOptionalB_B/validator.xml new file mode 100644 index 0000000..3fd56d3 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_B/validator.xml @@ -0,0 +1,48 @@ + + + + + + A + + + + + : + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + ? + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_BB/invalid.xml b/validator/tests/xml/BasicOptionalB_BB/invalid.xml new file mode 100644 index 0000000..f51d79b --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_BB/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_BB/validator.json b/validator/tests/xml/BasicOptionalB_BB/validator.json new file mode 100644 index 0000000..f5330d4 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_BB/validator.json @@ -0,0 +1,46 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_BB/validator.txt b/validator/tests/xml/BasicOptionalB_BB/validator.txt new file mode 100644 index 0000000..0727a43 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_BB/validator.txt @@ -0,0 +1 @@ +A:(B:)? \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_BB/validator.xml b/validator/tests/xml/BasicOptionalB_BB/validator.xml new file mode 100644 index 0000000..3fd56d3 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_BB/validator.xml @@ -0,0 +1,48 @@ + + + + + + A + + + + + : + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + ? + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_C/invalid.xml b/validator/tests/xml/BasicOptionalB_C/invalid.xml new file mode 100644 index 0000000..f9b2783 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_C/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_C/validator.json b/validator/tests/xml/BasicOptionalB_C/validator.json new file mode 100644 index 0000000..f5330d4 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_C/validator.json @@ -0,0 +1,46 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_C/validator.txt b/validator/tests/xml/BasicOptionalB_C/validator.txt new file mode 100644 index 0000000..0727a43 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_C/validator.txt @@ -0,0 +1 @@ +A:(B:)? \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_C/validator.xml b/validator/tests/xml/BasicOptionalB_C/validator.xml new file mode 100644 index 0000000..3fd56d3 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_C/validator.xml @@ -0,0 +1,48 @@ + + + + + + A + + + + + : + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + ? + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_Empty/valid.xml b/validator/tests/xml/BasicOptionalB_Empty/valid.xml new file mode 100644 index 0000000..6682965 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_Empty/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_Empty/validator.json b/validator/tests/xml/BasicOptionalB_Empty/validator.json new file mode 100644 index 0000000..f5330d4 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_Empty/validator.json @@ -0,0 +1,46 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_Empty/validator.txt b/validator/tests/xml/BasicOptionalB_Empty/validator.txt new file mode 100644 index 0000000..0727a43 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_Empty/validator.txt @@ -0,0 +1 @@ +A:(B:)? \ No newline at end of file diff --git a/validator/tests/xml/BasicOptionalB_Empty/validator.xml b/validator/tests/xml/BasicOptionalB_Empty/validator.xml new file mode 100644 index 0000000..3fd56d3 --- /dev/null +++ b/validator/tests/xml/BasicOptionalB_Empty/validator.xml @@ -0,0 +1,48 @@ + + + + + + A + + + + + : + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + ? + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicOrNotAB_A/valid.xml b/validator/tests/xml/BasicOrNotAB_A/valid.xml new file mode 100644 index 0000000..95feef0 --- /dev/null +++ b/validator/tests/xml/BasicOrNotAB_A/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicOrNotAB_A/validator.json b/validator/tests/xml/BasicOrNotAB_A/validator.json new file mode 100644 index 0000000..65622c2 --- /dev/null +++ b/validator/tests/xml/BasicOrNotAB_A/validator.json @@ -0,0 +1,79 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicOrNotAB_A/validator.txt b/validator/tests/xml/BasicOrNotAB_A/validator.txt new file mode 100644 index 0000000..9ad3074 --- /dev/null +++ b/validator/tests/xml/BasicOrNotAB_A/validator.txt @@ -0,0 +1 @@ +(!(A:)|!(B:)) \ No newline at end of file diff --git a/validator/tests/xml/BasicOrNotAB_A/validator.xml b/validator/tests/xml/BasicOrNotAB_A/validator.xml new file mode 100644 index 0000000..0046fba --- /dev/null +++ b/validator/tests/xml/BasicOrNotAB_A/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + ! + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + ) + + + + + | + + + + + ! + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicOrNotAB_C/valid.xml b/validator/tests/xml/BasicOrNotAB_C/valid.xml new file mode 100644 index 0000000..55ca53f --- /dev/null +++ b/validator/tests/xml/BasicOrNotAB_C/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicOrNotAB_C/validator.json b/validator/tests/xml/BasicOrNotAB_C/validator.json new file mode 100644 index 0000000..65622c2 --- /dev/null +++ b/validator/tests/xml/BasicOrNotAB_C/validator.json @@ -0,0 +1,79 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Not": { + "Exclamation": { + "Value": "!" + }, + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicOrNotAB_C/validator.txt b/validator/tests/xml/BasicOrNotAB_C/validator.txt new file mode 100644 index 0000000..9ad3074 --- /dev/null +++ b/validator/tests/xml/BasicOrNotAB_C/validator.txt @@ -0,0 +1 @@ +(!(A:)|!(B:)) \ No newline at end of file diff --git a/validator/tests/xml/BasicOrNotAB_C/validator.xml b/validator/tests/xml/BasicOrNotAB_C/validator.xml new file mode 100644 index 0000000..0046fba --- /dev/null +++ b/validator/tests/xml/BasicOrNotAB_C/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + ! + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + ) + + + + + | + + + + + ! + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_A/valid.xml b/validator/tests/xml/BasicRefLoop_A/valid.xml new file mode 100644 index 0000000..95feef0 --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_A/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_A/validator.json b/validator/tests/xml/BasicRefLoop_A/validator.json new file mode 100644 index 0000000..eca46cd --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_A/validator.json @@ -0,0 +1,42 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_A/validator.txt b/validator/tests/xml/BasicRefLoop_A/validator.txt new file mode 100644 index 0000000..1b4e0e8 --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_A/validator.txt @@ -0,0 +1 @@ +A:(|@main) \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_A/validator.xml b/validator/tests/xml/BasicRefLoop_A/validator.xml new file mode 100644 index 0000000..eeddd9b --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_A/validator.xml @@ -0,0 +1,43 @@ + + + + + + A + + + + + : + + + + + ( + + + + + <empty> + + + + + | + + + + + @ + + main + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_AA/valid.xml b/validator/tests/xml/BasicRefLoop_AA/valid.xml new file mode 100644 index 0000000..39fa227 --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_AA/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_AA/validator.json b/validator/tests/xml/BasicRefLoop_AA/validator.json new file mode 100644 index 0000000..eca46cd --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_AA/validator.json @@ -0,0 +1,42 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_AA/validator.txt b/validator/tests/xml/BasicRefLoop_AA/validator.txt new file mode 100644 index 0000000..1b4e0e8 --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_AA/validator.txt @@ -0,0 +1 @@ +A:(|@main) \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_AA/validator.xml b/validator/tests/xml/BasicRefLoop_AA/validator.xml new file mode 100644 index 0000000..eeddd9b --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_AA/validator.xml @@ -0,0 +1,43 @@ + + + + + + A + + + + + : + + + + + ( + + + + + <empty> + + + + + | + + + + + @ + + main + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_AB/invalid.xml b/validator/tests/xml/BasicRefLoop_AB/invalid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_AB/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_AB/validator.json b/validator/tests/xml/BasicRefLoop_AB/validator.json new file mode 100644 index 0000000..eca46cd --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_AB/validator.json @@ -0,0 +1,42 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Reference": { + "At": { + "Value": "@" + }, + "Name": "main" + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_AB/validator.txt b/validator/tests/xml/BasicRefLoop_AB/validator.txt new file mode 100644 index 0000000..1b4e0e8 --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_AB/validator.txt @@ -0,0 +1 @@ +A:(|@main) \ No newline at end of file diff --git a/validator/tests/xml/BasicRefLoop_AB/validator.xml b/validator/tests/xml/BasicRefLoop_AB/validator.xml new file mode 100644 index 0000000..eeddd9b --- /dev/null +++ b/validator/tests/xml/BasicRefLoop_AB/validator.xml @@ -0,0 +1,43 @@ + + + + + + A + + + + + : + + + + + ( + + + + + <empty> + + + + + | + + + + + @ + + main + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAAorBB_AA/valid.xml b/validator/tests/xml/BasicTreeAAorBB_AA/valid.xml new file mode 100644 index 0000000..39fa227 --- /dev/null +++ b/validator/tests/xml/BasicTreeAAorBB_AA/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAAorBB_AA/validator.json b/validator/tests/xml/BasicTreeAAorBB_AA/validator.json new file mode 100644 index 0000000..692a472 --- /dev/null +++ b/validator/tests/xml/BasicTreeAAorBB_AA/validator.json @@ -0,0 +1,77 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAAorBB_AA/validator.txt b/validator/tests/xml/BasicTreeAAorBB_AA/validator.txt new file mode 100644 index 0000000..68d4611 --- /dev/null +++ b/validator/tests/xml/BasicTreeAAorBB_AA/validator.txt @@ -0,0 +1 @@ +(A:A:|B:B:) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAAorBB_AA/validator.xml b/validator/tests/xml/BasicTreeAAorBB_AA/validator.xml new file mode 100644 index 0000000..c6f4892 --- /dev/null +++ b/validator/tests/xml/BasicTreeAAorBB_AA/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + + A + + + + + : + + + + + + A + + + + + : + + + + + <empty> + + + + + + + + + | + + + + + + B + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAAorBB_AB/invalid.xml b/validator/tests/xml/BasicTreeAAorBB_AB/invalid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicTreeAAorBB_AB/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAAorBB_AB/validator.json b/validator/tests/xml/BasicTreeAAorBB_AB/validator.json new file mode 100644 index 0000000..692a472 --- /dev/null +++ b/validator/tests/xml/BasicTreeAAorBB_AB/validator.json @@ -0,0 +1,77 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAAorBB_AB/validator.txt b/validator/tests/xml/BasicTreeAAorBB_AB/validator.txt new file mode 100644 index 0000000..68d4611 --- /dev/null +++ b/validator/tests/xml/BasicTreeAAorBB_AB/validator.txt @@ -0,0 +1 @@ +(A:A:|B:B:) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAAorBB_AB/validator.xml b/validator/tests/xml/BasicTreeAAorBB_AB/validator.xml new file mode 100644 index 0000000..c6f4892 --- /dev/null +++ b/validator/tests/xml/BasicTreeAAorBB_AB/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + + A + + + + + : + + + + + + A + + + + + : + + + + + <empty> + + + + + + + + + | + + + + + + B + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAOrOrC_AB/valid.xml b/validator/tests/xml/BasicTreeAOrOrC_AB/valid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicTreeAOrOrC_AB/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAOrOrC_AB/validator.json b/validator/tests/xml/BasicTreeAOrOrC_AB/validator.json new file mode 100644 index 0000000..438a868 --- /dev/null +++ b/validator/tests/xml/BasicTreeAOrOrC_AB/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAOrOrC_AB/validator.txt b/validator/tests/xml/BasicTreeAOrOrC_AB/validator.txt new file mode 100644 index 0000000..1d4012d --- /dev/null +++ b/validator/tests/xml/BasicTreeAOrOrC_AB/validator.txt @@ -0,0 +1 @@ +(A:(A:|B:)|C:(C:|B:)) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAOrOrC_AB/validator.xml b/validator/tests/xml/BasicTreeAOrOrC_AB/validator.xml new file mode 100644 index 0000000..09ca2f5 --- /dev/null +++ b/validator/tests/xml/BasicTreeAOrOrC_AB/validator.xml @@ -0,0 +1,147 @@ + + + + + ( + + + + + + A + + + + + : + + + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + | + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + + + | + + + + + + C + + + + + : + + + + + ( + + + + + + C + + + + + : + + + + + <empty> + + + + + + + | + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAOrOrC_CA/invalid.xml b/validator/tests/xml/BasicTreeAOrOrC_CA/invalid.xml new file mode 100644 index 0000000..5076f9e --- /dev/null +++ b/validator/tests/xml/BasicTreeAOrOrC_CA/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAOrOrC_CA/validator.json b/validator/tests/xml/BasicTreeAOrOrC_CA/validator.json new file mode 100644 index 0000000..438a868 --- /dev/null +++ b/validator/tests/xml/BasicTreeAOrOrC_CA/validator.json @@ -0,0 +1,141 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAOrOrC_CA/validator.txt b/validator/tests/xml/BasicTreeAOrOrC_CA/validator.txt new file mode 100644 index 0000000..1d4012d --- /dev/null +++ b/validator/tests/xml/BasicTreeAOrOrC_CA/validator.txt @@ -0,0 +1 @@ +(A:(A:|B:)|C:(C:|B:)) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAOrOrC_CA/validator.xml b/validator/tests/xml/BasicTreeAOrOrC_CA/validator.xml new file mode 100644 index 0000000..09ca2f5 --- /dev/null +++ b/validator/tests/xml/BasicTreeAOrOrC_CA/validator.xml @@ -0,0 +1,147 @@ + + + + + ( + + + + + + A + + + + + : + + + + + ( + + + + + + A + + + + + : + + + + + <empty> + + + + + + + | + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + + + | + + + + + + C + + + + + : + + + + + ( + + + + + + C + + + + + : + + + + + <empty> + + + + + + + | + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandA_A/valid.xml b/validator/tests/xml/BasicTreeAandA_A/valid.xml new file mode 100644 index 0000000..39fa227 --- /dev/null +++ b/validator/tests/xml/BasicTreeAandA_A/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandA_A/validator.json b/validator/tests/xml/BasicTreeAandA_A/validator.json new file mode 100644 index 0000000..4eca80b --- /dev/null +++ b/validator/tests/xml/BasicTreeAandA_A/validator.json @@ -0,0 +1,77 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandA_A/validator.txt b/validator/tests/xml/BasicTreeAandA_A/validator.txt new file mode 100644 index 0000000..e96b6b4 --- /dev/null +++ b/validator/tests/xml/BasicTreeAandA_A/validator.txt @@ -0,0 +1 @@ +(A:A:&A:A:) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandA_A/validator.xml b/validator/tests/xml/BasicTreeAandA_A/validator.xml new file mode 100644 index 0000000..7d42861 --- /dev/null +++ b/validator/tests/xml/BasicTreeAandA_A/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + + A + + + + + : + + + + + + A + + + + + : + + + + + <empty> + + + + + + + + + & + + + + + + A + + + + + : + + + + + + A + + + + + : + + + + + <empty> + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandA_B/invalid.xml b/validator/tests/xml/BasicTreeAandA_B/invalid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicTreeAandA_B/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandA_B/validator.json b/validator/tests/xml/BasicTreeAandA_B/validator.json new file mode 100644 index 0000000..4eca80b --- /dev/null +++ b/validator/tests/xml/BasicTreeAandA_B/validator.json @@ -0,0 +1,77 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandA_B/validator.txt b/validator/tests/xml/BasicTreeAandA_B/validator.txt new file mode 100644 index 0000000..e96b6b4 --- /dev/null +++ b/validator/tests/xml/BasicTreeAandA_B/validator.txt @@ -0,0 +1 @@ +(A:A:&A:A:) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandA_B/validator.xml b/validator/tests/xml/BasicTreeAandA_B/validator.xml new file mode 100644 index 0000000..7d42861 --- /dev/null +++ b/validator/tests/xml/BasicTreeAandA_B/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + + A + + + + + : + + + + + + A + + + + + : + + + + + <empty> + + + + + + + + + & + + + + + + A + + + + + : + + + + + + A + + + + + : + + + + + <empty> + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandB_B/invalid.xml b/validator/tests/xml/BasicTreeAandB_B/invalid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicTreeAandB_B/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandB_B/validator.json b/validator/tests/xml/BasicTreeAandB_B/validator.json new file mode 100644 index 0000000..c8cb747 --- /dev/null +++ b/validator/tests/xml/BasicTreeAandB_B/validator.json @@ -0,0 +1,77 @@ +{ + "TopPattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandB_B/validator.txt b/validator/tests/xml/BasicTreeAandB_B/validator.txt new file mode 100644 index 0000000..29c1aa0 --- /dev/null +++ b/validator/tests/xml/BasicTreeAandB_B/validator.txt @@ -0,0 +1 @@ +(A:A:&A:B:) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAandB_B/validator.xml b/validator/tests/xml/BasicTreeAandB_B/validator.xml new file mode 100644 index 0000000..fa0803b --- /dev/null +++ b/validator/tests/xml/BasicTreeAandB_B/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + + A + + + + + : + + + + + + A + + + + + : + + + + + <empty> + + + + + + + + + & + + + + + + A + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_BC/valid.xml b/validator/tests/xml/BasicTreeAndBAnyC_BC/valid.xml new file mode 100644 index 0000000..a2c0682 --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_BC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_BC/validator.json b/validator/tests/xml/BasicTreeAndBAnyC_BC/validator.json new file mode 100644 index 0000000..12e8c83 --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_BC/validator.json @@ -0,0 +1,129 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_BC/validator.txt b/validator/tests/xml/BasicTreeAndBAnyC_BC/validator.txt new file mode 100644 index 0000000..32fb43a --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_BC/validator.txt @@ -0,0 +1 @@ +A:([A:B:,*]&[*,A:C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_BC/validator.xml b/validator/tests/xml/BasicTreeAndBAnyC_BC/validator.xml new file mode 100644 index 0000000..a7bcbda --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_BC/validator.xml @@ -0,0 +1,134 @@ + + + + + + A + + + + + : + + + + + ( + + + + + [ + + + + + + A + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + A + + + + + : + + + + + + C + + + + + : + + + + + <empty> + + + + + + + + + ] + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/valid.xml b/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/valid.xml new file mode 100644 index 0000000..e3f7421 --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.json b/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.json new file mode 100644 index 0000000..12e8c83 --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.json @@ -0,0 +1,129 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.txt b/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.txt new file mode 100644 index 0000000..32fb43a --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.txt @@ -0,0 +1 @@ +A:([A:B:,*]&[*,A:C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.xml b/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.xml new file mode 100644 index 0000000..a7bcbda --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_BXXXC/validator.xml @@ -0,0 +1,134 @@ + + + + + + A + + + + + : + + + + + ( + + + + + [ + + + + + + A + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + A + + + + + : + + + + + + C + + + + + : + + + + + <empty> + + + + + + + + + ] + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_CB/invalid.xml b/validator/tests/xml/BasicTreeAndBAnyC_CB/invalid.xml new file mode 100644 index 0000000..0e9937e --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_CB/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_CB/validator.json b/validator/tests/xml/BasicTreeAndBAnyC_CB/validator.json new file mode 100644 index 0000000..12e8c83 --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_CB/validator.json @@ -0,0 +1,129 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_CB/validator.txt b/validator/tests/xml/BasicTreeAndBAnyC_CB/validator.txt new file mode 100644 index 0000000..32fb43a --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_CB/validator.txt @@ -0,0 +1 @@ +A:([A:B:,*]&[*,A:C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_CB/validator.xml b/validator/tests/xml/BasicTreeAndBAnyC_CB/validator.xml new file mode 100644 index 0000000..a7bcbda --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_CB/validator.xml @@ -0,0 +1,134 @@ + + + + + + A + + + + + : + + + + + ( + + + + + [ + + + + + + A + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + A + + + + + : + + + + + + C + + + + + : + + + + + <empty> + + + + + + + + + ] + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_CBC/invalid.xml b/validator/tests/xml/BasicTreeAndBAnyC_CBC/invalid.xml new file mode 100644 index 0000000..4c64740 --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_CBC/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.json b/validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.json new file mode 100644 index 0000000..12e8c83 --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.json @@ -0,0 +1,129 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "And": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "Ampersand": { + "Value": "\u0026" + }, + "RightPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "C" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.txt b/validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.txt new file mode 100644 index 0000000..32fb43a --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.txt @@ -0,0 +1 @@ +A:([A:B:,*]&[*,A:C:]) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.xml b/validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.xml new file mode 100644 index 0000000..a7bcbda --- /dev/null +++ b/validator/tests/xml/BasicTreeAndBAnyC_CBC/validator.xml @@ -0,0 +1,134 @@ + + + + + + A + + + + + : + + + + + ( + + + + + [ + + + + + + A + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + , + + + + + * + + + + + ] + + + + + & + + + + + [ + + + + + * + + + + + , + + + + + + A + + + + + : + + + + + + C + + + + + : + + + + + <empty> + + + + + + + + + ] + + + + + ) + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeBAorBB_AA/invalid.xml b/validator/tests/xml/BasicTreeBAorBB_AA/invalid.xml new file mode 100644 index 0000000..39fa227 --- /dev/null +++ b/validator/tests/xml/BasicTreeBAorBB_AA/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeBAorBB_AA/validator.json b/validator/tests/xml/BasicTreeBAorBB_AA/validator.json new file mode 100644 index 0000000..473a80a --- /dev/null +++ b/validator/tests/xml/BasicTreeBAorBB_AA/validator.json @@ -0,0 +1,77 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeBAorBB_AA/validator.txt b/validator/tests/xml/BasicTreeBAorBB_AA/validator.txt new file mode 100644 index 0000000..5455a22 --- /dev/null +++ b/validator/tests/xml/BasicTreeBAorBB_AA/validator.txt @@ -0,0 +1 @@ +(B:A:|B:B:) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeBAorBB_AA/validator.xml b/validator/tests/xml/BasicTreeBAorBB_AA/validator.xml new file mode 100644 index 0000000..f3031b5 --- /dev/null +++ b/validator/tests/xml/BasicTreeBAorBB_AA/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + + B + + + + + : + + + + + + A + + + + + : + + + + + <empty> + + + + + + + + + | + + + + + + B + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeBAorBB_BA/valid.xml b/validator/tests/xml/BasicTreeBAorBB_BA/valid.xml new file mode 100644 index 0000000..ac9e514 --- /dev/null +++ b/validator/tests/xml/BasicTreeBAorBB_BA/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeBAorBB_BA/validator.json b/validator/tests/xml/BasicTreeBAorBB_BA/validator.json new file mode 100644 index 0000000..473a80a --- /dev/null +++ b/validator/tests/xml/BasicTreeBAorBB_BA/validator.json @@ -0,0 +1,77 @@ +{ + "TopPattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeBAorBB_BA/validator.txt b/validator/tests/xml/BasicTreeBAorBB_BA/validator.txt new file mode 100644 index 0000000..5455a22 --- /dev/null +++ b/validator/tests/xml/BasicTreeBAorBB_BA/validator.txt @@ -0,0 +1 @@ +(B:A:|B:B:) \ No newline at end of file diff --git a/validator/tests/xml/BasicTreeBAorBB_BA/validator.xml b/validator/tests/xml/BasicTreeBAorBB_BA/validator.xml new file mode 100644 index 0000000..f3031b5 --- /dev/null +++ b/validator/tests/xml/BasicTreeBAorBB_BA/validator.xml @@ -0,0 +1,81 @@ + + + + + ( + + + + + + B + + + + + : + + + + + + A + + + + + : + + + + + <empty> + + + + + + + + + | + + + + + + B + + + + + : + + + + + + B + + + + + : + + + + + <empty> + + + + + + + + + ) + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/valid.xml b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/valid.xml new file mode 100644 index 0000000..f51d79b --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.json b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.json new file mode 100644 index 0000000..097e45c --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.txt b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.txt new file mode 100644 index 0000000..3f97b10 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.txt @@ -0,0 +1 @@ +A:((B:|))* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.xml b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.xml new file mode 100644 index 0000000..b6e50e6 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BB/validator.xml @@ -0,0 +1,68 @@ + + + + + + A + + + + + : + + + + + ( + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + | + + + + + <empty> + + + + + ) + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/invalid.xml b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/invalid.xml new file mode 100644 index 0000000..f95be7b --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.json b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.json new file mode 100644 index 0000000..097e45c --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.json @@ -0,0 +1,66 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Or": { + "OpenParen": { + "Value": "(" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "Pipe": { + "Value": "|" + }, + "RightPattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + }, + "CloseParen": { + "Value": ")" + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.txt b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.txt new file mode 100644 index 0000000..3f97b10 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.txt @@ -0,0 +1 @@ +A:((B:|))* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.xml b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.xml new file mode 100644 index 0000000..b6e50e6 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreBOrEmpty_BC/validator.xml @@ -0,0 +1,68 @@ + + + + + + A + + + + + : + + + + + ( + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + | + + + + + <empty> + + + + + ) + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_0/valid.xml b/validator/tests/xml/BasicZeroOrMoreB_0/valid.xml new file mode 100644 index 0000000..6682965 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_0/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_0/validator.json b/validator/tests/xml/BasicZeroOrMoreB_0/validator.json new file mode 100644 index 0000000..33a71a4 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_0/validator.json @@ -0,0 +1,46 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_0/validator.txt b/validator/tests/xml/BasicZeroOrMoreB_0/validator.txt new file mode 100644 index 0000000..0619d54 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_0/validator.txt @@ -0,0 +1 @@ +A:(B:)* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_0/validator.xml b/validator/tests/xml/BasicZeroOrMoreB_0/validator.xml new file mode 100644 index 0000000..2f7f857 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_0/validator.xml @@ -0,0 +1,48 @@ + + + + + + A + + + + + : + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_1/valid.xml b/validator/tests/xml/BasicZeroOrMoreB_1/valid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_1/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_1/validator.json b/validator/tests/xml/BasicZeroOrMoreB_1/validator.json new file mode 100644 index 0000000..33a71a4 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_1/validator.json @@ -0,0 +1,46 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_1/validator.txt b/validator/tests/xml/BasicZeroOrMoreB_1/validator.txt new file mode 100644 index 0000000..0619d54 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_1/validator.txt @@ -0,0 +1 @@ +A:(B:)* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_1/validator.xml b/validator/tests/xml/BasicZeroOrMoreB_1/validator.xml new file mode 100644 index 0000000..2f7f857 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_1/validator.xml @@ -0,0 +1,48 @@ + + + + + + A + + + + + : + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_3/valid.xml b/validator/tests/xml/BasicZeroOrMoreB_3/valid.xml new file mode 100644 index 0000000..fa2c081 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_3/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_3/validator.json b/validator/tests/xml/BasicZeroOrMoreB_3/validator.json new file mode 100644 index 0000000..33a71a4 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_3/validator.json @@ -0,0 +1,46 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_3/validator.txt b/validator/tests/xml/BasicZeroOrMoreB_3/validator.txt new file mode 100644 index 0000000..0619d54 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_3/validator.txt @@ -0,0 +1 @@ +A:(B:)* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_3/validator.xml b/validator/tests/xml/BasicZeroOrMoreB_3/validator.xml new file mode 100644 index 0000000..2f7f857 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_3/validator.xml @@ -0,0 +1,48 @@ + + + + + + A + + + + + : + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_BC/invalid.xml b/validator/tests/xml/BasicZeroOrMoreB_BC/invalid.xml new file mode 100644 index 0000000..40ea819 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_BC/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_BC/validator.json b/validator/tests/xml/BasicZeroOrMoreB_BC/validator.json new file mode 100644 index 0000000..33a71a4 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_BC/validator.json @@ -0,0 +1,46 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_BC/validator.txt b/validator/tests/xml/BasicZeroOrMoreB_BC/validator.txt new file mode 100644 index 0000000..0619d54 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_BC/validator.txt @@ -0,0 +1 @@ +A:(B:)* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_BC/validator.xml b/validator/tests/xml/BasicZeroOrMoreB_BC/validator.xml new file mode 100644 index 0000000..2f7f857 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_BC/validator.xml @@ -0,0 +1,48 @@ + + + + + + A + + + + + : + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_C/invalid.xml b/validator/tests/xml/BasicZeroOrMoreB_C/invalid.xml new file mode 100644 index 0000000..f9b2783 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_C/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_C/validator.json b/validator/tests/xml/BasicZeroOrMoreB_C/validator.json new file mode 100644 index 0000000..33a71a4 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_C/validator.json @@ -0,0 +1,46 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_C/validator.txt b/validator/tests/xml/BasicZeroOrMoreB_C/validator.txt new file mode 100644 index 0000000..0619d54 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_C/validator.txt @@ -0,0 +1 @@ +A:(B:)* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreB_C/validator.xml b/validator/tests/xml/BasicZeroOrMoreB_C/validator.xml new file mode 100644 index 0000000..2f7f857 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreB_C/validator.xml @@ -0,0 +1,48 @@ + + + + + + A + + + + + : + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreEmpty_B/invalid.xml b/validator/tests/xml/BasicZeroOrMoreEmpty_B/invalid.xml new file mode 100644 index 0000000..039359d --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreEmpty_B/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.json b/validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.json new file mode 100644 index 0000000..28cd6fa --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.json @@ -0,0 +1,34 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.txt b/validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.txt new file mode 100644 index 0000000..ccfa45f --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.txt @@ -0,0 +1 @@ +A:()* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.xml b/validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.xml new file mode 100644 index 0000000..ec32546 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreEmpty_B/validator.xml @@ -0,0 +1,35 @@ + + + + + + A + + + + + : + + + + + ( + + + + + <empty> + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/valid.xml b/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/valid.xml new file mode 100644 index 0000000..6682965 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.json b/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.json new file mode 100644 index 0000000..28cd6fa --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.json @@ -0,0 +1,34 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.txt b/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.txt new file mode 100644 index 0000000..ccfa45f --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.txt @@ -0,0 +1 @@ +A:()* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.xml b/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.xml new file mode 100644 index 0000000..ec32546 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreEmpty_Empty/validator.xml @@ -0,0 +1,35 @@ + + + + + + A + + + + + : + + + + + ( + + + + + <empty> + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/valid.xml b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/valid.xml new file mode 100644 index 0000000..f51d79b --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/valid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.json b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.json new file mode 100644 index 0000000..97bde1c --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.json @@ -0,0 +1,59 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.txt b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.txt new file mode 100644 index 0000000..197d85a --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.txt @@ -0,0 +1 @@ +A:((B:)*)* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.xml b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.xml new file mode 100644 index 0000000..0095a0b --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_BB/validator.xml @@ -0,0 +1,61 @@ + + + + + + A + + + + + : + + + + + ( + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/invalid.xml b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/invalid.xml new file mode 100644 index 0000000..f9b2783 --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/invalid.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.json b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.json new file mode 100644 index 0000000..97bde1c --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.json @@ -0,0 +1,59 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "A" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "B" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Empty": { + "Empty": { + "Value": "\u003cempty\u003e" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.txt b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.txt new file mode 100644 index 0000000..197d85a --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.txt @@ -0,0 +1 @@ +A:((B:)*)* \ No newline at end of file diff --git a/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.xml b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.xml new file mode 100644 index 0000000..0095a0b --- /dev/null +++ b/validator/tests/xml/BasicZeroOrMoreZeroOrMoreB_C/validator.xml @@ -0,0 +1,61 @@ + + + + + + A + + + + + : + + + + + ( + + + + + ( + + + + + + B + + + + + : + + + + + <empty> + + + + + + + ) + + + * + + + + + ) + + + * + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0/invalid.xml b/validator/tests/xml/Page195E0/invalid.xml new file mode 100644 index 0000000..b8ab5de --- /dev/null +++ b/validator/tests/xml/Page195E0/invalid.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0/validator.json b/validator/tests/xml/Page195E0/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E0/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0/validator.txt b/validator/tests/xml/Page195E0/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E0/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0/validator.xml b/validator/tests/xml/Page195E0/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E0/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0AddrE0/invalid.xml b/validator/tests/xml/Page195E0AddrE0/invalid.xml new file mode 100644 index 0000000..94862f9 --- /dev/null +++ b/validator/tests/xml/Page195E0AddrE0/invalid.xml @@ -0,0 +1,3 @@ + + 123 Some Street + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0AddrE0/validator.json b/validator/tests/xml/Page195E0AddrE0/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E0AddrE0/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0AddrE0/validator.txt b/validator/tests/xml/Page195E0AddrE0/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E0AddrE0/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0AddrE0/validator.xml b/validator/tests/xml/Page195E0AddrE0/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E0AddrE0/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0AddrE0NameE0/valid.xml b/validator/tests/xml/Page195E0AddrE0NameE0/valid.xml new file mode 100644 index 0000000..3eea1a9 --- /dev/null +++ b/validator/tests/xml/Page195E0AddrE0NameE0/valid.xml @@ -0,0 +1,4 @@ + + 123 Some Street + Shannon + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0AddrE0NameE0/validator.json b/validator/tests/xml/Page195E0AddrE0NameE0/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E0AddrE0NameE0/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0AddrE0NameE0/validator.txt b/validator/tests/xml/Page195E0AddrE0NameE0/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E0AddrE0NameE0/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0AddrE0NameE0/validator.xml b/validator/tests/xml/Page195E0AddrE0NameE0/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E0AddrE0NameE0/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0/valid.xml b/validator/tests/xml/Page195E0NameE0/valid.xml new file mode 100644 index 0000000..054e0db --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0/valid.xml @@ -0,0 +1,3 @@ + + Shannon + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0/validator.json b/validator/tests/xml/Page195E0NameE0/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0/validator.txt b/validator/tests/xml/Page195E0NameE0/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0/validator.xml b/validator/tests/xml/Page195E0NameE0/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0AddrE0/valid.xml b/validator/tests/xml/Page195E0NameE0AddrE0/valid.xml new file mode 100644 index 0000000..c34a887 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0AddrE0/valid.xml @@ -0,0 +1,4 @@ + + Shannon + 123 Some Street + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0AddrE0/validator.json b/validator/tests/xml/Page195E0NameE0AddrE0/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0AddrE0/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0AddrE0/validator.txt b/validator/tests/xml/Page195E0NameE0AddrE0/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0AddrE0/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0AddrE0/validator.xml b/validator/tests/xml/Page195E0NameE0AddrE0/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0AddrE0/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE0/valid.xml b/validator/tests/xml/Page195E0NameE0NameE0/valid.xml new file mode 100644 index 0000000..d6da736 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE0/valid.xml @@ -0,0 +1,4 @@ + + Shannon + Sheldon + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE0/validator.json b/validator/tests/xml/Page195E0NameE0NameE0/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE0/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE0/validator.txt b/validator/tests/xml/Page195E0NameE0NameE0/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE0/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE0/validator.xml b/validator/tests/xml/Page195E0NameE0NameE0/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE0/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE0TelE0/valid.xml b/validator/tests/xml/Page195E0NameE0NameE0TelE0/valid.xml new file mode 100644 index 0000000..bc63b7e --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE0TelE0/valid.xml @@ -0,0 +1,5 @@ + + Shannon + Sheldon + 123 + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.json b/validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.txt b/validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.xml b/validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE0TelE0/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE2/valid.xml b/validator/tests/xml/Page195E0NameE0NameE2/valid.xml new file mode 100644 index 0000000..05e98cc --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE2/valid.xml @@ -0,0 +1,6 @@ + + Shannon + Sheldon + an@e.mail + another@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE2/validator.json b/validator/tests/xml/Page195E0NameE0NameE2/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE2/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE2/validator.txt b/validator/tests/xml/Page195E0NameE0NameE2/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE2/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE2/validator.xml b/validator/tests/xml/Page195E0NameE0NameE2/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE2/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE2TelE0/valid.xml b/validator/tests/xml/Page195E0NameE0NameE2TelE0/valid.xml new file mode 100644 index 0000000..12902ae --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE2TelE0/valid.xml @@ -0,0 +1,7 @@ + + Shannon + Sheldon + an@e.mail + another@e.mail + 123 + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.json b/validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.txt b/validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.xml b/validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0NameE2TelE0/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE0NameE2/valid.xml b/validator/tests/xml/Page195E0NameE0TelE0NameE2/valid.xml new file mode 100644 index 0000000..428b136 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE0NameE2/valid.xml @@ -0,0 +1,7 @@ + + Shannon + 123 + Sheldon + an@e.mail + another@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.json b/validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.txt b/validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.xml b/validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE0NameE2/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE2NameE0/invalid.xml b/validator/tests/xml/Page195E0NameE0TelE2NameE0/invalid.xml new file mode 100644 index 0000000..ce760fa --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE2NameE0/invalid.xml @@ -0,0 +1,7 @@ + + Shannon + 123 + an@e.mail + another@e.mail + Sheldon + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.json b/validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.txt b/validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.xml b/validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE2NameE0/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE2NameE2/invalid.xml b/validator/tests/xml/Page195E0NameE0TelE2NameE2/invalid.xml new file mode 100644 index 0000000..00a18dc --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE2NameE2/invalid.xml @@ -0,0 +1,9 @@ + + Shannon + 123 + an@e.mail + another@e.mail + Sheldon + an@e.mail + another@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.json b/validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.txt b/validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.xml b/validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE0TelE2NameE2/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2NameE0/valid.xml b/validator/tests/xml/Page195E0NameE2NameE0/valid.xml new file mode 100644 index 0000000..22a6a52 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2NameE0/valid.xml @@ -0,0 +1,6 @@ + + Shannon + an@e.mail + another@e.mail + Sheldon + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2NameE0/validator.json b/validator/tests/xml/Page195E0NameE2NameE0/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2NameE0/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2NameE0/validator.txt b/validator/tests/xml/Page195E0NameE2NameE0/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2NameE0/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2NameE0/validator.xml b/validator/tests/xml/Page195E0NameE2NameE0/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2NameE0/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2NameE0TelE0/valid.xml b/validator/tests/xml/Page195E0NameE2NameE0TelE0/valid.xml new file mode 100644 index 0000000..57af58a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2NameE0TelE0/valid.xml @@ -0,0 +1,7 @@ + + Shannon + an@e.mail + another@e.mail + Sheldon + 123 + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.json b/validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.txt b/validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.xml b/validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2NameE0TelE0/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE0NameE0/invalid.xml b/validator/tests/xml/Page195E0NameE2TelE0NameE0/invalid.xml new file mode 100644 index 0000000..f4cc1d1 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE0NameE0/invalid.xml @@ -0,0 +1,7 @@ + + Shannon + an@e.mail + another@e.mail + 123 + Sheldon + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.json b/validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.txt b/validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.xml b/validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE0NameE0/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE0NameE2/invalid.xml b/validator/tests/xml/Page195E0NameE2TelE0NameE2/invalid.xml new file mode 100644 index 0000000..0054db8 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE0NameE2/invalid.xml @@ -0,0 +1,9 @@ + + Shannon + an@e.mail + another@e.mail + 123 + Sheldon + an@e.mail + another@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.json b/validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.txt b/validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.xml b/validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE0NameE2/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE2NameE2/invalid.xml b/validator/tests/xml/Page195E0NameE2TelE2NameE2/invalid.xml new file mode 100644 index 0000000..bf30ac5 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE2NameE2/invalid.xml @@ -0,0 +1,11 @@ + + Shannon + an@e.mail + another@e.mail + 123 + an@e.mail + another@e.mail + Sheldon + an@e.mail + another@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.json b/validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.txt b/validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.xml b/validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0NameE2TelE2NameE2/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0TelE0NameE0NameE0/invalid.xml b/validator/tests/xml/Page195E0TelE0NameE0NameE0/invalid.xml new file mode 100644 index 0000000..9f4160b --- /dev/null +++ b/validator/tests/xml/Page195E0TelE0NameE0NameE0/invalid.xml @@ -0,0 +1,5 @@ + + 123 + Shannon + Sheldon + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.json b/validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.txt b/validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.xml b/validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0TelE0NameE0NameE0/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0TelE0NameE0NameE2/invalid.xml b/validator/tests/xml/Page195E0TelE0NameE0NameE2/invalid.xml new file mode 100644 index 0000000..6589144 --- /dev/null +++ b/validator/tests/xml/Page195E0TelE0NameE0NameE2/invalid.xml @@ -0,0 +1,7 @@ + + 123 + Shannon + Sheldon + an@e.mail + another@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.json b/validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.txt b/validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.xml b/validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E0TelE0NameE0NameE2/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E1/invalid.xml b/validator/tests/xml/Page195E1/invalid.xml new file mode 100644 index 0000000..a4fa361 --- /dev/null +++ b/validator/tests/xml/Page195E1/invalid.xml @@ -0,0 +1,3 @@ + + an@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E1/validator.json b/validator/tests/xml/Page195E1/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E1/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E1/validator.txt b/validator/tests/xml/Page195E1/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E1/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E1/validator.xml b/validator/tests/xml/Page195E1/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E1/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E1AddrE1/invalid.xml b/validator/tests/xml/Page195E1AddrE1/invalid.xml new file mode 100644 index 0000000..4e9904b --- /dev/null +++ b/validator/tests/xml/Page195E1AddrE1/invalid.xml @@ -0,0 +1,5 @@ + + an@e.mail + 123 Some Street + another@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E1AddrE1/validator.json b/validator/tests/xml/Page195E1AddrE1/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E1AddrE1/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E1AddrE1/validator.txt b/validator/tests/xml/Page195E1AddrE1/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E1AddrE1/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E1AddrE1/validator.xml b/validator/tests/xml/Page195E1AddrE1/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E1AddrE1/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E1AddrE1NameE1/valid.xml b/validator/tests/xml/Page195E1AddrE1NameE1/valid.xml new file mode 100644 index 0000000..49308ff --- /dev/null +++ b/validator/tests/xml/Page195E1AddrE1NameE1/valid.xml @@ -0,0 +1,7 @@ + + an@e.mail + 123 Some Street + other@e.mail + Shannon + another@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E1AddrE1NameE1/validator.json b/validator/tests/xml/Page195E1AddrE1NameE1/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E1AddrE1NameE1/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E1AddrE1NameE1/validator.txt b/validator/tests/xml/Page195E1AddrE1NameE1/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E1AddrE1NameE1/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E1AddrE1NameE1/validator.xml b/validator/tests/xml/Page195E1AddrE1NameE1/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E1AddrE1NameE1/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E1NameE1/valid.xml b/validator/tests/xml/Page195E1NameE1/valid.xml new file mode 100644 index 0000000..7972efc --- /dev/null +++ b/validator/tests/xml/Page195E1NameE1/valid.xml @@ -0,0 +1,5 @@ + + an@e.mail + Shannon + other@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E1NameE1/validator.json b/validator/tests/xml/Page195E1NameE1/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E1NameE1/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E1NameE1/validator.txt b/validator/tests/xml/Page195E1NameE1/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E1NameE1/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E1NameE1/validator.xml b/validator/tests/xml/Page195E1NameE1/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E1NameE1/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E1NameE1AddrE1/valid.xml b/validator/tests/xml/Page195E1NameE1AddrE1/valid.xml new file mode 100644 index 0000000..49d0ec5 --- /dev/null +++ b/validator/tests/xml/Page195E1NameE1AddrE1/valid.xml @@ -0,0 +1,7 @@ + + an@e.mail + Shannon + other@e.mail + 123 Some Street + another@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E1NameE1AddrE1/validator.json b/validator/tests/xml/Page195E1NameE1AddrE1/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E1NameE1AddrE1/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E1NameE1AddrE1/validator.txt b/validator/tests/xml/Page195E1NameE1AddrE1/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E1NameE1AddrE1/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E1NameE1AddrE1/validator.xml b/validator/tests/xml/Page195E1NameE1AddrE1/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E1NameE1AddrE1/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2/invalid.xml b/validator/tests/xml/Page195E2/invalid.xml new file mode 100644 index 0000000..01c4aab --- /dev/null +++ b/validator/tests/xml/Page195E2/invalid.xml @@ -0,0 +1,4 @@ + + an@e.mail + an@e.mail2 + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2/validator.json b/validator/tests/xml/Page195E2/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E2/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2/validator.txt b/validator/tests/xml/Page195E2/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E2/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2/validator.xml b/validator/tests/xml/Page195E2/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E2/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2AddrE2/invalid.xml b/validator/tests/xml/Page195E2AddrE2/invalid.xml new file mode 100644 index 0000000..2bcd5fd --- /dev/null +++ b/validator/tests/xml/Page195E2AddrE2/invalid.xml @@ -0,0 +1,7 @@ + + an@e.mail + an@e.mail2 + 123 Some Street + another@e.mail + another@e.mail2 + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2AddrE2/validator.json b/validator/tests/xml/Page195E2AddrE2/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E2AddrE2/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2AddrE2/validator.txt b/validator/tests/xml/Page195E2AddrE2/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E2AddrE2/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2AddrE2/validator.xml b/validator/tests/xml/Page195E2AddrE2/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E2AddrE2/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2AddrE2NameE2/valid.xml b/validator/tests/xml/Page195E2AddrE2NameE2/valid.xml new file mode 100644 index 0000000..cba043b --- /dev/null +++ b/validator/tests/xml/Page195E2AddrE2NameE2/valid.xml @@ -0,0 +1,10 @@ + + an@e.mail + an@e.mail2 + 123 Some Street + other@e.mail + other@e.mail2 + Shannon + another@e.mail + another@e.mail2 + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2AddrE2NameE2/validator.json b/validator/tests/xml/Page195E2AddrE2NameE2/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E2AddrE2NameE2/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2AddrE2NameE2/validator.txt b/validator/tests/xml/Page195E2AddrE2NameE2/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E2AddrE2NameE2/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2AddrE2NameE2/validator.xml b/validator/tests/xml/Page195E2AddrE2NameE2/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E2AddrE2NameE2/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE0TelE0NameE2/invalid.xml b/validator/tests/xml/Page195E2NameE0TelE0NameE2/invalid.xml new file mode 100644 index 0000000..50ac7da --- /dev/null +++ b/validator/tests/xml/Page195E2NameE0TelE0NameE2/invalid.xml @@ -0,0 +1,9 @@ + + an@e.mail + another@e.mail + Shannon + 123 + Sheldon + an@e.mail + another@e.mail + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.json b/validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.json new file mode 100644 index 0000000..4a79615 --- /dev/null +++ b/validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.json @@ -0,0 +1,192 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Tel" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.txt b/validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.txt new file mode 100644 index 0000000..cda669a --- /dev/null +++ b/validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.txt @@ -0,0 +1 @@ +Person:{[Name:*,(Tel:*)?];[Name:*,(Email:*)*];(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.xml b/validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.xml new file mode 100644 index 0000000..683e74d --- /dev/null +++ b/validator/tests/xml/Page195E2NameE0TelE0NameE2/validator.xml @@ -0,0 +1,198 @@ + + + + + + Person + + + + + : + + + + + { + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Tel + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ] + + + + + ; + + + + + + + [ + + + + + + Name + + + + + : + + + + + * + + + + + + + , + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ] + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE2/valid.xml b/validator/tests/xml/Page195E2NameE2/valid.xml new file mode 100644 index 0000000..d94bdf3 --- /dev/null +++ b/validator/tests/xml/Page195E2NameE2/valid.xml @@ -0,0 +1,7 @@ + + an@e.mail + an@e.mail2 + Shannon + other@e.mail + other@e.mail2 + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE2/validator.json b/validator/tests/xml/Page195E2NameE2/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E2NameE2/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE2/validator.txt b/validator/tests/xml/Page195E2NameE2/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E2NameE2/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE2/validator.xml b/validator/tests/xml/Page195E2NameE2/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E2NameE2/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE2AddrE2/valid.xml b/validator/tests/xml/Page195E2NameE2AddrE2/valid.xml new file mode 100644 index 0000000..f038205 --- /dev/null +++ b/validator/tests/xml/Page195E2NameE2AddrE2/valid.xml @@ -0,0 +1,10 @@ + + an@e.mail + an@e.mail2 + Shannon + other@e.mail + other@e.mail2 + 123 Some Street + another@e.mail + another@e.mail2 + \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE2AddrE2/validator.json b/validator/tests/xml/Page195E2NameE2AddrE2/validator.json new file mode 100644 index 0000000..37524e4 --- /dev/null +++ b/validator/tests/xml/Page195E2NameE2AddrE2/validator.json @@ -0,0 +1,154 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Interleave": { + "OpenCurly": { + "Value": "{" + }, + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Name" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "Optional": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addr" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "QuestionMark": { + "Value": "?" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "Interleave": { + "LeftPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Email" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + }, + "SemiColon": { + "Value": ";" + }, + "RightPattern": { + "ZeroOrMore": { + "OpenParen": { + "Value": "(" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "~=" + }, + "Expr": { + "Terminal": { + "Literal": "\"^([ \\t\\r\\n\\v\\f])+$\"", + "StringValue": "^([ \t\r\n\u000b\f])+$" + } + } + } + } + } + }, + "CloseParen": { + "Value": ")" + }, + "Star": { + "Value": "*" + } + } + } + } + } + } + }, + "CloseCurly": { + "Value": "}" + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE2AddrE2/validator.txt b/validator/tests/xml/Page195E2NameE2AddrE2/validator.txt new file mode 100644 index 0000000..c55e128 --- /dev/null +++ b/validator/tests/xml/Page195E2NameE2AddrE2/validator.txt @@ -0,0 +1 @@ +Person:{Name:*;(Addr:*)?;(Email:*)*;(~="^([ \t\r\n\v\f])+$")*} \ No newline at end of file diff --git a/validator/tests/xml/Page195E2NameE2AddrE2/validator.xml b/validator/tests/xml/Page195E2NameE2AddrE2/validator.xml new file mode 100644 index 0000000..8149297 --- /dev/null +++ b/validator/tests/xml/Page195E2NameE2AddrE2/validator.xml @@ -0,0 +1,159 @@ + + + + + + Person + + + + + : + + + + + { + + + + + + Name + + + + + : + + + + + * + + + + + + + ; + + + + + + + ( + + + + + + Addr + + + + + : + + + + + * + + + + + + + ) + + + ? + + + + + ; + + + + + + + ( + + + + + + Email + + + + + : + + + + + * + + + + + + + ) + + + * + + + + + ; + + + + + ( + + + + + + + ~= + + + + "^([ \t\r\n\v\f])+$" + ^([ ��])+$ + + + + + + + + + ) + + + * + + + + + + + + + } + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/XmlContextDavid/invalid.xml b/validator/tests/xml/XmlContextDavid/invalid.xml new file mode 100644 index 0000000..51866f7 --- /dev/null +++ b/validator/tests/xml/XmlContextDavid/invalid.xml @@ -0,0 +1,21 @@ + + David + + 123 + TheStreet + + + 13 + + + 456 + SomeStreet + + + 15 + + 0123456789 + + + 51 + \ No newline at end of file diff --git a/validator/tests/xml/XmlContextDavid/validator.json b/validator/tests/xml/XmlContextDavid/validator.json new file mode 100644 index 0000000..7597ff9 --- /dev/null +++ b/validator/tests/xml/XmlContextDavid/validator.json @@ -0,0 +1,143 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"TheStreet\"", + "StringValue": "TheStreet" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/XmlContextDavid/validator.txt b/validator/tests/xml/XmlContextDavid/validator.txt new file mode 100644 index 0000000..f7d89bf --- /dev/null +++ b/validator/tests/xml/XmlContextDavid/validator.txt @@ -0,0 +1 @@ +Person:.Addresses[*,Number:==456,*,Street:=="TheStreet",*] \ No newline at end of file diff --git a/validator/tests/xml/XmlContextDavid/validator.xml b/validator/tests/xml/XmlContextDavid/validator.xml new file mode 100644 index 0000000..5784140 --- /dev/null +++ b/validator/tests/xml/XmlContextDavid/validator.xml @@ -0,0 +1,149 @@ + + + + + + Person + + + + + : + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + + * + + + + + , + + + + + + + + Street + + + + + : + + + + + + + == + + + + "TheStreet" + TheStreet + + + + + + + + + + + , + + + + + * + + + + + + + + + + + ] + + + + + + + + + + \ No newline at end of file diff --git a/validator/tests/xml/XmlContextRobert/valid.xml b/validator/tests/xml/XmlContextRobert/valid.xml new file mode 100644 index 0000000..3c95e0a --- /dev/null +++ b/validator/tests/xml/XmlContextRobert/valid.xml @@ -0,0 +1,14 @@ + + Robert + + 456 + TheStreet + + + 14 + + 0127897897 + + + 36 + \ No newline at end of file diff --git a/validator/tests/xml/XmlContextRobert/validator.json b/validator/tests/xml/XmlContextRobert/validator.json new file mode 100644 index 0000000..7597ff9 --- /dev/null +++ b/validator/tests/xml/XmlContextRobert/validator.json @@ -0,0 +1,143 @@ +{ + "TopPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Person" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "Contains": { + "Dot": { + "Value": "." + }, + "Pattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Addresses" + } + }, + "Pattern": { + "Concat": { + "OpenBracket": { + "Value": "[" + }, + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Number" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "456", + "IntValue": 456 + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "Concat": { + "LeftPattern": { + "TreeNode": { + "Name": { + "Name": { + "StringValue": "Street" + } + }, + "Colon": { + "Value": ":" + }, + "Pattern": { + "LeafNode": { + "Expr": { + "BuiltIn": { + "Symbol": { + "Value": "==" + }, + "Expr": { + "Terminal": { + "Literal": "\"TheStreet\"", + "StringValue": "TheStreet" + } + } + } + } + } + } + } + }, + "Comma": { + "Value": "," + }, + "RightPattern": { + "ZAny": { + "Star": { + "Value": "*" + } + } + } + } + } + } + } + } + }, + "CloseBracket": { + "Value": "]" + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/validator/tests/xml/XmlContextRobert/validator.txt b/validator/tests/xml/XmlContextRobert/validator.txt new file mode 100644 index 0000000..f7d89bf --- /dev/null +++ b/validator/tests/xml/XmlContextRobert/validator.txt @@ -0,0 +1 @@ +Person:.Addresses[*,Number:==456,*,Street:=="TheStreet",*] \ No newline at end of file diff --git a/validator/tests/xml/XmlContextRobert/validator.xml b/validator/tests/xml/XmlContextRobert/validator.xml new file mode 100644 index 0000000..5784140 --- /dev/null +++ b/validator/tests/xml/XmlContextRobert/validator.xml @@ -0,0 +1,149 @@ + + + + + + Person + + + + + : + + + + + . + + + + + + Addresses + + + + + + + [ + + + + + * + + + + + , + + + + + + + + Number + + + + + : + + + + + + + == + + + + 456 + 456 + + + + + + + + + + + , + + + + + + + * + + + + + , + + + + + + + + Street + + + + + : + + + + + + + == + + + + "TheStreet" + TheStreet + + + + + + + + + + + , + + + + + * + + + + + + + + + + + ] + + + + + + + + + + \ No newline at end of file