From 4646147d044d240ccdb43fc9986755ccb1c69bc6 Mon Sep 17 00:00:00 2001 From: a Date: Fri, 4 Dec 2020 02:59:23 -0600 Subject: [PATCH] first solution for day 4 --- 04/04.py | 94 +++++ 04/input.txt | 1102 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1196 insertions(+) create mode 100644 04/04.py create mode 100644 04/input.txt diff --git a/04/04.py b/04/04.py new file mode 100644 index 0000000..d01a8aa --- /dev/null +++ b/04/04.py @@ -0,0 +1,94 @@ +def read_file(): + with open("input.txt","r") as f: + # first, we split into separate passports. + raw_passports = f.read().split('\n\n') + # then, we split each passport into fields, by newline or space. + split_passports = [] + for passport in raw_passports: + split_passports.append(passport.split()) + # finally, we convert to a dictionary. + passports = [] + for passport in split_passports: + passport_dict = {} + for field in passport: + key, value = field.split(':') + passport_dict[key] = value + passports.append(passport_dict) + # all passports should now be normalized to dicts. + return passports + +def valid(passport): + required_fields = ['byr', 'iyr', 'eyr', 'hgt', 'hcl', 'ecl', 'pid'] + for field in required_fields: + if field not in passport: + return False + return True + +def part1(passports): + valid_passports = 0 + for passport in passports: + if valid(passport): + valid_passports += 1 + return valid_passports + +def valid_data(passport): + # first, we need to check if all required fields are present. + if not valid(passport): + return False + # byr must be four digits 1920 - 2002 + byr = int(passport['byr']) + if not (1920 <= byr <= 2002): + return False + # iyr must be four digits 2010 - 2020 + iyr = int(passport['iyr']) + if not (2010 <= iyr <= 2020): + return False + #eyr must be four digits 2020 - 2030 + eyr = int(passport['eyr']) + if not (2020 <= eyr <= 2030): + return False + # hgt must be 150-193cm or 59-76in + hgt = passport['hgt'] + if hgt.endswith('cm'): + hgt = int(hgt[:-2]) + if not (150 <= hgt <= 193): + return False + elif hgt.endswith('in'): + hgt = int(hgt[:-2]) + if not (59 <= hgt <= 76): + return False + else: + return False + # hcl must be hexcode + hcl = passport['hcl'] + import re + if not re.match(r'^#(?:[0-9a-fA-F]{1,2}){3}$', hcl): + return False + # ecl must be exactly one of: amb blu brn gry grn hzl oth. + valid_ecls = ['amb', 'blu', 'brn', 'gry', 'grn', 'hzl', 'oth'] + ecl = passport['ecl'] + if ecl not in valid_ecls: + return False + # pid must be 9 digits long + pid = passport['pid'] + if len(pid) != 9: + return False + # cid is ignored + return True + + +def part2(passports): + valid_passports = 0 + for passport in passports: + if valid_data(passport): + valid_passports += 1 + return valid_passports + +def main(): + passports = read_file() + print(f'{part1(passports)=}') + print(f'{part2(passports)=}') + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/04/input.txt b/04/input.txt new file mode 100644 index 0000000..3609690 --- /dev/null +++ b/04/input.txt @@ -0,0 +1,1102 @@ +hcl:5d90f0 cid:270 ecl:#66dc9c hgt:62cm byr:1945 pid:63201172 eyr:2026 + +ecl:amb byr:1943 iyr:2014 eyr:2028 +pid:333051831 + +byr:1971 +eyr:2021 iyr:2015 pid:158388040 hcl:#18171d ecl:brn hgt:179cm + +byr:1936 +pid:707057570 iyr:2014 ecl:amb cid:299 eyr:2030 +hcl:#c0946f hgt:186cm + +hgt:163cm iyr:2013 ecl:gry hcl:#86e981 byr:1939 +eyr:2020 pid:241741372 cid:203 + +ecl:brn hcl:#341e13 +pid:686617364 byr:1929 eyr:2029 hgt:160cm cid:280 iyr:2020 + +byr:2002 hcl:#623a2f +pid:253005469 iyr:2011 ecl:hzl hgt:184cm eyr:2027 + +ecl:#bb984b eyr:2040 +hgt:188in +iyr:2005 hcl:c5be8e pid:174cm cid:161 byr:2004 + +ecl:oth iyr:2010 cid:128 hgt:153cm byr:1991 +pid:24061445 eyr:2025 hcl:#54d43e + +hcl:z +iyr:2023 pid:981178503 ecl:gmt eyr:2038 byr:2004 + +ecl:gry eyr:2022 iyr:1981 pid:566993828 +byr:1941 hcl:#341e13 hgt:176cm + +eyr:2027 byr:1976 +pid:350079989 ecl:blu iyr:2013 hgt:180cm hcl:#866857 + +eyr:2029 hcl:#ceb3a1 +ecl:lzr +iyr:2011 hgt:152cm byr:1986 pid:162999623 +cid:240 + +ecl:gry iyr:2017 hcl:#18171d byr:1926 +eyr:2027 hgt:68in +cid:310 pid:560836007 + +ecl:grn +cid:307 +pid:#cdc803 +byr:1975 eyr:2039 hgt:75cm +hcl:318b11 iyr:2022 + +ecl:brn hgt:179cm eyr:2020 iyr:2016 +pid:322103252 byr:1940 hcl:#b6652a + +hcl:#733820 hgt:188cm cid:70 eyr:2021 ecl:amb +byr:1996 +iyr:2013 pid:412419084 + +hgt:164cm iyr:2011 byr:1928 eyr:2020 hcl:#733820 pid:704914380 ecl:blu + +ecl:brn cid:267 eyr:2029 byr:2011 +hcl:z pid:467662306 iyr:2026 hgt:104 + +pid:224593036 eyr:2027 +ecl:brn hcl:#341e13 iyr:2014 +byr:1997 +hgt:181cm + +eyr:2005 pid:9756449964 +hcl:#fffffd byr:1999 ecl:dne hgt:152in iyr:2027 + +byr:1998 +iyr:2017 pid:618350852 hgt:156cm cid:193 ecl:amb +hcl:#602927 eyr:2029 + +byr:2021 pid:3395281192 +hcl:z hgt:167in ecl:grt eyr:2008 iyr:2025 + +cid:206 pid:735212085 eyr:2020 byr:1950 hgt:153cm +ecl:blu iyr:2019 +hcl:#733820 + +eyr:2021 pid:551149968 iyr:2020 hcl:#6b5442 +byr:1948 +ecl:grn +hgt:152cm + +hgt:76in cid:113 iyr:2019 eyr:2023 hcl:#888785 pid:131239468 ecl:grn +byr:1994 + +ecl:oth cid:240 hcl:#bed757 byr:2027 eyr:2021 pid:#ffa971 iyr:2022 + +cid:204 iyr:2011 +ecl:blu hgt:169cm byr:1985 eyr:2020 hcl:#18171d + +ecl:hzl iyr:2012 cid:344 hcl:#7d3b0c +hgt:190cm pid:599490023 byr:1954 eyr:2023 + +cid:333 +eyr:1971 hgt:193cm +ecl:#12421d hcl:#7d3b0c iyr:1991 pid:#7149ad byr:2008 + +iyr:2014 +hgt:151cm pid:190259199 eyr:2021 ecl:blu +byr:1975 hcl:#ceb3a1 + +hgt:164cm ecl:oth hcl:#c0946f pid:427760590 eyr:2023 iyr:2012 +byr:1979 + +hgt:193cm iyr:2023 ecl:#213711 hcl:z +pid:23861701 +byr:2020 +eyr:1924 + +pid:450691994 cid:191 +eyr:2028 +byr:1972 ecl:oth hgt:168cm hcl:#888785 + +iyr:2013 hcl:#18171d hgt:170cm ecl:blu +pid:040253250 eyr:2024 +byr:1954 cid:340 + +cid:185 byr:1956 eyr:2029 pid:454637740 ecl:hzl hcl:#efcc98 iyr:2019 hgt:73in + +hcl:#efcc98 +hgt:176cm +ecl:hzl cid:113 pid:747653564 iyr:2016 +eyr:2020 byr:1945 + +hgt:69in cid:264 byr:1971 hcl:#733820 ecl:amb pid:086130104 +iyr:2011 +eyr:2022 + +iyr:2010 +eyr:2034 +pid:501068596 +hgt:109 hcl:z byr:2018 cid:326 ecl:lzr + +pid:955229652 +eyr:2027 cid:175 +byr:1950 iyr:2010 ecl:gry hcl:#866857 hgt:177cm + +ecl:amb hcl:#888785 eyr:2020 +hgt:172cm byr:1991 +pid:556956304 + +byr:1930 +eyr:2011 +pid:734176827 +ecl:brn hgt:182cm +hcl:z + +hcl:#a97842 +pid:040278061 ecl:brn hgt:168cm cid:194 +byr:1973 +iyr:2016 eyr:2027 + +hcl:#623a2f +eyr:2023 +ecl:blu iyr:2016 pid:844348663 byr:1997 hgt:179cm + +hgt:188cm hcl:#a97842 byr:1972 +ecl:hzl pid:912948357 eyr:2026 iyr:2025 + +iyr:2011 eyr:2025 +cid:286 +pid:084736292 +byr:1936 +ecl:oth hcl:#a97842 hgt:166cm + +iyr:2012 ecl:blu hgt:159cm byr:1980 eyr:2024 pid:811644928 cid:105 hcl:#7d3b0c + +pid:530452683 hcl:#341e13 +iyr:2011 +hgt:163cm ecl:oth +cid:309 byr:1940 + +ecl:hzl +pid:144377866 +hcl:#18171d hgt:193cm +iyr:2013 eyr:2028 + +pid:868386570 +ecl:brn +hgt:161cm hcl:#18171d +byr:1956 +iyr:2017 +cid:307 + +iyr:2019 eyr:2026 ecl:brn +hcl:#866857 byr:1993 cid:299 +pid:603503348 hgt:186cm + +iyr:2014 +pid:852954158 hgt:73in byr:2021 +eyr:2020 hcl:#a97842 cid:260 ecl:oth + +hgt:164cm eyr:2025 pid:113005290 byr:1955 ecl:blu iyr:2017 hcl:#b6652a + +cid:179 iyr:2015 +pid:317467924 eyr:2025 ecl:gry byr:1996 hgt:180cm hcl:#a55f97 + +hgt:172cm hcl:#efcc98 cid:53 ecl:grn iyr:2016 +byr:1991 pid:337133478 +eyr:2025 + +hgt:150 iyr:2008 +pid:#3e66a7 ecl:#8b3133 eyr:2040 byr:2012 hcl:802d16 + +pid:577607614 byr:1924 hgt:173cm hcl:#341e13 eyr:2026 ecl:amb +iyr:2013 + +eyr:2020 iyr:2011 hgt:175cm hcl:316607 pid:738554684 +byr:2029 ecl:dne + +hgt:179cm iyr:2016 +pid:178cm byr:2015 +ecl:gry +hcl:#341e13 +eyr:1986 + +byr:2005 iyr:2028 ecl:#7be9b8 eyr:1941 pid:#e7e9cb hgt:177in cid:67 hcl:#602927 + +ecl:#0d50e6 +pid:192cm iyr:2014 eyr:2027 hgt:73cm cid:162 hcl:93ea2f +byr:1958 + +hcl:z +cid:292 hgt:184in eyr:2001 pid:7218132701 byr:2020 +ecl:grt iyr:2014 + +ecl:gry +hcl:#fffffd +eyr:2026 iyr:2013 +pid:117261833 + +pid:780384540 ecl:gry cid:52 eyr:2020 hgt:193cm hcl:#4ae223 iyr:2017 +byr:1984 + +ecl:hzl +pid:218314886 eyr:2030 byr:1948 hcl:#c0946f hgt:185cm iyr:2013 + +pid:175cm cid:340 ecl:blu hcl:#cfa07d eyr:2036 iyr:2018 byr:2018 hgt:70cm + +byr:1953 hgt:164cm ecl:hzl +pid:488831953 iyr:2010 +hcl:#fffffd + +byr:1961 hgt:165cm pid:506597451 +cid:122 eyr:2020 hcl:#cfa07d ecl:gry +iyr:2016 + +iyr:1970 +eyr:2040 +byr:2008 +hgt:188 +ecl:#b00a46 hcl:#fffffd + +hgt:179cm +byr:1972 eyr:2026 +cid:62 ecl:oth +pid:996355557 iyr:2013 hcl:#a97842 + +ecl:amb eyr:2026 byr:1936 pid:812982189 hgt:158cm hcl:#888785 iyr:2010 + +iyr:2020 +hcl:#7d3b0c hgt:160cm +pid:336806720 +eyr:2024 ecl:#7e0ae0 byr:1992 + +eyr:2036 pid:178cm hcl:z +hgt:133 byr:2009 ecl:dne cid:127 + +byr:1938 hcl:#fd309a +cid:104 iyr:2015 eyr:2022 pid:201047563 +hgt:160cm ecl:hzl + +byr:2023 pid:25086180 hgt:160cm cid:180 hcl:z ecl:grt eyr:2038 iyr:2022 + +ecl:grn hgt:167cm +byr:2023 iyr:2026 eyr:1928 hcl:z + +hcl:#efcc98 hgt:187cm byr:1925 +ecl:grn +pid:753746076 iyr:2017 +eyr:2021 + +iyr:2017 +byr:1934 ecl:grn eyr:2021 hgt:163cm +pid:688172460 hcl:#b6652a + +hcl:#c0946f iyr:2018 ecl:blu pid:676564085 +hgt:184cm cid:152 byr:1980 eyr:2023 + +ecl:grt hgt:70cm iyr:2022 hcl:58716b byr:2010 +pid:60834390 eyr:2037 + +iyr:2028 pid:270499403 +ecl:xry eyr:1947 hgt:152cm byr:2025 + +pid:091281559 hcl:#733820 +hgt:166cm +eyr:2021 ecl:grn cid:327 byr:1928 +iyr:2014 + +eyr:2025 ecl:grn byr:1938 hcl:#ceb3a1 +cid:234 +pid:549433891 +hgt:172cm iyr:2016 + +hcl:#c0946f hgt:173cm iyr:2014 eyr:2030 ecl:blu byr:1965 +pid:696577272 + +hgt:154cm eyr:2030 +pid:475642195 byr:1920 iyr:2013 hcl:#866857 ecl:blu + +pid:518398763 iyr:2010 +eyr:2020 +hgt:183cm +ecl:brn byr:1921 hcl:#18171d + +eyr:2023 pid:614116723 hcl:#7d3b0c ecl:hzl +iyr:2016 hgt:189cm byr:2000 + +ecl:oth hgt:178cm hcl:#733820 byr:2001 pid:862420089 eyr:2023 + +pid:851985534 eyr:2028 hcl:#18171d ecl:oth cid:238 byr:2001 +iyr:2019 hgt:166cm + +byr:1927 +hgt:170cm +pid:246933107 +ecl:amb iyr:2015 +cid:166 eyr:2027 hcl:#b6652a + +byr:1929 +hcl:#7d3b0c +cid:263 pid:317156081 hgt:165cm eyr:2031 iyr:1980 + +hcl:#866857 eyr:2021 hgt:179cm pid:206504353 cid:84 ecl:gry iyr:2012 byr:1952 + +byr:1986 ecl:hzl +hcl:#a97842 +iyr:2015 hgt:152cm pid:722601936 eyr:2025 + +byr:1921 +pid:563550743 iyr:2015 ecl:hzl +eyr:2026 hcl:#fffd7b + +ecl:hzl +hcl:#888785 cid:268 byr:1926 hgt:176cm pid:321394231 eyr:2021 iyr:2014 + +eyr:2021 cid:225 +pid:770796086 +ecl:gry byr:1961 +hgt:154cm +hcl:#6b5442 +iyr:2011 + +eyr:2028 iyr:1961 byr:2016 +cid:98 pid:587360691 hgt:70cm ecl:#ceaf1f +hcl:#c0b6db + +byr:1978 +eyr:2022 hgt:184cm hcl:#7d3b0c +cid:271 +ecl:amb pid:235352975 +iyr:2010 + +eyr:2026 pid:2844744 +iyr:1958 byr:2017 hcl:z +hgt:192in +ecl:#971530 + +iyr:2020 +byr:1960 eyr:2028 cid:162 pid:491912610 hcl:#fffffd hgt:59in + +iyr:2012 pid:365229485 ecl:amb byr:1933 hcl:#18171d eyr:2024 + +hgt:193cm pid:473100400 +hcl:#efcc98 +cid:201 eyr:2020 byr:1969 ecl:gry iyr:2016 + +eyr:2025 pid:137807160 iyr:2014 +ecl:grn byr:1944 hgt:168cm hcl:#ceb3a1 + +byr:2008 ecl:xry +iyr:2012 hcl:#efcc98 eyr:2028 pid:272344138 + +eyr:2024 pid:959415175 cid:148 hcl:#efcc98 +byr:1977 hgt:179cm ecl:amb + +pid:253742161 ecl:hzl hcl:#602927 +eyr:2021 hgt:191cm byr:1925 iyr:2010 + +ecl:amb hcl:#341e13 +eyr:2024 iyr:2017 +byr:1975 +pid:838040028 hgt:172cm + +hgt:172in +pid:311113967 iyr:2015 cid:111 eyr:2023 ecl:oth byr:2003 hcl:#866857 + +hcl:#888785 byr:1978 hgt:64in pid:442064310 eyr:2021 +iyr:2011 ecl:hzl + +eyr:2021 byr:1988 hcl:#a97842 +pid:290578586 ecl:hzl hgt:174cm iyr:2020 + +byr:1998 iyr:2020 hgt:163cm ecl:oth eyr:2025 +hcl:#6b5442 pid:913461954 + +hgt:173cm hcl:#18171d +eyr:2029 ecl:brn cid:313 byr:1980 +iyr:2011 pid:810497375 + +byr:1975 hgt:153cm eyr:2027 hcl:#fffffd pid:857730031 +ecl:gry iyr:2020 + +hcl:#18171d ecl:hzl +pid:185778821 hgt:178 iyr:2014 eyr:2028 byr:1974 + +iyr:2015 hgt:163in hcl:#c0946f ecl:#4844a6 byr:1979 pid:124626004 + +eyr:2024 +pid:737015681 byr:1952 +ecl:hzl iyr:2019 +hgt:192cm hcl:#cfa07d + +pid:2986469633 byr:2025 hgt:66cm hcl:z eyr:2011 iyr:2027 cid:311 + +byr:1962 +eyr:2032 +ecl:lzr iyr:2014 +hgt:70cm pid:94309916 +hcl:#fffffd + +cid:350 hcl:#602927 iyr:2019 hgt:178cm +pid:172238204 byr:1949 ecl:hzl +eyr:2028 + +hgt:153cm +hcl:#ceb3a1 +ecl:grn +byr:1997 +pid:266747822 +iyr:2011 eyr:2022 + +pid:839681159 hgt:150cm eyr:2024 hcl:4d6414 +ecl:blu +iyr:2018 byr:1988 + +byr:1930 iyr:2011 pid:352711700 hgt:174cm cid:67 eyr:2020 ecl:hzl hcl:#6b5442 + +byr:1949 iyr:2013 hcl:#623a2f eyr:2030 +hgt:176cm + +hgt:164cm eyr:2026 hcl:#866857 +iyr:2018 pid:922679610 byr:1974 +ecl:brn +cid:114 + +eyr:2038 cid:317 +hgt:166in pid:0384056779 byr:2013 iyr:2021 +ecl:xry + +cid:83 hgt:166cm eyr:2026 iyr:2018 byr:1994 ecl:brn pid:858360477 hcl:#ceb3a1 + +hgt:169cm eyr:2020 +pid:110129489 byr:1958 +ecl:oth hcl:#7d3b0c +iyr:2011 + +cid:279 +iyr:2019 byr:1995 eyr:2026 ecl:hzl +hcl:#7d3b0c hgt:185cm pid:085427066 + +hcl:#c0946f +iyr:2011 eyr:2027 +ecl:amb +byr:1943 pid:060674566 hgt:183in + +hgt:156cm hcl:#c0946f pid:242827141 +cid:152 +iyr:2018 +eyr:2025 byr:1963 + +byr:1925 cid:168 eyr:2020 hcl:#cfa07d iyr:2011 ecl:brn hgt:150cm pid:740118192 + +ecl:oth byr:1951 eyr:2025 cid:213 +iyr:2020 +hgt:154cm + +eyr:2025 iyr:2018 ecl:grn cid:91 byr:1925 +hgt:164cm hcl:#18171d + +byr:1997 +iyr:2018 eyr:2023 hcl:#602927 pid:251296833 ecl:blu +hgt:185cm + +hgt:168cm pid:556895048 +hcl:#341e13 ecl:oth eyr:2020 cid:64 byr:1940 + +byr:1996 pid:821204904 cid:250 ecl:amb eyr:2026 hgt:185cm iyr:2019 + +ecl:grn hcl:#b6652a iyr:2013 +eyr:2028 hgt:157cm +byr:1925 pid:158cm + +hgt:190cm iyr:2019 ecl:oth eyr:2028 hcl:#341e13 cid:334 pid:258135663 byr:1972 + +byr:1936 hgt:76in pid:748344702 cid:335 +eyr:2027 hcl:#a97842 ecl:amb iyr:2015 + +hcl:z hgt:66cm eyr:2029 +pid:#1589e0 iyr:2019 ecl:hzl + +hcl:#733820 ecl:amb +iyr:2013 +hgt:188cm byr:1955 pid:125663066 eyr:2020 cid:179 + +iyr:2017 +hgt:185cm ecl:grn +cid:298 eyr:2030 hcl:#5b1c03 +byr:1992 pid:092887457 + +eyr:2032 ecl:grn hgt:82 iyr:2022 +pid:180cm byr:2003 +cid:55 hcl:z + +pid:257666411 eyr:2023 byr:1982 hgt:179cm hcl:#18171d ecl:brn iyr:2010 + +iyr:2020 +ecl:amb hcl:#18171d +pid:971402454 eyr:2028 + +hcl:#efcc98 byr:1964 pid:577424639 eyr:2030 iyr:2010 ecl:brn hgt:169cm +cid:285 + +ecl:amb byr:1958 hgt:159cm hcl:#efcc98 eyr:2024 iyr:2016 +pid:029502840 + +hcl:ac11eb +byr:2007 pid:0489471320 hgt:69cm iyr:2030 ecl:blu eyr:2033 + +pid:3785138563 eyr:2020 iyr:2020 +hcl:#966583 byr:2008 hgt:186cm ecl:gry + +iyr:2014 pid:868785127 eyr:2029 +cid:220 hcl:#18171d ecl:blu byr:1948 hgt:171cm + +byr:1936 +pid:433437105 +hcl:#c0946f eyr:2020 iyr:2019 hgt:160cm ecl:brn + +iyr:2015 eyr:2024 hgt:176cm ecl:hzl +byr:1995 pid:101835436 hcl:#ceb3a1 + +eyr:1959 +hcl:#cfa07d iyr:2010 pid:9214728 +ecl:#42fda0 hgt:71 byr:2022 + +byr:1998 iyr:2011 cid:275 ecl:oth +pid:924517068 eyr:2024 hgt:191cm +hcl:#623a2f + +hgt:157 hcl:z +byr:1923 pid:#f6ce52 iyr:1975 ecl:lzr cid:100 + +pid:565022102 +eyr:2021 hcl:#efcc98 +byr:1988 ecl:gry iyr:2012 + +hgt:156cm +hcl:#b6652a eyr:2021 pid:969724332 +cid:126 iyr:2016 +ecl:hzl byr:1988 + +ecl:blu hcl:#866857 hgt:153cm +pid:798083560 +iyr:2015 +byr:1981 eyr:2030 + +iyr:2013 cid:103 hcl:#efcc98 eyr:2022 byr:1964 ecl:gry +hgt:161cm pid:950689613 + +pid:4316019547 +ecl:gmt +eyr:2029 byr:2011 iyr:2005 hgt:170cm cid:135 +hcl:567fd8 + +hcl:#6b5442 pid:843348901 byr:1960 +hgt:156cm +eyr:2028 ecl:amb + +eyr:2027 +pid:286247733 byr:2000 hgt:191cm +iyr:2014 +hcl:#341e13 ecl:amb + +ecl:gmt byr:2005 hgt:182cm pid:376332625 hcl:z iyr:2021 +eyr:1949 + +hgt:184cm +byr:1940 +cid:260 eyr:2030 ecl:brn +iyr:2011 pid:792881807 + +iyr:1936 eyr:2021 cid:133 hcl:#623a2f byr:2003 pid:197167496 +ecl:#8896de + +hgt:67in cid:110 +byr:1951 +pid:389358116 eyr:2028 iyr:2017 +ecl:grn + +hgt:161cm +cid:215 +pid:116325531 iyr:2019 +eyr:2025 hcl:#18171d ecl:blu +byr:1951 + +pid:787859682 hcl:#a97842 eyr:2020 byr:1948 hgt:190cm ecl:brn iyr:2020 + +pid:034440951 hgt:73cm hcl:803e55 +cid:350 byr:1985 +ecl:#a18487 eyr:2031 +iyr:1973 + +hcl:#40ee86 ecl:brn +iyr:2016 byr:1922 hgt:150cm pid:449374426 + +eyr:2040 hcl:260be4 pid:208681353 byr:2029 ecl:gry +hgt:178cm + +hcl:#18171d hgt:162cm byr:1983 eyr:2020 pid:328556776 iyr:2017 ecl:grn + +eyr:2029 +hcl:#a97842 +pid:#7bd019 iyr:2015 +hgt:168cm byr:1926 +ecl:grn + +ecl:grt eyr:2034 pid:640680934 hgt:189in cid:276 byr:1969 hcl:511eed iyr:2023 + +eyr:2039 hgt:182in cid:145 +hcl:4a259b iyr:2026 +byr:2004 +ecl:xry pid:#a3c9ea + +hcl:#866857 +pid:615665716 ecl:blu hgt:164cm iyr:2020 +byr:1948 eyr:2024 cid:286 + +hcl:#b6652a hgt:59in eyr:2027 +pid:752461325 ecl:oth +byr:1932 iyr:2019 + +eyr:2030 byr:1936 ecl:hzl +iyr:2010 cid:263 pid:186570962 hcl:#888785 +hgt:163cm + +byr:1949 ecl:blu +pid:407719342 +eyr:2030 +hcl:#b6652a iyr:2012 +hgt:186cm + +pid:154cm ecl:amb byr:1944 +eyr:2022 +hcl:z iyr:2017 + +byr:1980 hcl:#d2c954 iyr:2013 ecl:brn hgt:72in +eyr:2030 +pid:017095362 + +hgt:179cm +hcl:#ceb3a1 cid:61 eyr:2026 +iyr:2011 +pid:897403026 byr:1984 +ecl:amb + +cid:150 hgt:181cm +eyr:2028 pid:894689339 +hcl:#602927 byr:1933 ecl:grn iyr:2018 + +pid:125553946 byr:1942 eyr:2026 hgt:193cm +iyr:2010 ecl:gry +hcl:z + +eyr:2013 pid:1213613355 +ecl:#b08dca hgt:190in +hcl:06adb3 cid:303 iyr:2010 + +iyr:2019 pid:255938897 +eyr:2022 hgt:152cm +byr:1956 ecl:grn hcl:#ceb3a1 + +eyr:2029 +pid:670713784 +iyr:2020 ecl:grn +hgt:155cm hcl:#6b5442 byr:2002 + +byr:1925 hcl:#866857 pid:323449427 ecl:oth +eyr:2023 hgt:163cm iyr:2014 + +pid:841608722 byr:1955 hgt:150cm ecl:blu eyr:2029 +hcl:#6b5442 + +eyr:2023 hcl:#efcc98 +hgt:164cm ecl:gry +iyr:2018 +byr:1993 pid:501920795 + +eyr:2030 +iyr:2019 hgt:73in hcl:#bf908a +byr:1961 ecl:blu cid:86 pid:436811356 + +pid:#02516a hgt:131 iyr:1969 ecl:grt byr:2015 +eyr:2010 hcl:z + +ecl:#25fb6c cid:239 pid:167cm iyr:2021 +byr:2023 hgt:75cm +hcl:z eyr:1931 + +pid:279251948 +ecl:oth hcl:#6b5442 +byr:1943 iyr:2015 hgt:173cm eyr:2039 + +byr:1935 +iyr:2013 hgt:151cm hcl:#b6652a +ecl:grn +eyr:2023 pid:741958450 + +hcl:6beab7 byr:1986 +hgt:85 +iyr:2012 pid:#d98df3 eyr:2035 +ecl:dne + +byr:1929 +pid:764478810 ecl:grn +hcl:#866857 iyr:2019 hgt:155cm eyr:2022 cid:277 + +hgt:155cm pid:450816410 eyr:2030 cid:165 byr:1969 ecl:blu hcl:#866857 iyr:2019 + +cid:330 pid:168777528 eyr:2024 ecl:blu hcl:#341e13 +hgt:178cm iyr:2013 +byr:1921 + +eyr:2037 iyr:1973 hcl:a4ebf3 +pid:161cm +ecl:oth hgt:64cm cid:62 + +cid:235 +hcl:538f8a hgt:70cm +iyr:1970 pid:177837127 +ecl:#95700d byr:2003 + +ecl:hzl pid:375018246 hgt:161cm +iyr:2011 eyr:2029 hcl:#c0946f +byr:1956 + +hcl:#888785 +iyr:2016 +pid:161cm byr:1977 ecl:#0188d8 eyr:2029 +cid:104 hgt:63in + +byr:1979 eyr:2020 hcl:#ceb3a1 ecl:amb pid:752141341 hgt:150cm iyr:2010 + +cid:274 byr:1928 iyr:2018 eyr:2023 hcl:#a97842 hgt:173cm pid:186060112 ecl:gry + +hcl:#341e13 +ecl:blu iyr:2011 +hgt:190cm cid:292 pid:974271891 eyr:2020 byr:1927 + +hcl:#fffffd eyr:2025 +ecl:brn byr:1923 iyr:2011 +pid:037981552 + +ecl:blu pid:412817852 hgt:150cm iyr:2026 +byr:2026 +eyr:2020 + +ecl:brn byr:1988 eyr:2026 +hgt:178cm pid:008152501 +hcl:#602927 +iyr:2020 + +ecl:brn pid:877401308 byr:1923 cid:154 +hgt:170cm +hcl:#fffffd +iyr:2014 +eyr:2022 + +cid:56 hcl:ee020e pid:590581021 iyr:2018 hgt:72cm byr:2007 +eyr:1964 ecl:oth + +eyr:2029 +iyr:2012 ecl:oth +hgt:185cm cid:235 +byr:2002 +pid:064901580 + +byr:1956 hcl:#6c1a8c pid:497814257 +eyr:1964 hgt:155cm ecl:gmt iyr:2030 + +byr:1935 hgt:171cm cid:253 pid:033393224 hcl:#c0946f iyr:2012 +ecl:blu eyr:2025 + +byr:1977 hcl:#602927 cid:175 iyr:2010 +pid:9391986394 hgt:65in eyr:2026 +ecl:amb + +iyr:2011 hgt:158cm ecl:#31cae1 byr:1958 hcl:b94ad1 +eyr:2023 pid:#400a21 + +hcl:e205b0 pid:84195182 byr:2012 eyr:2037 ecl:zzz hgt:75cm iyr:2030 + +pid:102379515 +byr:1971 +hgt:169cm +ecl:amb +eyr:2020 hcl:#cfa07d iyr:2017 + +pid:236611157 +eyr:2020 hcl:#b6652a +iyr:2017 cid:194 byr:2001 hgt:169cm ecl:gry + +iyr:2012 hcl:a256b5 eyr:2040 cid:62 hgt:177in byr:2010 + +eyr:2028 byr:2009 iyr:2020 ecl:brn +pid:12371575 hcl:#866857 hgt:190cm + +byr:1965 eyr:2028 +pid:402013776 hcl:#bc4e9e cid:183 hgt:150cm iyr:2015 + +pid:0269051559 +byr:1936 hcl:z ecl:#ff0ab9 +iyr:2014 eyr:2031 +cid:346 hgt:153in + +hcl:#18171d iyr:1929 hgt:157cm +eyr:2036 byr:1970 +ecl:amb + +hcl:#733820 +eyr:2022 +pid:096076686 +iyr:2010 +hgt:192cm +byr:1957 + +hcl:#ceb3a1 ecl:brn iyr:2013 +eyr:2025 +byr:1953 pid:751516675 +hgt:175cm + +byr:1928 +eyr:2027 +cid:85 +hgt:179cm ecl:oth +pid:169307999 hcl:#3e07af iyr:2010 + +hgt:60cm byr:2008 hcl:z +eyr:1965 pid:167cm +cid:106 +iyr:1930 + +hcl:#1099d9 ecl:amb pid:638820661 iyr:2014 +byr:1998 eyr:2025 +hgt:162cm + +ecl:amb +eyr:2022 hcl:#623a2f byr:1956 +hgt:154cm +iyr:2010 pid:717452826 + +hcl:fc9ba5 +iyr:1928 +eyr:2029 pid:54503219 +byr:2020 +ecl:#d2155a hgt:124 + +eyr:2027 +hcl:#7d3b0c hgt:178 ecl:#63b8e6 iyr:2015 byr:1954 + +ecl:oth byr:1970 +pid:833178609 hcl:#c0946f iyr:2016 cid:81 eyr:1976 +hgt:69in + +hcl:#0cf4b8 pid:499271062 hgt:62in ecl:hzl iyr:2016 byr:1922 +eyr:2022 + +byr:1994 +eyr:2029 hgt:174cm hcl:#efcc98 +ecl:amb +iyr:2019 pid:297210449 + +ecl:hzl +eyr:2026 iyr:2017 hcl:#a97842 hgt:162cm +byr:1950 + +pid:091886000 hgt:179cm byr:1975 eyr:2020 cid:326 +ecl:oth +iyr:2015 hcl:#a97842 + +hcl:#efcc98 hgt:176cm byr:1940 iyr:2016 ecl:brn pid:514758507 eyr:2024 cid:313 + +eyr:2026 byr:1980 +hgt:155cm +iyr:2013 pid:367909831 ecl:oth + +byr:1965 +eyr:2021 iyr:2017 +hgt:185cm +hcl:#a97842 ecl:hzl pid:238901177 + +hgt:156cm pid:916654189 +byr:1943 eyr:2022 ecl:amb hcl:#341e13 iyr:2016 + +cid:305 iyr:2013 +eyr:2029 hgt:163cm ecl:blu +hcl:#fffffd pid:944033881 +byr:1952 + +pid:638190538 +hcl:#866857 ecl:brn +eyr:2030 iyr:2016 cid:78 byr:1943 hgt:186cm + +eyr:2024 iyr:2015 +pid:231006970 +cid:312 byr:2000 hcl:#623a2f hgt:190cm ecl:brn + +ecl:#f89e87 +hcl:#fffffd hgt:166 cid:215 +iyr:1961 +eyr:2027 pid:314310197 byr:1977 + +hcl:z eyr:1995 pid:951911095 hgt:154cm +ecl:xry +cid:154 byr:2023 + +hgt:66in hcl:#866857 +ecl:brn +pid:328148585 byr:1984 eyr:2024 + +pid:456453839 +eyr:2024 hcl:#fffffd byr:1990 ecl:amb + +eyr:2030 cid:149 pid:983735096 hgt:179cm iyr:2014 byr:1957 ecl:gry hcl:#341e13 + +byr:2001 hgt:157cm +ecl:hzl eyr:2021 +hcl:#ceb3a1 +pid:558527031 iyr:2018 + +hgt:122 ecl:oth hcl:z +pid:384664729 +iyr:2012 cid:298 eyr:2023 + +ecl:utc eyr:2024 +hgt:162in iyr:2018 pid:1722490341 byr:2027 +hcl:#18171d + +ecl:gry iyr:2017 hcl:#602927 cid:303 byr:1950 +pid:509264482 eyr:2030 +hgt:164cm + +hgt:192cm pid:967128169 iyr:2019 ecl:blu eyr:2024 hcl:#fffffd byr:1949 cid:301 + +ecl:blu +cid:71 hgt:164cm eyr:2022 hcl:#cfa07d pid:750303088 +byr:1949 iyr:2014 + +iyr:2014 +pid:401425898 byr:1981 +hcl:#7d3b0c hgt:167cm eyr:2028 + +hcl:#602927 hgt:160cm iyr:2014 +eyr:2023 byr:1940 pid:748539736 ecl:amb + +eyr:2025 +hcl:#c0946f pid:325296854 iyr:2020 +hgt:76cm ecl:amb byr:1921 + +hgt:190cm +iyr:2011 pid:082777116 +byr:1979 cid:73 ecl:oth hcl:#6b5442 eyr:2021 + +eyr:2029 ecl:amb hgt:151cm pid:144881592 byr:1964 hcl:#efcc98 iyr:2012 + +hcl:#efcc98 +iyr:2019 +eyr:2023 byr:1999 pid:645291123 +ecl:brn + +eyr:2029 pid:922956941 hcl:#623a2f byr:1934 +ecl:grn hgt:151cm +iyr:2019 + +byr:1992 ecl:brn +hcl:#a97842 +pid:269079906 hgt:187cm +iyr:2016 cid:218 + +byr:1951 ecl:oth eyr:2026 hgt:185cm +cid:82 hcl:#7d3b0c +iyr:2020 pid:052476816 + +eyr:2026 +cid:319 iyr:2020 +ecl:brn hcl:#888785 +hgt:172cm pid:327064207 byr:1956 + +hgt:178cm +pid:638854420 byr:1995 eyr:2030 ecl:gry hcl:#7d3b0c iyr:2018 + +iyr:2026 hcl:#b6652a +byr:1946 +hgt:186in pid:622875187 eyr:2028 ecl:gry cid:140 + +byr:1931 ecl:oth eyr:2030 +pid:437813485 +hgt:181cm +hcl:#efcc98 iyr:2018 + +byr:1999 +ecl:amb +hgt:160cm iyr:2013 hcl:#b6652a pid:043039693 +eyr:2022 + +byr:2025 +pid:#fd7ad7 eyr:2025 hgt:63in +ecl:oth iyr:2010 hcl:#b6652a + +ecl:grn +byr:1939 eyr:2025 hgt:171cm cid:134 iyr:2020 pid:090346629 +hcl:#cfa07d + +hcl:z +eyr:2031 cid:74 +pid:50216290 ecl:utc iyr:2030 +hgt:176in + +byr:1971 ecl:brn hgt:190cm pid:791682756 hcl:#fffffd +iyr:2020 eyr:2027 + +iyr:1931 byr:2025 hgt:76cm pid:735796617 eyr:2040 ecl:utc hcl:#c0946f + +hgt:163cm +hcl:#18171d +ecl:hzl +pid:628854394 cid:311 iyr:2020 eyr:2027 + +hcl:z +ecl:amb pid:#a8f973 hgt:94 +eyr:2027 byr:2020 iyr:2012 cid:202 + +pid:086190379 byr:1931 ecl:blu iyr:2010 eyr:2027 hgt:175cm + +ecl:#0dafcd byr:2025 iyr:2021 eyr:1970 hgt:63cm cid:260 hcl:75300a pid:208921120 + +pid:024722981 iyr:2011 hgt:193cm hcl:#efcc98 ecl:blu byr:2001 + +byr:2027 +cid:123 +ecl:xry hgt:183cm iyr:2019 eyr:2026 +hcl:#c0946f +pid:380513483 + +eyr:2028 pid:302044900 iyr:2011 byr:1938 hgt:190cm ecl:amb hcl:#c0946f + +eyr:2024 pid:672033747 byr:1931 +iyr:2020 hcl:#f01aed ecl:brn + +hgt:184cm hcl:#efcc98 pid:391597648 +iyr:2020 ecl:gry +byr:1961 + +iyr:2013 hgt:191cm byr:1935 eyr:2028 hcl:#ceb3a1 cid:195 ecl:brn + +eyr:2025 pid:322775528 hgt:155cm hcl:#efcc98 iyr:2015 byr:1996 ecl:oth + +byr:1960 +hgt:183cm pid:764315947 eyr:2030 +hcl:#ceb3a1 ecl:brn + +eyr:2029 hgt:168cm byr:1929 pid:800222003 ecl:gry hcl:#8f8aaa +iyr:2011 + +hcl:#623a2f ecl:hzl hgt:168cm pid:795434985 eyr:2020 iyr:2020 cid:209 +byr:1970 + +cid:325 +byr:2007 eyr:1933 hgt:188in +pid:713080083 ecl:#d624ca iyr:2030 hcl:z + +hcl:#7d3b0c pid:431742871 +ecl:hzl hgt:169cm cid:340 +eyr:2023 +iyr:2017 byr:1994