ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙuse strict; use warnings; package Test::Deep::Hash; use Test::Deep::Ref; sub init { my $self = shift; my $val = shift; $self->{val} = $val; } sub descend { my $self = shift; my $got = shift; my $exp = $self->{val}; my $data = $self->data; return 0 unless Test::Deep::descend($got, $self->hash_keys($exp)); return 0 unless $self->test_class($got); return Test::Deep::descend($got, $self->hash_elements($exp)); } sub hash_elements { require Test::Deep::HashElements; my $self = shift; return Test::Deep::HashElements->new(@_); } sub hash_keys { require Test::Deep::HashKeys; my $self = shift; my $exp = shift; return Test::Deep::HashKeys->new(keys %$exp); } sub reset_arrow { return 0; } package Test::Deep::SuperHash; use base 'Test::Deep::Hash'; sub hash_elements { require Test::Deep::HashElements; my $self = shift; return Test::Deep::SuperHashElements->new(@_); } sub hash_keys { require Test::Deep::HashKeys; my $self = shift; my $exp = shift; return Test::Deep::SuperHashKeys->new(keys %$exp); } package Test::Deep::SubHash; use base 'Test::Deep::Hash'; sub hash_elements { require Test::Deep::HashElements; my $self = shift; return Test::Deep::SubHashElements->new(@_); } sub hash_keys { require Test::Deep::HashKeys; my $self = shift; my $exp = shift; return Test::Deep::SubHashKeys->new(keys %$exp); } 1;