diff options
Diffstat (limited to '2020/04.raku')
-rwxr-xr-x | 2020/04.raku | 1227 |
1 files changed, 1227 insertions, 0 deletions
diff --git a/2020/04.raku b/2020/04.raku new file mode 100755 index 0000000..901bad8 --- /dev/null +++ b/2020/04.raku @@ -0,0 +1,1227 @@ +#!/usr/bin/env raku + +use v6.d; + +#| Run with --one or --two to get the solution to a particular part. +proto sub MAIN ( + *%params +) { * } + +multi sub MAIN ( + #| Show the solution of part one. + Bool:D :$one!, +) { + data() + .split("\n\n") + .map(*.words) + .map({ passport-to-hash($_) }) + .map({ check-passport-values($_) }) + .grep({ is-all-valid($_) }) + .elems + .say +} + +multi sub MAIN ( + #| Show the solution of part one. + Bool:D :$two!, +) { + data() + .split("\n\n") + .map(*.words) + .map({ passport-to-hash($_) }) + .map({ check-passport-values($_, :strict) }) + .grep({ is-all-valid($_) }) + .elems + .say +} + +#| Combine a number of passport elements into a single passport Hash. +sub passport-to-hash ( + #| All the elements contained in a single passport data string. + @elements, + + --> Associative +) { + my %passport; + + for @elements { + my ($key, $value) = $_.split(':'); + %passport{$key} = $value; + } + + %passport; +} + +#| Check wether all fields in the passport entry are valid. +sub is-all-valid ( + #| A hash representing the passport data. + %passport, + + --> Bool +) { + for < byr iyr eyr hgt hcl ecl pid > { + return False unless %passport{$_}; + } + + True; +} + +#| Check each field of the passport for validity. Turns the value of the field +#| into a Bool, with True representing the field's value was indeed valid. +sub check-passport-values ( + %passport is copy, + + Bool:D :$strict = False, + + --> Associative +) { + for < byr iyr eyr hgt hcl ecl pid > { + %passport{$_} = is-valid($_, %passport{$_}, :$strict); + } + + # CID is ignored. + %passport<cid> = True; + + %passport; +} + +multi sub is-valid ( + 'byr', + $value, + Bool:D :$strict = False, + --> Bool +) { + return False unless $value; + return True unless $strict; + + return False unless 1920 ≤ $value ≤ 2002; + + True; +} + +multi sub is-valid ( + 'iyr', + $value, + Bool:D :$strict = False, + --> Bool +) { + return False unless $value; + return True unless $strict; + + return False unless 2010 ≤ $value ≤ 2020; + + True; +} + +multi sub is-valid ( + 'eyr', + $value, + Bool:D :$strict = False, + --> Bool +) { + return False unless $value; + return True unless $strict; + + return False unless 2020 ≤ $value ≤ 2030; + + True; +} + +multi sub is-valid ( + 'hgt', + $value, + Bool:D :$strict = False, + --> Bool +) { + return False unless $value; + return True unless $strict; + + my $match = ($value ~~ / (\d+) ([ 'cm' || 'in' ]) /); + + return False unless $match; + + given ($match[1].Str) { + when 'cm' { return False unless 150 ≤ $match[0] ≤ 193 } + when 'in' { return False unless 59 ≤ $match[0] ≤ 76 } + } + + True; +} + +multi sub is-valid ( + 'hcl', + $value, + Bool:D :$strict = False, + --> Bool +) { + return False unless $value; + return True unless $strict; + + return False unless $value ~~ / '#' <[ \d a..f ]> ** 6 /; + + True; +} + +multi sub is-valid ( + 'ecl', + $value, + Bool:D :$strict = False, + --> Bool +) { + return False unless $value; + return True unless $strict; + + return False unless $value ∈ < amb blu brn gry grn hzl oth >; + + True; +} + +multi sub is-valid ( + 'pid', + $value, + Bool:D :$strict = False, + --> Bool +) { + return False unless $value; + return True unless $strict; + + return False unless $value ~~ / ^ \d ** 9 $ /; + + True; +} + +sub data { + q:to/EOF/; + byr:1937 + eyr:2030 pid:154364481 + hgt:158cm iyr:2015 ecl:brn hcl:#c0946f cid:155 + + cid:279 + eyr:2029 + pid:675014709 ecl:amb + byr:1985 hgt:179in hcl:z iyr:2025 + + iyr:2011 hgt:181cm hcl:#341e13 pid:282499883 byr:1953 + eyr:2023 + ecl:brn + + eyr:2040 iyr:1984 pid:2371396209 byr:1951 cid:283 hgt:164cm + hcl:#623a2f + + iyr:2014 byr:1966 hgt:153cm pid:900693718 eyr:2020 ecl:gry hcl:#866857 + + eyr:2020 hgt:162cm + byr:1939 pid:900852891 iyr:2020 + ecl:oth hcl:#b6652a + + iyr:1956 + hcl:2385ac + hgt:167in + ecl:#9b82e8 + eyr:2003 + cid:214 byr:2012 pid:483285062 + + cid:146 byr:1938 hcl:#c0946f pid:136823471 + hgt:180cm iyr:2011 + eyr:2020 ecl:gry + + cid:100 hgt:187cm + byr:1973 ecl:blu + iyr:2020 + hcl:#888785 eyr:2030 + pid:386799181 + + ecl:#dbba4f + hcl:z iyr:2028 pid:193cm + byr:2029 + eyr:1962 hgt:113 + + cid:269 byr:1928 pid:604152679 + iyr:2017 eyr:2027 + hcl:#c0946f + hgt:189cm + ecl:blu + + pid:653548437 hcl:z cid:166 iyr:2011 eyr:1967 + hgt:162 ecl:xry byr:2019 + + byr:1979 ecl:hzl iyr:2018 hcl:#7d3b0c + eyr:2026 + pid:981366150 hgt:151cm + + pid:055334062 cid:272 eyr:2025 ecl:grn iyr:2016 hgt:159cm hcl:#a97842 byr:1989 + + eyr:2033 + hgt:170cm ecl:brn pid:#299cf2 hcl:#602927 byr:2004 iyr:2023 + + iyr:2020 cid:273 + pid:038972962 + hcl:#c0946f hgt:152cm + eyr:2021 ecl:blu byr:1986 + + pid:015622106 hgt:154cm iyr:2012 byr:1922 + eyr:2028 hcl:#9dc667 ecl:blu + + iyr:2017 eyr:2025 hgt:179cm cid:324 + pid:579870519 byr:1934 + + hcl:#6b5442 eyr:2021 + pid:104071480 ecl:brn + hgt:162cm cid:89 byr:1949 + iyr:2017 + + pid:388871409 cid:163 hgt:190cm ecl:amb eyr:2022 iyr:2019 byr:1963 hcl:#fffffd + + cid:190 byr:1968 iyr:2018 + hgt:155cm hcl:#6b5442 ecl:grn + pid:891458997 eyr:2030 + + hcl:z + cid:103 iyr:2026 hgt:171 byr:1979 + pid:076174078 + eyr:2031 ecl:#fc4638 + + hcl:#f8063e pid:684921958 ecl:gry eyr:2020 iyr:2011 + byr:1958 hgt:189cm + cid:131 + + ecl:gry cid:90 iyr:2010 hgt:165cm + pid:683095019 byr:1953 + hcl:#341e13 + eyr:2030 + + pid:000303662 + ecl:amb iyr:2014 hcl:#733820 byr:1964 hgt:184cm cid:149 + eyr:2027 + + hcl:#341e13 hgt:150cm byr:1999 eyr:2022 pid:950260967 cid:72 + ecl:grn iyr:2012 + + cid:159 byr:1987 + hcl:#623a2f pid:144877169 eyr:2021 ecl:brn hgt:164cm + + pid:759578668 + cid:235 ecl:amb hgt:154cm + eyr:2023 byr:1941 hcl:#fffffd + iyr:2023 + + pid:18101245 hcl:z hgt:172in iyr:1947 byr:1956 ecl:grn eyr:1964 + + eyr:1980 pid:#8d62b1 ecl:#3e8868 cid:235 + iyr:1978 hcl:#efcc98 + byr:2025 hgt:181in + + hgt:64cm hcl:3bc533 iyr:2019 byr:2015 pid:158cm eyr:2027 ecl:#1abbd7 + + eyr:2020 iyr:2011 + pid:739854643 byr:1941 hgt:179cm hcl:#602927 ecl:gry cid:330 + + hcl:#a97842 iyr:2011 hgt:167cm pid:527353688 byr:1927 cid:256 eyr:2026 ecl:grn + + iyr:2011 pid:350783151 hgt:168cm + byr:1961 ecl:amb hcl:#341e13 + cid:181 + + eyr:2025 hgt:160cm + ecl:brn hcl:#cfa07d pid:136929481 + iyr:2017 + + ecl:oth byr:1994 iyr:2020 hgt:162cm pid:578918570 eyr:2027 hcl:#fffffd + cid:325 + + hgt:63in byr:1925 + ecl:amb iyr:2014 cid:224 + hcl:#341e13 pid:208286938 + + ecl:#76434f hgt:97 + hcl:z eyr:1968 pid:#871dc8 iyr:1955 + byr:2007 + + byr:2011 + eyr:1962 hcl:9ac7b8 pid:6836105558 + ecl:#d7084f + iyr:2023 hgt:76cm + + eyr:2016 iyr:2030 hgt:107 pid:948192703 byr:2013 + hcl:b80af7 ecl:#d47439 + + eyr:2027 iyr:2017 + pid:#27d2a6 byr:1921 ecl:brn hcl:#c0946f hgt:59in + + byr:1982 hcl:#ceb3a1 ecl:brn eyr:2020 hgt:63in + iyr:2017 + + ecl:brn hgt:152cm byr:1962 + iyr:2013 + pid:381950515 hcl:#2afabd eyr:2020 + + hgt:158cm ecl:gry pid:252068098 + cid:281 eyr:2023 byr:1950 iyr:2016 + hcl:#ceb3a1 + + byr:1922 + hgt:187cm cid:74 + hcl:#a97842 + ecl:amb + pid:045338811 + eyr:2025 iyr:2019 + + hgt:176cm eyr:2022 iyr:2019 byr:1938 ecl:blu pid:610286298 + hcl:#a97842 + + iyr:2028 byr:2025 + eyr:2039 pid:72530856 ecl:#a819ad hgt:69 hcl:z + + iyr:2018 eyr:2030 + hcl:#8b1e1f ecl:hzl byr:1971 + pid:189005628 + + pid:531154383 eyr:2020 hcl:#733820 ecl:oth + hgt:72in + iyr:2016 + byr:1983 + + hgt:178cm hcl:#623a2f pid:562756202 + eyr:2020 + byr:1929 ecl:oth + iyr:2013 + + iyr:2013 byr:1983 pid:510998389 ecl:gry + cid:99 hcl:#a97842 + + ecl:gry eyr:2026 + cid:202 hgt:191cm byr:1981 + pid:414853225 + hcl:#7d3b0c + + hcl:#866857 byr:1951 eyr:2020 hgt:169cm pid:844496997 + iyr:2016 ecl:brn + + pid:083641628 iyr:2019 eyr:2030 + byr:1938 ecl:hzl hcl:#b6652a hgt:68in + + hcl:#18171d + byr:1981 + pid:425911593 cid:309 eyr:2026 ecl:brn hgt:168cm + + hcl:c84fda pid:#80d5e6 byr:1925 hgt:162cm iyr:2026 + eyr:2036 ecl:#62c166 + + pid:461660733 eyr:2028 + hgt:167cm ecl:hzl hcl:#cfa07d iyr:2010 + cid:183 + + eyr:1930 byr:2021 iyr:2016 pid:163cm + hcl:79428f cid:136 + ecl:amb + + hcl:#efcc98 hgt:176cm eyr:2022 ecl:brn iyr:2013 pid:541033681 byr:1952 + + hgt:59cm + ecl:#d9b0bc pid:#3ab4b4 hcl:7aa29f + eyr:2034 + byr:2011 cid:266 iyr:2004 + + byr:1991 hcl:#cfa07d cid:259 hgt:67cm eyr:2024 pid:631601343 ecl:brn iyr:2011 + + byr:2020 + ecl:gry iyr:1944 + pid:421649652 hgt:107 + hcl:6d8593 eyr:2026 + + ecl:blu + byr:1953 hgt:66in hcl:#888785 eyr:2021 pid:174284708 + + ecl:#8f2c20 + pid:27713962 iyr:2010 cid:149 byr:1952 hcl:#866857 eyr:2030 + hgt:186cm + + eyr:2023 byr:1989 ecl:blu + hcl:#18171d pid:480641 iyr:2020 + hgt:74in + + hcl:#efcc98 + eyr:2023 hgt:157cm byr:1968 + iyr:2013 + ecl:amb pid:436599087 + + eyr:2021 + hgt:175cm hcl:#efcc98 ecl:hzl pid:701245439 + byr:1943 iyr:2015 + + hgt:164cm pid:310546869 + eyr:2021 hcl:#b6652a ecl:oth iyr:2011 cid:181 + byr:2001 + + byr:2016 hcl:94f4b9 eyr:1922 hgt:155cm ecl:hzl iyr:2009 pid:83440078 + + iyr:2014 hgt:60in + eyr:2031 + hcl:#c0946f + byr:1948 ecl:grt pid:117909137 + + byr:1965 hgt:186cm iyr:2010 cid:117 hcl:#602927 pid:806868279 + eyr:2029 + ecl:grn + + ecl:amb hgt:187cm hcl:#c0946f byr:1935 + cid:139 iyr:2019 eyr:2023 + + pid:925865182 + byr:1952 hgt:158cm hcl:#619e03 ecl:gry eyr:2026 + iyr:2016 + + iyr:2012 hgt:73in + cid:199 + byr:1959 + ecl:hzl hcl:#fcd2f7 pid:268810283 + + eyr:2025 + pid:317239854 ecl:brn byr:1955 hcl:#fffffd cid:220 hgt:175cm + iyr:2015 + + ecl:blu + byr:1939 hcl:#3332c0 + iyr:2019 pid:832588457 eyr:2030 hgt:192cm + + hgt:64cm cid:326 ecl:oth byr:2025 eyr:2025 hcl:z iyr:2012 pid:0394683801 + + ecl:amb byr:1966 + pid:734257450 hgt:65in hcl:#fffffd iyr:2018 eyr:2025 + cid:287 + + cid:249 + eyr:2034 ecl:#7b7bf5 byr:2009 pid:171cm hcl:709fe4 + + hcl:d7c488 ecl:#b9bbb2 + pid:55277333 + cid:90 byr:2022 iyr:1978 + hgt:69cm eyr:1981 + + hcl:z + byr:1949 pid:057966198 eyr:1941 + iyr:2025 + + hgt:168cm ecl:hzl hcl:#866857 iyr:2011 pid:052204052 eyr:2030 + byr:1970 + + pid:318707043 eyr:2029 ecl:hzl hcl:#888785 + byr:1932 iyr:2010 + hgt:166cm + + hcl:z iyr:2010 ecl:oth byr:2006 cid:120 pid:#15d5ef eyr:2039 hgt:73cm + + hcl:96c534 hgt:193in eyr:2036 byr:2008 ecl:#090691 cid:109 pid:603339169 iyr:2027 + + iyr:2029 + ecl:utc + pid:5845500732 hcl:2a32b8 + byr:2009 eyr:2040 + cid:305 hgt:71cm + + byr:1994 iyr:2015 + eyr:2026 + hcl:#623a2f pid:678627790 + hgt:176cm ecl:blu + + byr:2005 hcl:z + ecl:zzz pid:#47729a eyr:2039 hgt:62cm iyr:1983 + + hcl:#cfa07d ecl:blu + iyr:2014 eyr:2025 pid:824483836 hgt:174cm byr:1933 + + hgt:70in + iyr:2010 cid:53 eyr:2023 pid:093704222 ecl:amb hcl:#a97842 byr:1945 + + ecl:brn hcl:#602927 byr:1986 eyr:2029 + pid:422160398 + cid:134 + hgt:156cm + iyr:2020 + + iyr:2014 hgt:187cm byr:1921 eyr:2022 ecl:amb + + pid:765750572 eyr:2021 + ecl:hzl + iyr:1997 hgt:66 + + iyr:2016 + ecl:blu + cid:335 + hgt:175cm pid:297297703 hcl:#b6652a + eyr:2030 + + hgt:64in hcl:#866857 pid:159cm byr:1972 + cid:321 eyr:2021 ecl:brn + iyr:2017 + + pid:884038003 + iyr:2016 hgt:188cm ecl:grn + byr:1928 eyr:2027 hcl:#341e13 + + pid:020315021 hgt:60in ecl:amb iyr:2018 + hcl:#602927 + eyr:2028 + byr:1935 + + byr:1946 eyr:2021 hcl:#efcc98 iyr:2015 + cid:52 + hgt:177cm + pid:841348804 + + ecl:gry eyr:2027 + byr:1959 pid:482204272 + hcl:#888785 + iyr:2013 + + hcl:#623a2f + eyr:2027 iyr:2011 hgt:189cm pid:767923916 ecl:hzl + byr:1987 + + hgt:152in hcl:#efcc98 ecl:hzl eyr:2030 byr:1971 iyr:1978 pid:499148724 + cid:194 + + pid:#87513f hcl:e2a5de byr:2015 iyr:2016 hgt:155cm eyr:2024 + ecl:gry cid:123 + + byr:1977 + iyr:2028 + hcl:#888785 pid:69801913 eyr:2026 hgt:165in ecl:brn + + byr:1938 hcl:#efcc98 hgt:154cm pid:621714851 eyr:1972 ecl:gry iyr:2014 cid:161 + + hcl:#a97842 + hgt:184cm ecl:oth pid:009682326 + cid:233 eyr:2023 iyr:2019 byr:1982 + + hcl:#ceb3a1 pid:700761574 eyr:2020 byr:1940 iyr:2017 + ecl:gry hgt:76in + + iyr:2017 cid:73 + ecl:hzl + hcl:#efcc98 pid:363441284 + hgt:177cm byr:1924 eyr:2028 + + hcl:#a97842 eyr:2023 byr:1989 pid:589573553 + ecl:oth + iyr:2017 hgt:162cm + + ecl:oth + byr:2001 hgt:167cm hcl:#18171d eyr:2028 iyr:2015 pid:253666913 + + byr:1943 ecl:amb + hcl:#888785 pid:163cm iyr:2025 hgt:76 eyr:2026 + + byr:1963 eyr:2030 + hgt:158in iyr:2023 pid:399153486 hcl:#733820 + + pid:43290252 hgt:167cm cid:302 iyr:2016 hcl:f81436 + byr:1992 ecl:gry + eyr:1922 + + pid:487300118 hgt:167cm hcl:#888785 + iyr:2018 ecl:oth cid:286 byr:1971 eyr:2021 + + eyr:2036 + hgt:94 + byr:2013 + cid:162 hcl:37408d pid:527721797 ecl:dne + iyr:2022 + + hcl:5e67df byr:1973 pid:48217944 hgt:65in eyr:2023 + iyr:2001 ecl:gry + + hcl:717ef8 eyr:1996 pid:154cm ecl:#e2c90e + iyr:2028 + byr:2009 hgt:184cm + + iyr:2015 pid:549968053 hcl:#efcc98 + hgt:151cm eyr:2025 + byr:1993 + ecl:gry + + hgt:165cm ecl:gry + iyr:2020 + byr:1927 hcl:#602927 pid:278946330 + eyr:2027 + + eyr:2031 + ecl:#b01aae pid:151cm + cid:188 iyr:2025 + hgt:60cm byr:2015 + + eyr:2028 pid:928740840 + byr:1931 + hgt:191cm iyr:2014 cid:305 + hcl:#6b5442 + ecl:oth + + hcl:#7d3b0c cid:283 byr:1923 ecl:amb + pid:781290431 iyr:2019 + eyr:2021 + hgt:191cm + + byr:2027 + pid:51702036 + iyr:2028 hgt:165in ecl:gry hcl:z + eyr:2036 + + byr:1971 + ecl:blu iyr:2012 pid:986042111 + eyr:2021 hcl:#888785 + hgt:68in + + hgt:183cm byr:2030 + iyr:2013 + cid:209 pid:989002507 + ecl:hzl eyr:2028 hcl:59c2ce + + ecl:gry iyr:2020 pid:895856989 hcl:#888785 + hgt:185cm byr:1964 eyr:2025 + + ecl:gry + hgt:183cm cid:97 hcl:#93be9b eyr:2021 + byr:1995 pid:668647173 + + hcl:#733820 eyr:2027 + byr:1977 pid:242773849 hgt:184cm iyr:2017 + cid:76 ecl:brn + + hgt:167 hcl:z byr:2012 eyr:2027 + pid:590438786 ecl:hzl + cid:101 iyr:1994 + + iyr:2015 + hcl:#888785 eyr:2024 + ecl:blu pid:279218875 cid:178 byr:1944 hgt:74in + + ecl:oth cid:334 pid:169599381 + hcl:#7d3b0c eyr:2028 hgt:172cm iyr:2010 + + eyr:2033 byr:1973 cid:333 iyr:2019 hcl:z ecl:utc + hgt:178cm pid:#e7abc0 + + eyr:2026 ecl:blu cid:264 byr:1998 hgt:177cm hcl:#602927 + pid:770052780 + iyr:2019 + + ecl:blu + iyr:2016 cid:232 eyr:2023 + pid:643597545 hgt:167cm byr:1986 hcl:#cfa07d + + pid:017818204 + iyr:2017 eyr:2028 hgt:168cm hcl:#602927 byr:1931 ecl:oth + + byr:1984 ecl:grn hgt:191cm hcl:#efcc98 pid:408382086 + iyr:2010 eyr:2025 + + hgt:158cm ecl:#25e195 byr:1929 pid:0367744553 eyr:1957 iyr:2017 + hcl:z + + hgt:168cm byr:1977 pid:006609828 + eyr:2024 + iyr:2015 + ecl:amb hcl:#b6652a + + pid:635167847 iyr:2010 hcl:#18171d hgt:163cm ecl:grn + eyr:2026 + + pid:423029177 byr:1995 + iyr:2014 ecl:hzl + hgt:185cm hcl:#c0946f eyr:2024 cid:230 + + pid:#3e3109 ecl:#a8a0aa iyr:2020 hcl:#733820 eyr:2021 byr:2010 hgt:179in + + iyr:2017 byr:1938 eyr:2022 hcl:#733820 ecl:amb hgt:157cm pid:162425330 + + hgt:160cm + cid:339 byr:1938 + hcl:#341e13 + eyr:2025 iyr:2015 + pid:562755634 + + cid:283 byr:1954 ecl:blu hcl:#ceb3a1 hgt:169cm iyr:2013 pid:616439723 + + pid:830940520 eyr:2022 + byr:1981 hgt:193cm hcl:#18171d iyr:2013 + cid:117 + + hcl:#866857 iyr:2019 ecl:hzl byr:1962 hgt:72in eyr:2020 + + byr:2015 pid:4530685490 ecl:#c7604e hcl:z + hgt:151 eyr:1972 iyr:1948 + + pid:0800674852 hcl:z + ecl:#2a275e hgt:61cm + iyr:1950 eyr:1938 + + iyr:2028 + eyr:1998 + pid:#c604ca + hgt:122 hcl:z + ecl:dne cid:160 byr:2018 + + hcl:z + cid:67 iyr:2029 + byr:1973 + ecl:amb eyr:2030 + hgt:66 + + ecl:hzl + pid:483557353 eyr:2021 + hgt:172cm iyr:2011 + hcl:#888785 + byr:1963 + + eyr:2030 ecl:brn hcl:#fffffd byr:1969 + hgt:161cm pid:632930895 + iyr:2017 + + iyr:2015 byr:2000 + pid:525557240 hgt:156cm eyr:2029 + ecl:brn hcl:#64bf85 + + byr:2007 + iyr:2012 eyr:2029 ecl:#7c1d6f pid:612320497 hgt:165in + + eyr:2026 ecl:grn cid:93 + hcl:#888785 hgt:134 pid:745552484 iyr:2019 byr:1999 + + byr:2001 pid:984678649 hgt:173cm ecl:oth iyr:2012 cid:345 hcl:#fffffd + eyr:2028 + + hcl:#341e13 pid:308853935 + byr:1972 hgt:160cm iyr:2012 eyr:2026 + ecl:amb cid:97 + + hcl:z hgt:151 + ecl:grn pid:132866718 + iyr:2021 byr:1932 + eyr:2024 + + eyr:2027 byr:1923 + ecl:oth hgt:174cm hcl:#733820 + pid:099185839 + iyr:2017 + + iyr:2017 ecl:gry byr:1941 + hgt:74in + pid:540930352 + hcl:#888785 eyr:2023 + + hgt:161cm cid:277 + hcl:#866857 + byr:1928 + eyr:2030 ecl:blu + iyr:2020 pid:358953579 + + hgt:155cm eyr:1930 + iyr:2015 ecl:utc + pid:163cm + byr:2008 hcl:#733820 cid:156 + + byr:1946 hgt:164cm + cid:234 iyr:2015 + pid:168804387 eyr:2025 + ecl:hzl hcl:#a97842 + + hgt:184cm + hcl:#7d3b0c byr:1996 cid:193 iyr:2011 ecl:amb eyr:2030 pid:940497049 + + hcl:#733820 iyr:2016 hgt:168 + eyr:2020 + cid:118 pid:9871436 ecl:gry + + pid:416683862 + hgt:162in + hcl:#602927 byr:2027 + eyr:2027 ecl:gmt + + ecl:#771e11 + iyr:2024 + cid:81 pid:741843390 + hcl:#866857 byr:2012 eyr:1964 + hgt:157in + + pid:720946735 + byr:2002 hcl:#18171d iyr:2026 hgt:70cm + ecl:brn eyr:2025 + + byr:1987 hcl:#623a2f + hgt:165cm pid:087526326 ecl:grn + iyr:2017 eyr:2021 + + byr:2014 hgt:193cm + iyr:2018 hcl:z + eyr:2027 pid:792398819 + + cid:233 + hcl:z ecl:#18002d hgt:174cm iyr:2027 eyr:1944 + + pid:142615460 ecl:blu eyr:2021 + hcl:#c88693 iyr:2017 cid:182 hgt:152cm byr:1966 + + hcl:z hgt:65cm + eyr:1944 ecl:dne byr:2029 pid:1066768764 + iyr:2015 + cid:149 + + hcl:z pid:25144284 hgt:152in + byr:2009 + cid:276 eyr:2037 + iyr:2010 ecl:gmt + + cid:88 hcl:ed6b8a ecl:xry hgt:178in pid:36832491 byr:2020 iyr:2012 eyr:1993 + + byr:1972 iyr:2009 pid:324213657 hgt:160 hcl:z cid:259 eyr:2021 ecl:grn + + hcl:#7d3b0c pid:164496070 eyr:2024 ecl:brn hgt:165cm + + pid:955035528 + byr:1967 eyr:2021 iyr:2015 hcl:#fffffd hgt:156cm + cid:237 + ecl:blu + + hcl:z + eyr:2038 iyr:1973 ecl:grt hgt:193in + pid:41385449 byr:2011 + cid:119 + + byr:1934 pid:713339056 hgt:157cm cid:250 iyr:2016 ecl:blu hcl:#866857 eyr:2026 + + hgt:186cm byr:2012 + eyr:2022 + iyr:2013 hcl:#733820 pid:226693031 ecl:hzl + + cid:118 pid:56750275 hcl:#cfa07d iyr:2028 eyr:2033 byr:1933 hgt:166cm + + byr:1973 + ecl:hzl hgt:167 hcl:z + iyr:2015 pid:70648423 + + byr:1929 + iyr:2012 pid:083005744 ecl:brn hgt:162cm + eyr:2024 + hcl:#cfa07d + + hcl:#623a2f hgt:174cm + eyr:2026 iyr:2020 + ecl:grn + byr:1981 + + cid:236 byr:1979 iyr:2013 ecl:amb eyr:2030 hcl:#6b5442 pid:768869830 + + hcl:#341e13 byr:1998 iyr:2020 + pid:857980686 + ecl:hzl hgt:175cm eyr:2028 + + hgt:169in + cid:305 eyr:2023 + ecl:gry pid:833031763 hcl:#ceb3a1 iyr:2015 byr:1974 + + pid:370671195 hgt:162cm + iyr:2018 ecl:oth byr:2001 hcl:#7d3b0c + eyr:2021 + + eyr:2026 + ecl:brn + cid:288 + hcl:#866857 iyr:2010 byr:1922 + pid:309109383 + + byr:1949 iyr:2015 pid:832774982 eyr:2029 + hgt:182cm + hcl:#b7144c ecl:amb + + eyr:2029 iyr:2020 + hcl:#c0946f + pid:953788134 + byr:1954 hgt:167cm + + pid:981508704 eyr:2023 iyr:2013 hgt:66in cid:68 hcl:#fffffd byr:1996 ecl:oth + + iyr:2011 byr:1932 cid:232 eyr:2030 + hcl:#c0946f + hgt:169cm pid:994763987 + ecl:hzl + + ecl:gmt eyr:2031 hcl:z + byr:2006 cid:86 hgt:59cm iyr:1998 pid:#349a7f + + hcl:#7d3b0c iyr:2013 pid:549500594 eyr:2024 byr:1971 ecl:oth + hgt:153cm + + iyr:2015 + byr:1940 pid:798926275 eyr:2027 + hcl:#cfa07d + hgt:158cm ecl:amb + + ecl:brn pid:077141823 + eyr:1945 iyr:2023 hcl:#602927 byr:1956 + hgt:152 + + iyr:2022 + byr:2007 + hcl:f87f81 pid:8404831740 eyr:2033 hgt:170cm + ecl:gmt + + iyr:1958 + ecl:dne hcl:840fbe + cid:55 eyr:2032 pid:19403738 hgt:170cm + byr:2029 + + ecl:brn pid:864743117 + eyr:2025 + hgt:188cm byr:1934 hcl:#623a2f + iyr:2011 + + iyr:2010 pid:877675472 hcl:#7d3b0c eyr:2027 byr:1954 hgt:182cm + ecl:oth + + iyr:2015 hcl:#a97842 pid:719192774 ecl:brn + byr:1993 + hgt:186cm + + eyr:2021 hgt:176cm pid:395161956 hcl:#602927 + ecl:grn iyr:2020 byr:1972 + + hcl:#fffffd hgt:167cm byr:1945 ecl:grn iyr:2017 eyr:2026 + + hcl:#6b5442 ecl:gry cid:208 hgt:155cm iyr:2010 byr:1933 pid:040244553 + eyr:2029 + + iyr:1960 cid:281 ecl:#8f7c45 hcl:z pid:11609858 eyr:1955 hgt:150in + byr:1985 + + hgt:150cm byr:2002 hcl:#fffffd + pid:337375886 iyr:2011 ecl:amb + eyr:2037 + + iyr:2014 ecl:oth hgt:155cm hcl:#866857 eyr:2025 pid:614859979 cid:338 + byr:1952 + + hcl:#623a2f hgt:156cm + iyr:2010 ecl:amb byr:1997 + cid:285 + pid:225568504 eyr:2020 + + iyr:2021 hcl:#ceb3a1 ecl:#d6db5a pid:185cm eyr:2020 cid:130 byr:2009 + + byr:1956 + cid:245 iyr:1954 ecl:dne hcl:#341e13 eyr:2040 hgt:71cm pid:838134394 + + eyr:2027 + byr:1994 ecl:amb iyr:2014 hgt:168cm + cid:278 + hcl:#602927 pid:758176176 + + hcl:#941519 ecl:gry eyr:2030 byr:1921 + pid:9477831046 + iyr:2018 hgt:189cm + + cid:339 hcl:#6b5442 + byr:1972 + ecl:oth + iyr:2014 hgt:183cm eyr:2020 + + cid:165 + eyr:1926 hcl:#6b5442 iyr:1956 hgt:65cm byr:2029 + pid:9240052093 ecl:xry + + ecl:grn + eyr:2027 + hcl:#fffffd byr:1975 iyr:2011 hgt:177cm pid:825090410 cid:121 + + byr:1934 + hcl:#733820 pid:133141914 eyr:2027 + hgt:66in + ecl:amb + iyr:2010 cid:262 + + iyr:1951 + ecl:#bb9733 hcl:89fcbf + byr:2018 pid:#13265f hgt:85 + eyr:1977 + + hcl:#324bed ecl:hzl hgt:155cm + iyr:2013 byr:1942 eyr:2021 + pid:758516520 + + ecl:gry + pid:#567782 iyr:2015 hcl:276a6d eyr:2028 + hgt:60cm + byr:2005 + + hcl:#18171d hgt:191cm eyr:2030 + ecl:grn pid:748729106 byr:1922 iyr:2017 + + byr:1984 hcl:#733820 eyr:2020 iyr:2013 hgt:64in pid:444446114 + ecl:hzl + + byr:2006 ecl:dne iyr:2029 hcl:z + eyr:2023 hgt:68cm + pid:131910019 + + iyr:1976 hcl:45191a eyr:2017 hgt:68cm + ecl:oth pid:153cm byr:1968 + + ecl:gry byr:1959 eyr:2023 pid:781945569 + iyr:2015 hcl:#ceb3a1 hgt:167cm + + hgt:151cm + byr:1959 hcl:#7d3b0c + cid:76 pid:069205247 ecl:gry eyr:2029 + iyr:2013 + + pid:055193304 + hcl:#fffffd + hgt:67in ecl:grn iyr:2011 + + eyr:2026 + byr:1975 + pid:681437369 + hgt:173cm hcl:#a97842 + iyr:2017 ecl:brn + + pid:298214774 hgt:158cm ecl:hzl + hcl:#866857 byr:1993 iyr:2013 + eyr:2028 + + hcl:#b6652a eyr:2023 pid:879418046 hgt:193cm + iyr:2014 + ecl:brn + + hgt:164cm + eyr:2028 hcl:fbd462 ecl:gry + iyr:2011 byr:1938 pid:029003659 + + byr:1999 hgt:171cm eyr:2024 cid:195 pid:041799326 ecl:gry iyr:2012 hcl:#a97842 + + byr:1963 pid:7471206322 iyr:2015 ecl:brn hcl:#623a2f hgt:72cm + cid:63 + + byr:1961 + ecl:hzl hcl:#efcc98 + pid:617022365 + eyr:2020 hgt:155cm iyr:2018 + + pid:385763432 byr:1977 cid:228 hcl:#733820 eyr:2020 + hgt:163cm ecl:grt + iyr:2015 + + byr:1979 hgt:186in eyr:2037 + ecl:dne + iyr:2025 hcl:d93e3e + pid:187cm + + iyr:2018 + cid:158 eyr:2020 + byr:1929 + pid:334374178 hgt:181cm hcl:z ecl:grn + + cid:135 ecl:oth hcl:#623a2f + iyr:2017 + eyr:2024 byr:1940 + hgt:66in + + cid:92 eyr:2026 hcl:#888785 pid:827526879 byr:1990 + hgt:186cm ecl:amb iyr:2014 + + pid:575519103 + iyr:2016 byr:1964 hcl:#7d3b0c cid:252 hgt:172cm + + hcl:#c0946f + ecl:grn hgt:75in + eyr:2021 pid:426544544 + + cid:171 byr:2004 + hcl:z + hgt:191cm eyr:2028 pid:#292b3b ecl:brn + + iyr:2016 ecl:hzl + byr:2007 + hgt:167cm hcl:#653b4c cid:124 eyr:2022 + pid:#27024c + + hgt:177cm byr:2025 + hcl:z cid:303 iyr:2016 eyr:2000 ecl:dne + pid:345555418 + + eyr:2040 + hcl:70fbf6 cid:318 + byr:2027 iyr:2022 + ecl:#3a037c pid:644624005 + hgt:62cm + + ecl:brn iyr:2016 hgt:150cm pid:680594195 cid:324 hcl:#602927 + byr:1944 + + hcl:z eyr:2022 byr:2020 cid:112 ecl:dne iyr:2029 + pid:#3a3560 hgt:153in + + cid:86 + ecl:gry byr:1972 hcl:#866857 pid:758976621 hgt:188cm + + pid:#850e8b eyr:2025 hgt:163in + ecl:#71e9e2 + hcl:#623a2f + + ecl:amb byr:1958 hgt:193cm + pid:343803154 iyr:2010 eyr:2029 cid:86 hcl:#602927 + + hgt:178cm byr:1987 ecl:blu hcl:#866857 iyr:2017 + pid:222443921 eyr:2027 + + byr:1964 iyr:2001 + hgt:180cm eyr:1945 + hcl:#fffffd pid:305189916 ecl:#ac3c49 + cid:142 + + byr:1979 hgt:166cm ecl:brn + cid:202 hcl:#5311ca eyr:2028 pid:874418818 iyr:2014 + + hgt:161cm byr:1987 ecl:grn hcl:#6b5442 pid:986096798 + cid:74 + eyr:2027 iyr:2019 + + byr:1964 iyr:1979 eyr:2022 ecl:#77ada3 + hcl:#733820 + cid:56 + + hgt:185cm iyr:2010 pid:214991920 eyr:2023 cid:236 hcl:#866857 ecl:brn byr:1965 + + pid:885169578 iyr:2010 byr:1948 ecl:hzl hcl:#18171d + eyr:2025 hgt:175cm + + ecl:oth pid:34655368 + hgt:186 + byr:1968 + hcl:2653c9 + eyr:2030 iyr:2024 + + eyr:2022 iyr:2015 ecl:gry hgt:65in byr:1994 + pid:766704860 + + hcl:#c0946f cid:104 iyr:2015 + pid:739274357 + ecl:#ef45c8 + byr:1960 hgt:61in eyr:2026 + + pid:849044092 eyr:2020 hgt:186cm iyr:2014 + byr:1991 hcl:#866857 + + hgt:159cm iyr:1950 + eyr:2021 pid:325442644 hcl:#888785 + ecl:gry byr:1986 + + eyr:2023 hgt:188cm + iyr:2014 + pid:945115479 byr:1979 ecl:blu hcl:#b6652a + + eyr:2024 + cid:274 pid:390115952 byr:1934 hgt:161cm iyr:2017 hcl:#b95b0d + + ecl:#a16ec8 pid:187cm hcl:z iyr:2029 hgt:170 + byr:2008 + EOF +} |