rust#rustc 1.72.0 (5680fa18f 2023-08-23)ՆQ4-46a989d0e2cef827e$ɛDp>-b114db70ea0690b1rustc_std_workspace_core ūu sR-13da980d6c74fec5YnFmZܝ--649be05783c8912eU           nightly   default_fn  inner\>>BBL B<bumpalo 3c ??CCM C=                         test_mapآɢɢ͢ ͢͢Ǣ rayon        >>> )  serdeN2266  @60DefaultHashBuilderahash  make_hashF EEEEE EEmake_insert_hashJIIIIJ IIKKKK  KKKUUUU  UUU̯̯ЯЯ  گЯʯ        rustc_entry rustc-internal-api& """"  """ ****  +**    test_set֘ǘǘ˘ ˘˘Ř        BumpWrapper   test_bumpalo      x86kAAE  E SE? generic         sse2      x86_640      imp               0     macroscfg_if>                       Allocator%allocate% deallocate(!(!+<do_alloc-A     bitmask333338invert8flip8remove_lowest_bit8 any_bit_set8lowest_set_bit8lowest_set_bit_nonzero8trailing_zeros8 leading_zeros3AItemAIntoIterA3 BitMaskIterE E 3H#H          offset_fromR Tcapacity_overflowT alloc_err EMPTY DELETED is_full  is_special special_is_empty h1 h2 ProbeSeq^pos^stride a move_next capacity_to_buckets bucket_mask_to_capacity efecalculate_layout_for calculate_layouti Bucketkk n pp ssfrom_base_indexs to_base_indexssnext_nssreadswrites|'asas_mut~(scopy_from_nonoverlapping RawTable!table  RawTableInner! bucket_maskctrl growth_leftitems try_with_capacity with_capacity !new_innew_uninitializedfallible_with_capacitytry_with_capacity_inwith_capacity_in free_bucketsdata_end bucket_indexbucket erase_no_droperase erase_entryremove remove_entry clear_no_dropclear  drop_elements shrink_toreserve try_reservereserve_rehash resize inserttry_insert_no_grow insert_entryinsert_no_growreplace_bucket_withFfind getget_mut get_many_mut   get_many_unchecked_mut  get_many_mut_pointers    capacityis_emptybuckets iter_hashdraindrain_iter_frominto_iter_frominto_allocation !  !  !*  !*+ prepare_insert_slotfind_insert_slot find_innerprepare_rehash_in_place, bucket_ptr+ probe_seqprepare_insert_no_growrecord_item_insert_atis_in_same_group  set_ctrl_h2replace_ctrl_h2set_ctrl)0num_ctrl_bytesis_empty_singletonprepare_resize reserve_rehash_inner resize_innerrehash_in_place +-,  !    RawTableCloneclone_from_spec  ! !clone_from_impl clone_from_with_hasher  !< ! !##  RawIterRange current_groupdata next_ctrl  next_implDO_CHECK_PTR_RANGE    #  size_hint  RawIter) reflect_removereflect_insertreflect_toggle_full-  # :    RawIntoIter! allocation ! ! !  ! !!#: "! #! RawDrain(!) orig_table $! %! &! '! (!#: )! *!  RawIterHash(!_marker RawIterHashInner(!)h2_hash3group! +(! ,(! -(!# .(!#external_trait_impls      KVS! hash_builder)DDD! make_hasherDQDD equivalent_keyEDD  equivalentED  DEDDDDDD with_hasherwith_capacity_and_hasherDDD!with_hasher_inwith_capacity_and_hasher_inhasher0keys  values_mutiter_mut01retain/ drain_filter/- into_keys into_valuesDDD!-- shrink_to_fit-entry entry_ref('bE/E get_key_valueE get_innerEget_key_value_mutE contains_keyE/E get_inner_mutE/E    /E    get_many_key_value_mutE     get_many_key_value_unchecked_mutE    get_many_mut_innerE   get_many_unchecked_mut_innerE   build_hashes_innerE   .insert_unique_unchecked try_insert,E,EDDD! raw_entry_mut raw_entry raw_tableDDD!  DDD!DDD!DDD!< DEDD!Iter(DD DD DDIterMut(DD DD DD#DD!DD!IntoKeysDD!DD!# :DD!DD!DD!  IntoValuesDD!DD!# :DD!DD!DD! Keys(DDDDDDValues(DDDDDDDrain(DD!DD! DrainFilter(DD/!(DD/!ConsumeAllOnDrop ( DD/!#:DD/DrainFilterInner(DD!) DD!/ ValuesMut(DDRawEntryBuilderMut(DDD! RawEntryMut(DDD!Occupied  Vacant  RawOccupiedEntryMut(DDD!elem)D!DDD!"DDD!RawVacantEntryMut(DDD!)DRawEntryBuilder(DDD!#(DDD!from_keyEfrom_key_hashed_nocheckE$(DDD! from_hash/Jsearch/J %(DDD!bEbEc/ c/&(DDD!. or_insertor_insert_with/ and_modify/and_replace_entry_with/'(DDD!keykey_mutinto_key/into_mut/JKinto_key_value. insert_key,,replace_entry_with/  ((DDD!.insert_hashed_nocheckinsert_with_hasherH .)DDD!*DDD!+DDD!,DDD!-DDD!Entry(DDD!_  _  .DDD! OccupiedEntry(DDD!f`)/DDD!0DDD!1DDD! VacantEntry(DDD!f)2DDD!EntryRef(JDEDD!_  _  3DEDD!KeyOrRef(DEBorrowed  Owned  4(DE into_owned5(DEOccupiedEntryRef(JDEDD!f`)6(JDEDD!7(JDEDD!8DEDD!VacantEntryRef(JDEDD!f)9 D E D D !  OccupiedError ( D D D ! J value: D D D ! ; ( D D D ! < ( D D D ! # # = ( D D D ! # # > D D D ! # # ? ( D D #  :@ D D A D DB ( D D #  :C D D D D DE D D F D D ! #  :G D D ! H D D !I D D ! J ( D D #  :K D D L D DM ( D D #  :N D D O D DP ( D D #  :Q D D R D DS D D  T ( D D ! #  :U D D ! V D D !W D D ! X ( D D D ! . e e / or_insert_with_key / f e / e /Y ( D D D !  or_defaultZ ( D D D ! f , / / f . ,  replace_entry  replace_key g / [ ( D D D ! f f . .\ ( J D E D D ! . e e /  / f e / e /] ( J D E D D ! ^ ( J D E D D ! f , / / f . ,   g / _ ( J D E D D ! f f . .` D D D !   a D D D ! extend  b ( D D D ! φ  c ( D D D ! φ  assert_covariance map_key 'new map_val  iter_key (  iter_val (   into_iter_key  !  into_iter_val  ! keys_key (  keys_val (   values_key (   values_val (  1  scopeguard        ScopeGuard  / dropfn u guard  /   /  into_inner   /     /    / set                                   D !    D !     D ! 0   0 1 I /  I / -   D F G   D !  G G H   D ! - - J -  difference ( symmetric_difference (  intersection ( ? ( contains E / E  get_or_insert get_or_insert_owned E  get_or_insert_with E /  J  is_disjoint   is_subset   is_superset . O replace , E take E   D !     D !   D !    D !     D !  I    D ! φ     (  D ! φ     D ! <    D !     D !     D     D    R ( D  # D !  Y ( D !  Z ( D / !    Intersection (  D !    Difference (  D !   SymmetricDifference (  D !  Union (  D !   (  D ! # #    D ! # #   D   ( D #  :  ( D   D  D  D!#: D! D! D!  D!#: D! D! D!   (D/! !D/!# : "D/! #D! $(D!#: %D! &D! 'D! ((D!#: )D! *D! +D! ,(D!#: -D! .D! /D! 0D! 1D! 2(D!#: j(D!_  _   3D! k(D! 4D! m(D! 5D! 6(D!.e/ 7D!/, 8(D!/ into_value.. (!(!(!(!?(!1!hash_maphash_set  BitMaskWordBITMASK_STRIDE BITMASK_MASKWIDTH static_empty  AlignedBytes_align bytes  ALIGNED_BYTES  load_aligned store_aligned match_byte match_emptymatch_empty_or_deleted match_full,convert_special_to_empty_and_full_to_deleted Group  Global 3BitMask  33  FallibilityFallible  Infallible  / 0  TableLayout  ctrl_align 1 27TryReserveErrorCapacityOverflow  AllocErrorlayout&7'7)7*7-7:7J7b7r7v7w7x7y7z7{7|7~7777777777777 777 77777 77 77 77 77 77 777 7777 77 77 77 77 77 77777777777777777777777777777 7777777777777777777777 7777777777777777777777777777777777777 777 777 77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777%  VgOĮ "|0 % EtSX-89EEF#G 3 kyL9߯   ;tKpkk'm ŏnC()  bW!889 9 9  }9;:) ?79N'99;< <   !99;> ) >  ck? 7!> ) >  ck? 7> ) >  ck? 79> ) >  ck? 79> ) >  ck? 7;> ) >  ck? 79@ @ hP(9A) A 3 A ! "U(D)/$*x<DDD!GD)/$*x<DDD! 7ER*y7DGR*y7Simׇ"m79Tn;ϓT29;G9V^z/S9;GXb?*7GXb?*7Y@/ֱ|7GY@/ֱ|7Zh,uI`p(/![ >Ew779Zh,uI`p7;Zh,uI`p7_`)D677D_`)D677G^iKd\/7G_ _ i7G_`)D677Ga)D Y7Ga_xtnS K7G_ _ ؤD7kf`)zxo&s7kf`)zxo&s7Gkf`)zxo&s7Gmf)S3v7G_ _ k=77DEDD!p p `x3(qf`)e ܽD܅܅܅G܅܅D)/$*x<8܅8܅8   > ܽ (܅ 7   > ܽ 7 7 7 7   > ܽ 7ڈ 7ڈ 7ڈ8 (8܅  R  'ˑ%x79  R  'ˑ%x (9  R  'ˑ%x (;  R  'ˑ%x7G  R  'ˑ%x79  #  O.;F9;G9  Y  "4 }79  Y  "4 }7;  Y  "4 }7G  Y  "4 }7  Z   }4a(/9  Z   }4a7;  Z   }4a7     |>G79     |>G(G     |>G7;     |>G7  Ù    BA!79  Ù    BA!(;  Ù    BA!7G  Ù    BA!7     zq79     zq(;     zq7G     zq7  Ț  {^7;  Ț  {^7G  Ț  {^79  Ț  {^(G_ _ t*XՏJ7Gk  nB7Gm <͛}-d7װ|kڹG(nk                                       pk             A                        HE                  + % 8=G"91i81;*G98#$$$1-- -65535            000mem::size_of::()   )pT1   ʪ  ̪   ʪ    ƫƫ ̪ ʪ  ̪  ̪  ʪ ̪          Group::WIDTH0        Group::WIDTH      W Z   ̪    W9AlignedBytes{ _align: [], bytes: [EMPTY; Group::WIDTH],}        Group::WIDTH   __m128i d d N[+f    h  '   b   д  д   b GY GYGY       ,  Y  Y  Y  Y   Y   Y   Y   Y   Y   Y   Y   !Y   Y IpiecesEEE4&w\NF  ]Y  Y A   ]Y Ǵ h&    Y  Y  GY Y Y,   Y  Y Y  Y  Y  Y}NeMatchưb  Y  ]Y {-P  Yд   Y left_val  Y right_val  Y   Y   Y  Y   Y  YGYGYGY        , Y Y YY  Y  Y  Y  Y  Y Y  Y  !Y  Y  ]Y Y  ]Y  дд( h( Y Y GYYY, ҽ Y Y Y Y Y Y Y ]Y Y( д д Y Y  Y  Y Y Y Y Yд  h; h;  h "+  ддд "дbyte  WJJWд%. %д & 9ZZ$$ h$%%д%!% h%!%&  &&!& &!%l% h%l%s & $$$% ! д$д%д%д%д%lд%д&!&  zero$special%           i      %  ?NonNull#CC8f  )  0   'w   bb߇grE3  {-P            j  * t          t,33 &!-z z   9JJ       '  '  ' -   -   -  2  2 2    2             :         - ' ҽ ҽ 'ҽ - 2    mask                  ; U         U  < <     <  w >. w=( {-P ( ?>YY 444   #  ,====     1 11 1? 4,#= 1 0000@d0d EDC C =  l ;  {-P,k#  Jh    l c uty bit   O         O P F    b  FQGG  Re toe   U    "Z"Z G"Z! @ZZ A@ZU@Z"Z܇ Hash table capacity overflowU   z& V  W255   X  128  Y5 )5  Z8 )8?Y?Y?Y  Z ?Y ?Y ?Y ?Y A"assertion failed: is_special(ctrl)"" ?Y  [c?Y?Y ?Y )c \qq           :   :!!  !!  !!  ! !! !!    @     !   !! !]  N     !! !ҽ! ҽ! ! hash_len top7 #?Y#?Y?Y' '$?Y ?Y'! '!b'!  ܇'"Z'"Z '"Z&@Z&Z҈&@Z( ( ( ( ( (  (  (  ( ( )b&& ^^%_% `% kXMM& & ?Y?Y'' &@Z'"Z܇'!ҽ(( ҽ('!& )& &( ( '! '!Went past end of probe sequence'!'!b&'!'!'!)OY)OYOY*Y*Y*Yc*Y *Y* Y* Y* Y *Y Y*!Y *Y *]Y* Y  *]Y-- --  ///////////! -111  1 111 11 1 1l1111111113 3 33& 33c+*Y*Y11111, ,OY*Y*Y*Y* YY* Y* Y*Y*]Y*Y--///1 1111113 *Ycap,*Y* Y*Y adjusted_cap1  1 1+,,*Y*Yc+*Y,*Y5556 5777777777777777757d454 577ҽ77ҽ7)4 4,9,9,9,9,9 ,9,9,9:: b:: : : b:;;; b;:(:  ; :(:s ;f9::::  : :(;͸;:9; .?Y.?Y?Y<< </?Y ?Y/?Y/?Y+assertion failed: buckets.is_power_of_two()++/?Y<< ==  === == = = l>>>> ==>  {-P=>=6>    >=7=7  =7=7 =7 =7 l>>>>=7>=7>> =K  >> >> >>/> Ͼ >#>0>0>0>0 >0>0l?2?! b?2>0 ?>0?o   ?u @@h;<=>>==>>=7=7 >?? >0>0?= ƽ;;;?Y?Y</?Y<< = =7=6==>=>ҽ>>=7>>ҽ>>0>/>ҽ>?>0?o?= ;0; <<  ctrl_offset=   > = > =7 >  ?  >0;> > BB fBB5C hCCiBƽBBB0BBI#CC8fI kIrI>I IIII>JJ  JJK KK KK K JK K KKL L L LL  LL> kLuIJ JJJJJK ҽK K LLbaseJJJI MMMMMMMMMMNMNMMN N NN  N NN NN  N-N  R N-NvL MMMMMMMҽMN N NNNMMLOOOOPP  PPOPPPPPPPPPwNP#ONOPPPNN QQQQRRRRRQ% Q% Q% Q/QR RR RRR R S SS SR> k SxQQQQQQQQ%RRRҽQ%RRSSQQQQT T wTTT  TTySHTTTT TSHT UUTU UUzTCTTT TTCUUUUU UUUUUUU U UULUU{ULUUUUU UUU UULV VVVV|VH VVV VVHW WWWW~VP W VW VVPX XXXXXXX9X XX+XWXXXX9X XXXXWbb bbc  PhantomData<ɏcb()  bWb)) ) ) )  G$$bbbcc b bbbcc c  bc cccbbbcc be,e e,ed   'wee0edg(g g(ggfgg0ggfkk kkb lkkk)) ) ) )  G$$kkk1?TY1?TY1?TY1?TY1?TY1?TY2?Y2?Y?Yooo3?Y ?Y3?Y3?Y+assertion failed: buckets.is_power_of_two()++3?Yooooo pp poooo     oppoo    'w oo o  o lo o q op c   'wop    'woqmp p q q o mppoonmnn ?Y?Yo3?Yol c utyooopppopqm0n fallibilityn  p om s st tttt ts sss%  su ussss s s ls  s usu csu suruu  ruuss srrs sssttuusur0rs  u  s rx wDw wDxwwwwx0www{ {F{{F{F zL|| |{F{|y{|(zzz{F{{ |0zz0{y}}}? } }}}?~0~0~  ~%~c~ ~ ~0 ~0~ ~cŀŀՀՀŀހ ހ77s ŀŀŀs  ҃%ك  vكtƒ,t 6OY6OYOY7Y7Y7Y7Y 7Y7 Y7 Y 7 Y 7Y  Y7!Y 7Y 7]Y7 Y  7]Y9?Y9?Y?YӅ؅ ؅ ˅:?Y ?Y:?Y:?Y(assertion failed: index < self.buckets()((:?YƓ / u /DŽ7Y7Y ܄OY7Y7Y7Y7 YY7 Y7 Y7Y7]Y7Y?Y?Y˅Ӆ:?Y7Y܄7Y7 Y7Y DŽ7Y7YDŽ7Y7Y  ψψڈ ڈ ߇K ψǐψ ߇  ы ы ֋ y֋ڊ Ɋы ы  ɊՎՎڎ impl FnMut(&T) -> boolڎƎ  Ǝ ˎ  c:  ̍׍ {-PՎՎƎ ˎ ̍׍,ˎ    ztߑ ˑ  ˑt  ݔ $ ؔ4  {-P  Óؔ ݔ Ó,ݔ  K͖ؖ ǐ͖ K*   *ΙΙΙ     u $ ΙΙΙԙ  ԙ5  Ι Ι ΙΙ self_    ޵  ***ŚŚʚ ʚ * *Ě **        8   D       9             D, *ĚŚŚ       D     & & ݞ ݞ  О&О  О&ȞȞȞ[á  c   #   Ø    ȣȣ : :ţʥԥԥԥܥ Kå impl Fn(&T) -> u64å1ii Bi¦¦¦   ۡ(Ɯ ќО&ݞӎݞáۡ ȣ:ӎi    'wiKʥԥܥ¦Ɯ min_sizeќH min_buckets  0  # ## ###  ê Q   ;kkk ٫ ګ٫( Ũ Ш #kkQê٫Ũ  additionalШ H###### Ѯ>֮֮9 ¯ï¯   ѭ#¯  Hѭ ²8 ²8     99 7 77 ճճ ճճ   <   B  ҳ ҳ    ߱İ װ  ǐ9 9²8²8 {-Pҳճ<,İ װ H Ѳ ز ز޲  ޲ز!ز! |ز!Ѳ) Ѳ)Ѳ  Ѳ)²8 Ѳ²8ǐòʲѲ)ز!ز!ز!ز ز²8)òʲH²8 _ref__hasherݷ8 8  99 7 77 ݷ   ȷ  ¶۶ ǐݷ9 988 0¶H۶    !!ии!) ) )ٸ8 8ǐ)!!!8)H۶8        !!  ƾ      9 9 99 [ݾCݾ Q ݾC9 9ݾC  ÿÿÿ  !! ܿ)ھ 77  ,    { ^  û !ƾݾC9ÿ!!7ǐ7 uHû old_ctrl, ''''''  ' -  '               z   'w    'w'ǐ'  u,  )) ~)4 ))  uH $$$$$$        #  =  =   =       $$#ҽ=ҽ u,$#"$      =?Y =?Y?Y  Y >?Y  ?Y >?Y>?Y#assertion failed: is_full(old_ctrl)##>?Y$  "  "#($$       "#!"! #% %""#$& ?Y?Y>?Yî$$ҽ"" ,old_growth_leftnew_item hF F    KK գգh  ]       #   2 hK ңޣKFF        F> FFFF_ref__eq _ref__self      0  {-P  ,       0  {-P   ,& impl FnMut(usize, &T) -> bool!''  {-P'' ''l'        V ''  {-P'  9NNRNMNMN@Mjg(+   8 Enumerate))məA3    9        ``t    ӻͺ5  5 :$5  ӻ  ӻ ''  l c uty'&'     {-P 5 5 ӻ  hashesptrs  'curNN   prev _ref__cur&!''ݸ'' ''l'  '''  ӻ b''  '&'ӻ   'NN              V   9NNRNMNMN@Mjg(+   8))məA3   9    $  $          #   #"      l         !  V!0 " q%  MaybeUninituninit u ?+˼<       {-P l c uty             outsouts_ptr   NNN       k Ǭ_ref__i)))Yҽ)Y;;  > >IҽIƓ ++    G  G     G9 ΂o@ @ hP΂o  υԅ ԅބ]H> ) >  ck?    ބ AGYAGYGY   9BY    B Y BY B Y B Y B Y B Y B YB Y  Y B !Y B Y B ]YB Y B ]Y& &Ί:Ί   Ί:M   M  #CC8f  <ɏB YB Y GYBYBY   B Y  B YB Y YB YB YB YB YB ]YB Y ManuallyDropu קMΊ:&ӎ B Y B Y B Y CGWYCGWYCGWYCGWYDGYDGYGY   EY     E Y EY E Y E Y E Y E Y E YE Y  Y E !Y E Y E ]YE Y  E ]Y   u    E YE YЏӎGYEYEY  E Y  E YE Y YE YE YE YE YE ]YE Yӎ {-Pԏ  E Y E Y E Y<ԏ  ֓ ߕ    + i++ ݔ1 ԕԕ ԕ+ Ɣ Δ  ǖǖז זǖ)  A  A  ߕ      ʗ՗ʒԗԗʒ˕(LƔΔ ƽ+ ԕߕLǖ)ǖǖԗƔΔ lco ʒ ,ܚDܚܚD ӛəəӚO)) ) ) )  G$$ٙӚO, !ƫٙəӚO,!! !,ܚD ܚDܚܚD ӛəəӚOٙӚO,!!ƫٙə!G?YG?Y?YƞΞΞH?Y ?YH?YH?Y+assertion failed: buckets.is_power_of_two()++H?YΟ*۟ ۟Ο* ȟ0 Ġ U ĠΟ*     $ BBB    նBB  #BB $ ƤΤ  -    V  " "!"  ! ߥ5ߥ ߥ5$Ӧ &ݦӦ &ݦӦ %& ) ) ()$ d('$*# %$'* #קקاק   ԥ+   'w ՝ ?Y?YƞH?Y ƽΟ* B# ͸ ƤΤ إ Ӧ ҽӦ $ ҽ   table_layout 0՝    ˠ )إ       שששʩʩ  ʩǩ  " "  ̆ Lժ  ?  ժ.MM    'wMM M  Mlګ B  BM cM  MCC  CC C ClC  cC C :  W+ɬƬ  ݬMC  MMCC  Ĩݨ ʩשl c utyML"̆"Ml c utyCBګ C: ɬ ɽ 0Ĩݨ 0   M   C W ̆ "" ̆"ݨ ̆"_ref__fallibility ׯܯܯ ֯     ͮǯh  ˯ׯ˯ͮ   %  %۳ ۳ ۳/ ϳ  ϳ  Գ    ƴ(     % %% K?YK?Y?Y  L?Y ?Y L?YL?Y1assertion failed: self.bucket_mask < Group::WIDTH11L?YOOYOOYOYPYPY-PYPY -PYP YP Y!P Y"PY !"Y P!Y# PY% P]YP Y#%$P]Y ) ()! ('!W'&׼&׼  ׽%+,׽%  b+,*      PYPY.  ۳/۳۳ϳ Գ ҽƴ%?Y?YL?YOYPYPYPYP YYP YP YPYP]YPYW!  ׽%׽%PY 3 AԳ   PYP YPY#  PYPY PYPY ]    % %      8   9       (     գ   P  !  < ))) % !%  !ƿ0" Կۿ   ҽ գ )!%% ԿۿA3 Aƿ   ) 9 J;((m )) 8̼̼StepByμ2ϼstep2м first_take2B֐))) )) 9 )) )      )    !  ! 4,  .    !       N 0 " "!$&&% $%#N̄!#  0z'  )))) )   !  N  N   ) A A     ROYROYOYSYSYSYSY SYS YS Y S Y SY  YS!Y SY S]YS Y  S]YU?YU?Y?Y V?Y ?YV?YV?Y(assertion failed: index < self.buckets()((V?Y  / u /SYSYkk'm ŏnC OYSYSYSYS YYS YS YSYS]YSY?Y?YV?Y#CC8fSYSYS YSY SYSYSYSY YOYYOYOYZYZYZYZY ZYZ YZ Y Z Y ZY   Y Z!Y ZY Z]YZ Y  Z]Y\?Y\?Y?Y ]?Y ?Y]?Y]?Y(assertion failed: index < self.buckets()((]?Y        ܛ ZYZY[OYZYZYZYZ YYZ YZ YZYZ]YZY?Y?Y]?Y ҽ ҽZY ZYZ YZY ZYZYZYZY  1 1l   l \ Y ^   3 3 33 = =3  3=    1   ,   ڇ =31 '  ';;;       ڇ 'ҽ;ҽ  PP  գ     գ      Ŷ  $   ˶ P ˶ գ գnew_i probe_seq_pos  probe_index       4 C CCC P P4 CPP% P  _ref__probe_seq_posҬ ee  a prev_ctrl "  7 F F F        7"ҽF)index2    `?Y`?Y?Ya?Y ?Ya?Ya?Y/assertion failed: index < self.num_ctrl_bytes()//a?Y     ?Y?Ya?Y ?ҽ?# # #Uҽҽ#U  JJc?TYc?TYd?Yd?Y?Y e?Y ?Ye?Ye?Y(assertion failed: self.items <= capacity(( e?Y  %       l  # #   c    'w    u $     #                'w    u $ S  ?Y?Y e?Y  ҽ#  ɽ 0  new_table           ڇ  ɽ ɽ " Ͼ" (  "   ) )$  ă      7 77 /  *ۀ  Ƃ  ƂւƂւ Ƃ(   ( 7 77   ă ڇ   7 77 "    / (ƂƂ ҽƂ   H  new_items    full_capacity   2 2  -33 33 3 3 l3  3 c3  3  8   9      1 10     ڇ#!## ! ## "# " &  '   &'% $%( +( (+*(( )*Í  ,(  ),(  -̌ ̌  $(-#̌/0   /. ɐʐɐ ̌   332Ňڇ ӆ  l c uty3223    ### #̌ ((((Í  ڇڇ   0Hӆ     3   2p    ڇp ڇ      u $ ڇɊ -c  c -    --   ՝ ՝ ՝  -՝ YYX%-՝ d՝ d՝ ۝ -۝ԝԝXԝ -ee .-   -f f -$$#-g#"g%"%!-Ҡ )Ҡ Ҡ )(-Ҡ Ҡ h(Ҡ 'h*!Ҡ ؠ '*&-ؠ&/&&/.-&&i.&-i0!1& -01,- .,+-..+554-j43jˤ6 362/-":"":9-""k9"8kΦ;!զ<" 8;<7- >7=>W=!BBA-lA@l@W? -EDEF&/DFC0-/hGYGhGYGYG$" iYI7i Ybi Y iYH Ibi YJHi YKHi Y NJi Y OKi Y MNOi Y L M Y L$#i !Y P i Y R i ]Y i Y APJKRQ-i ]YTU&/ TUS1-/mXWm*WV&-*ͭ\ͭ ͭ \['-ͭ ͭ n[ͭ Zn8]VZ8]VZ(-__^)-Lo^Lo]pa   a`*-p+p+,// Ý  Ġ i Yi Y q˕ڇ͔  Ɋ ڇ ԝԝ՝ ՝ ަ՝ ՝ ަ ڇ ަȠҠ ަҠ Ҡ .&&ަ&&ަˤ "ަ""Φզ ަ/GYiYiYi Yi Y Yi Yi Yi Yi Y i ]Yi Y/*ަͭ ަͭ ͭҽ8i Yڇڇ՝ ڇڇڇڇҠ ڇ&ڇڇ"ڇڇڇͭ ڇ͔ H ʋ i_p!new_i_pȠ& 7i Y Ji Y Ki Y PXWXWXi Yi Yi Yi Y˘  ˘ И             X ؙؙؙޙ W ޙ     " "ƚ!ƚ!՚ƚ"ƚ"՚ ƚ#ƚ#ƛ$ƛ$**ۛ %ۛ %88L&L&ݘ' Ɋ˘ И  ؙؙ"ҽƚ*ƛۛ ҽ8ڇڇڇڇڇڇڇڇڇڇ И  XW  1˯˯$1 7 1    ְ}  #ܛ; ;ְ}  '    rڱͮڇ   ƽ1 ְ}ְ};#  ɽ  ˠ    ó óȳ ȳ6 W) ) )< ִ^ Բڇɲ 6  óó)ɲ Wk?Yk?Y?Y l?Y ?Yl?Yl?Y,assertion failed: is_full(*self.ctrl(index)),, l?Y     3    Ķ Ķ$ $2ض   ض     +     Ȼ  @ Ȼڻ ڻ;;;K KXμμݼݼW!"!" ###е$ڇ ?Y?Yl?YԵ   $ K; ڻڻ ҽ;ҽҽ  index_beforeԵ  empty_before  empty_after )  ݼWXؾؾ˾&˾ ˾&                Ņ r    r     u $     7  7  ؾӎؾ ӎ      )ʋ    M M  M(!5!!4!!!!& & !S5SS ȲS      u $   %-  -  %  %..Ø  % Ø % #  #   %  / / %! !%0 0&%% 1 1"  "!% 2! 2 %4Ø## $ 4#$#4% %'%& &'%**)%3)3(%5, ,+%5 %4%"!5!$  6 !!&ӎ ޵ #  !    ȇ ޵  ޵ ӎ  ȇ  ޵    source )& F F޵F i   i(..    G (          غ                ($        u $   $#  Ė ''     "  Ė "!! %%%&1&(  ( ) ..Ė           Ė      Ė Ė   ʋ   ߄ +++   ++ ++         8  exhausted!           9ڥ              Ϡ  ޵+ڥ  ڥ  ڥ    ڥ    &}5}}4} }}} / /}   .}  ?   } }    Ȳ  5  $  غ $      $      $  5  -       u $  -,$ $4   "  #  #""*2"*!2$*!$ " * *)"3)(3('" $&'4+$&+%" 4 .%./,0/,0/$,05   1%  $4$!5# 6 }.?/            **    $$    ҽ,   H guard_self        ޵     EE     a      ǁƁƁ\Gɀ Ɓ oOYoOYOYpYpY(pYpY (pYp Yp Y p Y pY   Y p!Y pY p]Yp Y  p]YrGYrGYGY    sYs Y's YsY 's Ys Ys Ys Ys Ys Y  Ys !Y s Y s ]Ys Ys ]Y  " &!"&  !   ̊ъ Պ # ъ $  %#ċ&e $%&؋߇pYpYs Ys Y)OYpYpYpYp YYp Yp YpYp]YpYGYsYsY s Ys Y Ys Ys Ys Ys Ys ]Ys Y &   ċs YpY )9pYp YpY s Ys Ys Y9  9 #߇  Պ s Ys Y߇s Ys YÈÈpYpY߇pYÈpY#ÝÝ   &; ɞ x ɞ  090 00      0  0 0   # #00    բE ţ *   1ԝ ޜ # &000# ޜ ţ   ڧ è ڧ  kթ ǩ ǩ ˪˪˪˪˪˪trueլ߬ɬ%ɬ  Rɬ%            &  + 0  լ߬& ҽ remaining_buckets  ֹ"۹ ۹c̹ ֹ" c! ˾׾b ! b9 $$8   #   q qqq  q ##  ,, :  q qtt     0 0%  1  u uu assertion failed: is_full(*ctrl)  u ! !"""8###8%(%$ & $ &8'$) )'(  +-(-,!*+,!*8110/0 3  230 /2.!0%56.% :564" xOY7xOYOY7%#yY94yY:yY8 9:yY;8 y Y<8 y Y>;y Y?<yY=>?Y=%$y!Y@ yY B y]Y y Y A@;<BAy]Y C C(&DD'D*EE)E*zFzF8+ H,J(JI-"GHI"G3.|OYK|OYOYK8/O(ON0}YMN Q '}YPQ}YL MP}YRL } YSL }Y }Y RST1}YY T82}!Y U }Y W }]Y } Y AURSWV}]YGYXGYGYX84\(\[5YZ[ ^ ' Y]^YY Z] Y_Y  Y`Y  Y  Yݓ _`b6 Y Y a b Y a87 !Y c  Y e  ]Y  Yڔ c_`ed ]Yտ$#yYyY}Y}Y  Y Y f  $ q# : ,,##  %u ҽҽ(  !   %OY yY yY yY yY y YYy Yy YyYy]YyY ҽҽ" OY }Y }Y( }Y  }Y } YY}Y }]Y}YGY Y Y(  Y   Y  Y Y Y Y  ]Y Y  is_insert )' next_bucket (our_bit.was_full4yY;y Y<yY @}Y R} Y S}Y U Y _ Y ` Y cտ$   )))   9) ))) 8 =   9          =, )    =       T |  |        >  9      ҽ nxtfalse    \   \ B  B   ߕߕ""  'C   "ӎ"   l  î Y) î ü      Y  9 S  S:) ?79N'  B   > ) >  ck?   B   u ק()  bW     #CC8f )                d    ƈ)و          d )              9   {-P lԊ  Ԋ ي z ي  {-Pϊ ZE     l c uty  Ԋ  Ԋ     Ƌ  9 Ƌ ׋S   Sؔ )) ) ) )  G$$”)” ”)w <ɏ@ @ hP A) A 3 A ! "U”)  ؔ )   & &     %     șߙ ژ  ؗA) A 3 A ! "Uݖϖ ܗ  șߙ)ϖA3 Aܗ!  ț 9 ț      $ ќ3             ߞ ߞ ߞ  ߞ3        &   . ..   ՠ0ՠ0  !## #0  0=  # /  >âӞz͝    מߞҽߞ.& ՠ0ՠ00##/#      מ777 77()  bW78  87o 88777 77 7 7  7778$ 8  8$8   8929929  9 :8 8 8  88$  8$ 8 92 92 98  88<5 E    =; < < D< ;=  = =*=  =*=<5=    <5  <  = <5 <D<  <5D? E    @? ? ???@ @ @ @  @@ @@   @@?@    ? @ @  @  @  ?x@? ?B     BA B BBAB B B BB BB BBBB    B B B  B  B BB BDE  JEE EE I JEEEE I EEEECCD[D C  C D E  E   EDC  C D CII  JII II IJIIII Iˈ IIIIHHI[H H  Hˈ I I ˈ I  ˈ IDH  H I Hf ff  ffN ffeeD)/$*x<fe f ()  bWfDe ef f ff ff ɋ ffN ffffeeɌ fe f  fDe eq q!q q!q` qqppɌ qpp q  q!0pDp ps ss  s sssD s s s sssDz zz zzV {{yyzz zz  zDz zy ރ+ރ ރ+j ɂɂ   ރ+0D ɂ҈= ň =   E  E   ɔPXb?* R*y PΛ ӛÛ ӛ VY@/ֱ|  Λ V  ֣9 }]-Lиݞ  Simׇ"m } Ǭ Ǭc <ɏ   :) ?79N'   ɶf <ɏ  ߵ ѵ   ѵ  ƻ ƻѻ;  ;ɾ ξ ξɾ׾޾> ɾ >  8 vY~e*   > ) >  ck?   v    8   9     kk'm ŏnC    ~             /                    {-P                     f u     |   Zh,uI`p     \)ۢ}ϼ( |      ;    ;  8 9 uTn;ϓT2#+o.\u   ; {V^z/S۾ {Z ΀-΀ ΀-Z B   Z Z ΀-   ^ ׍-׍ ׍-^   F͌    ^ ׍-   ͌S ѓ- -S   ;  S S - ѓ ^ ԛ- -^  FϚ   ^ ^ - ԛ  min_capacity Ϛ ˡ2 2+    +         آ      ڡc ݣr ڡߤޤРР_ _ ؤD ݠ   ˡ + +    kf`)zxo&sآ {-P mf)S3vcݠ f` Р- E-֫*   ֫*  ɫ  ɫ  Ϋ  Ŭ    p p `x3         «    ޭ  «۩_ _ k=       ֫* ֫* ɫ  Ϋqf`)e                 $ {-P                + ++   +    y        +    : ?     Ё ܁   {-P܁     {-PЁ  ksNN       Æ ܁  Ё res   Æ     %   Q ?Ё ܁     ݂    σ %  NN      ԍ ܁  Ё     ԍ      N ?Ё       % {-P    σ   NȄȄȄȄȄȄNÅDž        Dž݅  Å  Ё   ͅЅՅԅ ܅˅ԅ ԅ  ˅ ̅ ͅ Ѕ Յͅ Ѕ˅ޔ%  ޔX ?Ё      %  ѓ  σ ޔ%ѓ  NN           Ё              N ܗ           Nϗ      ϗ6• σ       N ܗܢ      •NN               ܢ               _ref__ks X ƚΚ  Κ       X     @ σ  ܘ      X ƚ Κ  Κ ܘ  NNӚښښښښښ  ښ     ښϨ  Κ ښ ښ  Κ Ϛ Қ Ӛښښ     Κ  Κ Ϛ  ӚΚ    b        ݜ/ݜ   ݜ/ќ ќ ќ  ќ  ќ;  bbÜT Û    bݜ/ ќ ќ     NɛɛɛɛɛɛNN̦̦̦̦̦̦̦̦̦̦Ӧ0Ӧ Ӧ0,  Χ   ,    !          _ ĨĨĨǨǨǨèèè ˨-˨ ˨-___  C        Ȧӧ3 {-P   ̦   , ,  Χ  _ _èĨǨ ˨-  ,  ̦  0  0 ¸h       -  -¸h¸h¸h    Cҹҹٹ  ٹҹ     Mɹ ٷ   ʷз    ¸h -    ҹ ҹ ҹ  ʷ з,k_refv_ref        _        _    #    t J u]??t.      =/   'w  -         fuJJ                 {-P   + +0  0   %v      0    v^iKd\/"   v ha_xtnS KӉ ɉɉh ˜W    W ֨  ֨ ٞ ޞÛ ޞٞ[=    ٞ[ :   B       ٞ[ ٞ  =        . ?   =.  =       = fu= _ref__other         u  _ref__value   H " Û " F   ++ Ft   'w z*ޡ   GGGEGEGEG EGEGbufEQ ! >S FFDebugMapFEF EF has_fieldsEFhas_keyEF EIgEE+ " "    tܨܨܨܨܨܨ ܨ Ǩ<Ǩ<Ǩ<Ǩ Ǩ<aaܨaʮ Ϯ Ϯ߮߮no entry found for keyʮ.خ > خ ʮ.]    ʮ. {-P ʮ ߮f]:) ?79N' ׄ ͼX <ɏ R*y  ׄ  ׄ   H $ƾ ˾  ˾$ F  --Ծ FԾv     FF DebugListFEb. $)i- $ $  ƾ vׄ  X    Simׇ"mׄ  < <   ! W        9! ?  Q       Q      9 T  ҏ T 97 ҏ 7   F   ! 9     F F Map/8X  *\\       \ F F  ! ҏ         ѐ ! ?  ޝ Q       Q ޝ       T  ҏ Tڕ 7 ҏ 7   F ʗ  ! 9     F F  /8X  *\\       \ F F  ! ҏ            7 _Xb?*    _   $   $ F  -- v     - $ $   v  Ά9 aY@/ֱ|    a   $   $ F  -- ɇv   Ї ׇ - $ $   ЇׇɇvȒ> ) >  ck? ȒӒ ӒW    Y~e* ׄ Ȓ  Ȓ  Ş ʞ 9Zh,uI`pʞ     ܷ          [ >Ew7ܷ  ß ßßʟßß  ўsߞe  ܷ   {-PŞ     ß ʋ  9   9; 9 [ >Ew7    9\)ۢ}ϼ( ɣ ģ ģۣU      ɣ  U ׄ   9ׄ  " Ϥ`  ܷ   ` ׄ  8 ׄ  9   kk'm ŏnC۩   ۩  ~     ʩ              ()  bW        \)ۢ}ϼ(       {-P      ʩ  ۩   ۩         f uʩ   / E/ߐ%   o_ _ i^iKd\/         #         /Ǣ ɡ  is_match / /()  bW      /      / 5      /֤         ߤ  ϧЧϧѤ     /  /  Ѥ  ֤_`)D67   a)D Y         `֤                   _ref__is_match ۬/۬ ۬/%   Ьo {-P ݫa_xtnS Kͫ ӫԬ  ͫͫӫԬ    #         .  .       .     . ݶ4  .        ķ      з޵޵1     {-P . .      ķ   . .  f u  ޵                   ȿ ھ  ʾ ʾ     _         _          n<  #       fuJ J      _         &   _          &  6D           default_key  default_val JJ     _        _                     6xH      <JJ     _     _                V8           J  J   _   ;     J  |H      H  X$     X  ׂW$    ׂWć ć··ÇH   ć ćH ƍ ƍ؍W$     W  ͒X$      X  ԗ  іgR      fu і      ġˠs^        f u       άիs^      f u ±±±±±DZ DZ ±ұұұ#   #ޱ[ݱݱ[   ± ±ұݱ u[  !   !Թ[Թ[   fԹ[  ʾ> ؾؾʾ>    ['    [        g gg                          g     still_occupied            0 ?   ! g gX  g  {-P ڿ  fug   new_value ff      1  1  , '  x    fu          ,  ,     }            ,  fu   W       h    W      2         W  fuH               H   1  1           , ,  w    }      #    ,      fu`RawEntryBuilder!  H** Es      EE DebugStructEEE EE ED˄*!s    _   RawEntry  H_    RawEntry  "  G" E ++ E" " + + IK        EE DebugTupleEEE EEfieldsEE empty_nameE= 1+"" +""  o  RawOccupiedEntryMut%  #K key        K E  svalue    s   ssKK%          RawVacantEntryMut# !,,u   ,#uڀڀRawEntryBuilderˀ!̀ ̀ˀ*ˀ*s     ˀ*ˀ!ڀs    _kf`)zxo&sEntry _mf)S3vԔ ԔEntryƔȔ  ȔƔ Ɣݔ ݔƔ(Ɣ(  ( ( ϕѓ@B   _ _ ؤDؓ ߓ Ɣ(ƔƔƔԔ (ؓߓ  ѓ  OccupiedEntry   E key        E  m٣٣value    mӣӣ  Ģ ˢmmEE     ٣     Ģˢ   VacantEntry  .       .77  ̬  7..          _qf`)e     > ̳ ̳ ̳ ̳ ̳ ̳ ̳ ̳ ݳ  ݳ     ݳ         >    -   -޴      Ѵ !Ѵ ʭ  Ѵ !                 ȳ Գ   V    ̳  ݳ  ݳ     Ŵ  ޴       u J̳ old_key  old_valueŴ                     -  -       f            J                      ͷ                                                                                             spare_key f                 п                                                             F       ڿ                 f u   _ref__spare_key    1    1    3    3                    3   3                             3     u ) J                  3   3               ~                    3         u `       _      _              k 4 '         u J J             _             _                       - 0     ׂ   ׂ  ׂ    < J J               _             /      _  ΀                                     - 2ׂ  ʆ ׂ   ׂ  ׂ   ʆ    < J J                _        p p `x3   ڎ    † _̆ ҆ ΀҆ ̆ ۆ         ʆ      Ї Ї Ї ݇ Ї և և Ї                        -  Zׂ  ʆ ׂ  † ׂ̆   ʆ     ڎ ׂЇ Ї ݇     < J† J u      _     _        Ǎ   Ҍ , *   Ҍ      J J              ϔ  _ٔ     Ɠ _                      ʆׂ                        ~ 2 Ӓ ʆْ  Ɠ  ʆ ȟ ׂ ׂ   ϔ   Ӓ ْ JƓ Jϔ                   _أ أ أ  ţ  ʆ ţ                           8   ʆ   ʆأ       J          _            _ ë ΀ë  ̫                         -۫ ; ׂ  ׂ   ׂ  ׂ     J J   kk'm ŏnC   |  ٱ )   ٱ )   uٱ   ٱ )     ݰ   u " D)/$*x< "()  bW ݰ "     {-Pڎ aº    a -    "ݰ ӳ   a ݰ      ھ H      ھ H ݰ   ~     X $ׂ       X ݰ  ʹ      W  W $ׂ  Ǻ    W            #    #  [    [   ׂ ׂ    u  [         >     >          ݰ  ʹ           >ڎ          :     :       ! ž   !                    V   Ǻ Ǻ      ڎ   ׂ       u J           ݰ  ʹ              :  :        s    Ǻ Ǻ    ڎ    J            Ѐ Ѐ Ѐ  ڎ ӳ  ݰ   ݰ        ʆ  {-Pʆ      ʆ         ڎ߄   ӳ                              ڎ             ʆ    ݰ     ڎ  ߄  ӳ ӳ        f             ā ā ā    ʆ                  ʆ                            ڎ                                      ́  F́    ā  {-P ʆ           ڎ           ʆĀ f uā    ڎ       ]      ] ڎ   ӏ   f  ڎ   f ז ז ז ז ז ז   ӳ  ̕  ڎ             ӳ    3    3       ̖ ̖ ז   ̖ ̖       ׂ    Ǻ ̕   ڎ   3  ӳ ӳ ̖   u ) J         Ř ӳŘ   ڎ            Ǚ ӳǙ   3   3Ř Ř Ř ֘   ֘       ڎȚ  ӳ             × '  ݰ Ř    ڎ   3Ǚ   ݰȚ ӳ ӳ ӳ    u `           8       98                ֝ Q ֝ Q֝ Q֝ !  ֝ Q        2  2       A  9    <      Ϝ          Ϝ              A  2 2     Ϝ  Ğ ֞  ֞ ڞ  ڞ     2Ȟ )Ȟ   2  Ğ  ֞  2ĝ    Ğ  2 _ref__mapۮ ۮ                  w ܯ  ܯ    ܯ  ۯ    ۯ    ۯ   ۯ  ۯ ۯ  ۯ    w           8   G  9   B          ׮     ۮ      ۯ ܯ  ܯ ܯ ҽۯ ۯ    G ؑ 8   ۮ -   ° ԰  ԰ ٰ ٰ     8ư *ư  ؑ 8  °  ԰  8    °  8   8  3  98   " @  8 /8X ;       @ 3                      f u      2  9    ! ?  8 /8X :       ? 2                  f u      #+o.\        #+o.\      …  |   … u  |                      …    …                                    c       …  … …     ʋ u _dropfn     1     1      A      A  …         …     B      … °      B !!! ! 6  !  ^܅  ܅ ! !  ^! " ! !  !" !Y! ܅! !!  ! " !  !!Y777 7 7 7C77777C;;< <;3  < ;e  R  'ˑ%x; ;Xb?*;;;;e??? ?? >9>>?>>9BBB B B ABAABAABFFF FF5  F Fp  Y  "4 }FӴF Y~e* FFF FpKK K      KK  ͿKKKKJ JJӴJ JKKK  K J JJK K KK KK K K K K KK K KJ K _ref__fST()  bWTT TTT S  UUR RT   Z   }4aSӴR RS\)ۢ}ϼ( T:) ?79N'T  T TR RRWWW WX W9WӴW WWW W9`` ``?  a `{   > ܽ``D)/$*x<`H``{`aa` ```a`?  aa`{ `{```aH``{j3j! j3jV  k ijjjj30jHjilll  l ll lB llllllBs&s s&sI  t r܅ssss&Hssr{={$ {={`  | z܅{{{{{=0{H{{z  ǀ< ߀Հ Հǀ<ʆ ʆ ZӴ    Z    Ռ ՋӴ     ՋÑÑ̑  ̑ IӴ ÑÑ I     חbӴ       חb  H     Ù    BA!ß    4 9g   Ѧ     zq Chaina'':_4Ѧ   ǮǮۮ  m  mȯЯ ЯU          |>G֭m  ȯ֭smallerlarger   ɷ  m  m  ø˸  ˸/ 9  !T       Ț  {^m  '':_/ ø   ƾu   #      {-P ue ee e%%  C  e  t t    Ӵ e_ _ iC^iKd\/%%e u%% B    y  )  Ӵ yB%%y u    u q qq q%% B     q   !     Ӵ  qB%%q u        u    _mf)S3v +  _kf`)zxo&s /  NH _ _ t*XՏJӴ _ _ ؤDk  nBm <͛}-d uJJ '   ' : ֔ g ' g        CCC  C&  ֔& : ֔ CC    &&         UU $$ >  ŀ_ӴӀ ހ  {-P$ƢӀ uހŀ_++ "-҉ ۈwӴ ++ uۈw  _Տ܏  ܏ _      َ>e î Ӵ َՏ uoccupiedvacant     >  Ӵ Ģ Ƣ u   " ƞО  לî Ӵ  {-P ƞ uƞל  ààޠޠ *  ֔* : ֔    *    f ǣ ɣ  Hɣ ǣ"ݣ ǣ"գ Fգǣ+ǣ+ F t    FFDebugSetFE"F#ǣ+ǣ"ǣ"ǣ ݣ t    G܅G   էէ  է <<< <  8܅       w ܅܅էӴ2Ůʮ  8ʮ Ů!֮ 98  ֮2 8 /8X) |Ӵ 22Ů!Ů |ޮ  ڮ ޮ ڮ ۮۮڮ   8  ;8& 8Copiedit(хʒ!ϳ ۲t  & ۲t 5  ˸ Z܅Z   ;  Ț  {^" :Cloned'[oN{ cڈ  jڈվ   j   ;     |>G) :'[oN{ cڈ  rڈ  r ' ;     zq1 :'[oN{ cڈ  wڈ  ڈ' w   ;  Ù    BA!' :'[oN{ cڈ  jڈ  j   =  R  'ˑ%x  =  8 <   q  #  O.;F܅#+o.\qXb?* 5   ]  R  'ˑ%x  ] 9 D     D  9  S S 9 66   $  $ F --  v    - $ $  v#+o.\ 9        {-P     9 S   S 966   9R*y    ԃփ   փ ԃ$   ԃ$ F  /8X ԃ-ԃ- Ԃp   ۂ   ԃ- ԃ$ ԃ$ ԃ ۂ entries_iter Ԃ Ƀ ȃ ȃ   Y~e*  9 dž dž ۆ܆    Y  "4 }  {-P   ʇʇԇ  9ԇ S   ʇS 966   9R*y        $ Ƌ  $ F  /8X --ԋ ԋp  ܊    - $ $ Ƌ            9  Z   }4a   ލ ލލ          [ >Ew7    čsҍe     և֍ և ʋ֍ А!\)ۢ}ϼ(      А!ې ېА"А" А"А" А" А" lȐ  А"А" А"cÐFА"А" ͉ Ȑl c utyА"А! А!  А" Ȑ  А"          ّ:) ?79N'ّ  9 ّՑ" ֑`  ّ ّ ّ` Q  y     |>G Ϙ y  9  {-P  l    ח    Ζ  Ϙ l c uty   elt    9   x@ ͘Ø Øupperx   $  Ϙ$ FϘ-- šv  ɚ К - $ $ Ϙ ɚКšvݝO  w  Ù    BA!Ν çĝĝw ͠͠ננۚ͠͠͠͠ ͠͠l   ͠͠ݠ ͠    ʡàݠݠ͠͠   ç Ϟ͠͠͠ݠ͠  Ǡ ݠ ͠ʢʢԢ Ԣ   x@  ʢʢxѥӥ  ӥ ѥ$  çѥ$ Fçѥ-ѥ- v    ѥ- ѥ$ ѥ$ ѥç vէ'':_ççէߧ ߧD  l     zq ȵէ էl 9ЩD  ȵة  ة ЩD  9 ʪS תתʪS   $  ȵ$ Fȵ-- ĭv  ˭ ҭ - $ $ ȵ ˭ҭĭv'':_ç կ6  ^  Ț  {^Ư ž ^߲   ߲$  ž߲$ Fž߲-߲- v ɲ   ߲- ߲$ ߲$ ߲ž v 9ݴD  ž   ݴD  9 ׵S ׵S    _k  nBEntry _m <͛}-d Entry    ((  ( ( @B   _ _ t*XՏJ  ( (   OccupiedEntry  Gvalue        G ]]    ]GG      VacantEntry  .       .77    7..      _  _,JJ  _   _  'J   _  _   )'    J J kf`)zxo&s 8 8   D D    B Bmf)S3v ߃8 ߃8   ̇Bއ އ̇B   Ɍ؋q ؋q   I Ď   #  O.;Fؐ ؐߒ  Ù    BA!x0      zq9 Ɣ     |>G•2 Ɣ  Ț  {^+   Y  "4 } װ    ͸__self_0                          װ װ                  ͸͸       __self_tag  __arg1_tag  __arg1_0   д д   EF EFΟ3 Ο3Ο3 Ο3 Ο3Ο3Ο3 Ο3Ο3 Ο3 Ο3Ο3            ܏ ܏܏܏܏܏܏ ܏܏܏܏܏ђ ђђђђђђ ђђђђђ˿ ˿˿˿˿˿˿ ˿˿˿˿˿               !I This crate is a Rust port of Google's high-performance [SwissTable] hashLL map, adapted to make it a drop-in replacement for Rust's standard `HashMap`MO and `HashSet` types.G The original C++ version of [SwissTable] can be found [here], and thisJ< [CppCon talk] gives an overview of how the algorithm works.?: [SwissTable]: https://abseil.io/blog/20180927-swisstables=` [here]: https://github.com/abseil/abseil-cpp/blob/master/absl/container/internal/raw_hash_set.hc; [CppCon talk]: https://www.youtube.com/watch?v=ncHmEUmJZf4>         6CJ              it2      __items          i_met   i_it       e_met   e_it                           m      rest           __apply                                                                                                                                        >  M Experimental and unsafe `RawTable` API. This module is only available if the P `raw` feature is enabled.   !  -0! %1'Ek(Y8Ȃ :< >@ Į$2Į$2   mod.rs   3OPQRWXYZ[\]^cdikhandle_alloc_error z  .  ʋO  V   n  FusedIterator ;     mem       hint   !  -0! %1Į 2Į 2  L  L# E M  N  1..;&OOV V gn       ! -!' %Į2Į2*' ' 22 W    %- i! j"#$-  %%%&'&' > 7 7% % &   > 7 7% % '    )* = 7 7( ( )   = 7 7( ( *   ,++ ,S7 7!..%  *         EF 35ɫ  36, 377    ,, 9:;<=>?@ 88 3       >   7 78 8    &    88   88 ,883    88$88# 88BCD AA AA! AA D kFG 3EE F3EEIJ HH#7 7HH J %                                            ?  SS߄UV- TT5  TTڲ   )  ͑)% )  %% kXMM_`% % ^^% % ^^& b&+&  7 7a&a&)& +3+ ,474 )4 9fh99 egge999;H; ƽee;0;BAB ƽjjB͙0BBBE5 A reference to a hash table bucket containing a `T`.C8CM This is usually just a pointer to the element itself. However if the elementCPI is a ZST, then we instead track the index of the element in the table soDL that `erase` works properly.E EllEŏnCmEEGG kkH!ooHHHHqqHrHHII7 7pIp rIIttIuvwxyz{|~IIIAJ ssJJL9L  7 7sMsMMNN7 7sNsNQ.Q 7 7sQs QQST7 7sTsTTT7 7sTsTU"U7 7sUsU UV(V7 7 }(s(}}Vs |}(VVVV,V7 7 (s(Vs ~(VVVW;WW WW WW>WWW77 7 7sXs XXY5% A raw hash table with an unsafe API.X(Y!YY%Y YbWYYYYYY ZZ [[  ![G$$[[\\  ]] ^^  _ _ __ ____b> Creates a new empty hash table without allocating any memory._A`E In effect this returns a table with exactly 1 bucket. However we can`HF leave the data pointer dangling since that bucket is never written to`II due to our load factor forcing us to always have at least 1 free bucket.aLb dJD Attempts to allocate a new hash table with at least enough capacitycGA for inserting the given number of elements without reallocating.dDdd dd dd>ddd 0eg-G Allocates a new hash table with at least enough capacity for insertingeJ3 the given number of elements without reallocating.f6g  0gg,!ggg hggggkH Creates a new empty hash table without allocating any memory, using thehK given allocator.hiiHiÎjLkkmm m0nn rr r0rs wWV Attempts to allocate a new hash table using the given allocator, with at least enoughuYJ capacity for inserting the given number of elements without reallocating.vMww ww ww>www 0wwy:X Allocates a new hash table using the given allocator, with at least enough capacity forx[= inserting the given number of elements without reallocating.y@y0zz}1 Returns a reference to the underlying allocator.|4} 7 7 7} }~!~  7 7~~+8 Returns pointer to one past last element of data table.;7 7Ɠ>/ Returns the index of a bucket from a `Bucket`.Ă2 77 7 7,DŽ6. Returns a pointer to an element in the table.1Մ7 7܄݄߇86 Erases an element from the table without dropping it.9  ؇  0.8.1 use erase or remove insteadD Θ77 7 7/8 Erases an element from the table, dropping it in place.;7 7ÊɊLB Finds and erases an element from the table, dropping it in place.E& Returns true if an element was found.) > 7 7ۍ7 77˟ ƍ̍׍51 Removes an element from the table, returning it.47 7őˑR; Finds and removes an element from the table, returning it.> 7 7îǓ7 7̓7ٓ ÓB Marks all table buckets as empty without dropping their contents.E 7 7͖ҖH Removes all elements from the table without freeing the backing memory.K7 7 "  7 7H? Shrinks the table to fit `max(self.len(), min_size)` elements.B 7 7Ɯ7 7 7 ˜ќHHH Ensures that at least `additional` items can be inserted into the tableK without reallocation.7 7Ũ7 7 7ʨШ HF Tries to ensure that at least `additional` items can be inserted intoI the table without reallocation.# 7 7٭7 7ޭ 7߯  Hѭ 7 7İ7 7 7ұɰװ H ² 7 77 7 70¶H۶ VB Inserts a new element into the table, and returns its raw bucket.ĹEF This does not check if the given element already exists in the table.I7 7˻7 7л 7ڻфuHûQV Attempts to insert a new element without growing the table and return its raw bucket.YX Returns an `Err` containing the given element if inserting it would require growing the[ table. I >7 7 uYM Inserts a new element into the table, and returns a mutable reference to it.PI 7 7 77 7 7 uHIA Inserts a new element into the table, without growing the table.DC There must be enough space in the table to insert the new element.FI  > <7 7 u}G Temporary removes a bucket, applying the given function to the removedJG element and optionally put back the returned value in the same bucket.J7 Returns `true` if the bucket still contains an element:> This does not check if the given bucket is actually occupied.A7 7/î  ,R& Searches for an element in the table.)7 77 77F- Gets a reference to an element in the table.07 7 {-P 77 77 R5 Gets a mutable reference to an element in the table.87 7 {-P 77 77 H Attempts to get mutable references to `N` entries in the table at once.K? Returns an array of length `N` with the results of each query.B\ At most one mutable reference will be returned to any entry. `None` will be returned if any_P of the hashes are duplicates. `None` will be returned if the hash is not found.S[ The `eq` argument should be a closure such that `eq(i, k)` returns true if `k` is equal to^ the `i`th key to be looked up." 7 7 {-P 77 77 7 7 {-P 77 77  7 77 77F Returns the number of elements the map can hold without reallocating.I> This number is a lower bound; the table might be able to holdA? more, but is guaranteed to be able to hold at least this many.B7 7 - Returns the number of elements in the table.07 72 Returns `true` if the table contains no elements.57 7, Returns the number of buckets in the table./7 7Ø'A Returns an iterator over every element in the table. It is up toDA the caller to ensure that the `RawTable` outlives the `RawIter`.DA Because we cannot make the `next` method unsafe on the `RawIter`D2 struct, we have to make the `iter` method unsafe.57 7΂BI Returns an iterator over occupied buckets that could match a given hash.LF `RawTable` only stores 7 bits of the hash value, so this iterator mayII return items that have a hash value different than the one provided. YouL> should always validate the returned values before using them.AB It is up to the caller to ensure that the `RawTable` outlives theEF `RawIterHash`. Because we cannot make the `next` method unsafe on theIE `RawIterHash` struct, we have to make the `iter_hash` method unsafe.Hǂ >‚܂ 7 7@ @ hP7 ބ-F Returns an iterator which removes all elements from the table withoutÃI freeing the memory.7 7> ) >  ck? 7 PI͆> Iteration starts at the provided iterator's current location.AE It is up to the caller to ensure that the iterator is valid for thisH: `RawTable` and covers all items that remain in the table.=7 7> ) >  ck? 7I@ Returns an iterator which consumes all elements from the table.CAHٍ= ʒDؒٗ<! <!Ƙɘ̘ ؘƘƘɘɘ!ə!ҙ ٙ+!  ɽ 0՝  ɽ 0Ĩݨ ͮ>׮ 7 7. 7 7ƿSɿ  77 7 7գգ7Կ տۿ, 7 75 7 7 D  7 7 * 7 7*  7 7K% > 7 7 Q 7 7ʬE 7 7ɖ ˶5  7 7? 7 7ܙ1 7 7). 7 7 7 7! 7 7$ 7 7 7 7ɽ 0   77 7 7777  H   77 7 77770Hӆ  77 7 7777͔ҔH  Ɋ<  7 7ɽ   7 7ɲ β( 7 7 =!ýƽ ҽýý7 7  ' 77 7 7    4 77 7 7  E! 3! 3 77 7 7   S; Variant of `clone_from` to use when a hasher is available.>3 >77 7 77 7 7  H B!  54    ! 7 7 =!   '  !Ȃ Ղ}ՂՂՃՃ      ߇C )9S  7 79ޜ9 9Ĝť'ѥѥѥ'!7 7 Ǩ$̨̨̨ '©7 7ǩ ̩˪- 7 7  )H Iterator which returns a raw pointer to every full bucket in the table.֮KJ For maximum flexibility this iterator is not bound by a lifetime, but youM* must observe several rules when using it:-V - You must not free the hash table while iterating (including via growing/shrinking).YF - It is fine to erase a bucket that has been yielded by the iterator.IK - Erasing a bucket that has not yet been yielded by the iterator may stillƱNS result in the iterator yielding that bucket (unless `reflect_remove` is called).VG - It is unspecified whether an element inserted after the iterator wasJP created will be yielded by that iterator (unless `reflect_insert` is called).SG - The order in which the iterator yields bucket is unspecified and mayJ change in the future.ִ?79N'   ŵʵʵʵ/J Refresh the iterator so that it reflects a removal from the given bucket.޵MB For the iterator to remain valid, this method must be called onceE7 for each removed bucket before `next` is called again.:\ This method should be called _before_ the removal is made. It is not necessary to call thisɷ_K method if you are removing an item that this iterator yielded in the past.N8 >77 7 7 /M Refresh the iterator so that it reflects an insertion into the given bucket.PںE/ for each insert before `next` is called again.2L This method does not guarantee that an insertion of a bucket with a greaterOC index than the last one yielded will be reflected in the iterator.F? This method should be called _after_ the given insert is made.B۽۽8޽ ߽>ٽ77 7 7 տA8ο ǿ>ɿؿ 77 7 7   "  7 7 7 7  '7 7 - 7 7  ($86 Iterator which consumes a table and returns elements.9 ! ! )    /!  7 7 ?! ?! 8<    ! 7 7 <!  7 7î - 7 7  E! A! 9D Iterator which consumes elements without freeing the table storage.G(!% (ـ'(ـ'> ) >  ck? (ck?   #  #   ـ'ـ <ɏ ( 07! > ) >  ck? 7 7 7  7?7!‚ł т‚‚?7! 97! 7 7 7݈=7!  7 7  7- 7 7  7ۋF7! B7! <> Iterator over occupied buckets that could match a given hash.AM `RawTable` only stores 7 bits of the hash value, so this iterator may returnPI items that have a hash value different than the one provided. You shouldL7 always validate the returned values before using them.Ў: (! (Ɛ@ @ hP(hPΏΏ A) A 3 A ! "U(  1 (! (ƐA) A 3 A ! "U("UƐƐ  (  ӑӑ     ג7(! @ @ hP(ܒܒ4ȓȓ@˓ۓ ̓ԓ>֓Ɠ  (  ()6(! A) A 3 A ! "U(6@ >  (Ԅ ()ϖD(! Ԛ ٚ'7 7  (՜C(!ޜ ڜڜޜޜ (7 7 {-P9 (ĝ  ! %1'kĮ$2Į$2>,<6 :C(LbaEpGpG BuildHasher III 8 ;   IndexQ  $$,,6 6 CCLL[bw  )      $ Dummy default hasher for `HashMap`.'C   x5O? A hash map implemented with quadratic probing and SIMD lookup.BE The default hashing algorithm is currently [`AHash`], though this isHI subject to change at any point in the future. This hash function is veryLL fast for all types of keys, but this algorithm will typically *not* protectO! against attacks such as HashDoS.$I The hashing algorithm can be replaced on a per-`HashMap` basis using theLM [`default`], [`with_hasher`], and [`with_capacity_and_hasher`] methods. ManyPN alternative algorithms are available on crates.io, such as the [`fnv`] crate.QP It is required that the keys implement the [`Eq`] and [`Hash`] traits, althoughSK this can frequently be achieved by using `#[derive(PartialEq, Eq, Hash)]`. ND If you implement these yourself, it is important that the following G property holds:   ```text ! k1 == k2 -> hash(k1) == hash(k2) $ ```  C In other words, if two keys are equal, their hashes must be equal. F J It is a logic error for a key to be modified in such a way that the key's MM hash, as determined by the [`Hash`] trait, or its equality, as determined by PH the [`Eq`] trait, changes while it is in the map. This is normally only KK possible through [`Cell`], [`RefCell`], global state, I/O, or unsafe code. NL It is also a logic error for the [`Hash`] implementation of a key to panic.OK This is generally only possible if the trait is implemented manually. If aNM panic does occur then the contents of the `HashMap` may become corrupted andP* some items may be dropped from the table.- # Examples use hashbrown::HashMap;A // Type inference lets us omit an explicit type signature (whichD8 // would be `HashMap` in this example).;' let mut book_reviews = HashMap::new();* // Review some books. book_reviews.insert(2 "Adventures of Huckleberry Finn".to_string(),5% "My favorite book.".to_string(),( );' "Grimms' Fairy Tales".to_string(),* "Masterpiece.".to_string(),#' "Pride and Prejudice".to_string(),*# "Very enjoyable.".to_string(),&5 "The Adventures of Sherlock Holmes".to_string(),8& "Eye lyked it alot.".to_string(),) // Check for a specific one. C // When collections store owned values (String), they can still beF$ // queried using references (&str).'3 if !book_reviews.contains_key("Les Misérables") {6E println!("We've got {} reviews, but Les Misérables ain't one.",H" book_reviews.len());% }F // oops, this review has a lot of spelling mistakes, let's delete it.I: book_reviews.remove("The Adventures of Sherlock Holmes");=1 // Look up the values associated with some keys.4J let to_find = ["Pride and Prejudice", "Alice's Adventure in Wonderland"];M for &book in &to_find {# match book_reviews.get(book) {&: Some(review) => println!("{}: {}", book, review),=4 None => println!("{} is unreviewed.", book)7 } E // Look up the value for a key (will panic if the key is not found).HF println!("Review for Jane: {}", book_reviews["Pride and Prejudice"]);I // Iterate over everything.& for (book, review) in &book_reviews {)* println!("{}: \"{}\"", book, review);-H `HashMap` also implements an [`Entry API`](#method.entry), which allowsKM for more complex methods of getting, setting, updating and removing keys andP their values:     A // type inference lets us omit an explicit type signature (which D2 // would be `HashMap<&str, u8>` in this example).!5' let mut player_stats = HashMap::new();!*! fn random_stat_buff() -> u8 {!!H // could actually return some random value here - let's just return"K // some fixed value for now"# 42# ##1 // insert a key only if it doesn't already exist#4- player_stats.entry("health").or_insert(100);#0$F // insert a key using a function that provides a new value only if it$I // doesn't already exist$@ player_stats.entry("defence").or_insert_with(random_stat_buff);$C%A // update a key, guarding against the key possibly not being set%D8 let stat = player_stats.entry("attack").or_insert(100);&; *stat += random_stat_buff();& &&Z The easiest way to use `HashMap` with a custom key type is to derive [`Eq`] and [`Hash`].&]# We must also derive [`PartialEq`].'&'8 [`Eq`]: https://doc.rust-lang.org/std/cmp/trait.Eq.html';= [`Hash`]: https://doc.rust-lang.org/std/hash/trait.Hash.html(@F [`PartialEq`]: https://doc.rust-lang.org/std/cmp/trait.PartialEq.html(ID [`RefCell`]: https://doc.rust-lang.org/std/cell/struct.RefCell.html)G> [`Cell`]: https://doc.rust-lang.org/std/cell/struct.Cell.html*A [`default`]: #method.default* % [`with_hasher`]: #method.with_hasher*(? [`with_capacity_and_hasher`]: #method.with_capacity_and_hasher+B& [`fnv`]: https://crates.io/crates/fnv+)* [`AHash`]: https://crates.io/crates/ahash+-,,,,& #[derive(Hash, Eq, PartialEq, Debug)],) struct Viking {- name: String,- country: String,--- impl Viking {- /// Creates a new Viking.-!2 fn new(name: &str, country: &str) -> Viking {.5H Viking { name: name.to_string(), country: country.to_string() }.K/ //6 // Use a HashMap to store the vikings' health points./9" let mut vikings = HashMap::new();/%/4 vikings.insert(Viking::new("Einar", "Norway"), 25);/74 vikings.insert(Viking::new("Olaf", "Denmark"), 24);076 vikings.insert(Viking::new("Harald", "Iceland"), 12);091B // Use derived implementation to print the status of the vikings.1E# for (viking, health) in &vikings {1&0 println!("{:?} has {} hp", viking, health);23222J A `HashMap` with fixed list of elements can be initialized from an array:2M3333_ let timber_resources: HashMap<&str, i32> = [("Norway", 100), ("Denmark", 50), ("Iceland", 10)]3b .iter().cloned().collect();4# // use the values stored in map4#55DDD!5555%5 5/$*x< 5555555555 5%6 6VDDD! 66666666 666666666777 77 78'8 77 7 78 8 8;; 7 7 7DEDD<; ;<< < I <I<   D< ;;;;<<<<<  ?n?7 7  7EDD??? ?  ?  ???????? AbA 7 7  7EDBAB B  BAAAAB CBBEBC BBC BCC B C 77 7 7 DEDCCCD DID   DC  CCCCCCCDDHmGGFGG GGG GGG G H77 7 7DDHHHIHIH  DH  HHHHHHI\DDD\\\Ɍ \\\\\\e1I Creates an empty `HashMap` which will use the given hash builder to hash\L keys.] ]G The hash map is initially created with a capacity of 0, so it will not]J* allocate until it is first inserted into.^-^< Warning: `hash_builder` is normally randomly generated, and^?> is designed to allow HashMaps to be resistant to attacks that_A< cause many collisions and very poor performance. Setting it_?= manually using this function can expose a DoS attack vector.`@`I The `hash_builder` passed should implement the [`BuildHasher`] trait for`L= the HashMap to be useful, see its documentation for details.a@aabbb- use hashbrown::hash_map::DefaultHashBuilder;b0b' let s = DefaultHashBuilder::default();c*' let mut map = HashMap::with_hasher(s);c* assert_eq!(map.len(), 0);c assert_eq!(map.capacity(), 0);d"d map.insert(1, 2);dddK [`BuildHasher`]: https://doc.rust-lang.org/std/hash/trait.BuildHasher.htmldNe Ɍ  De pIM Creates an empty `HashMap` with the specified capacity, using `hash_builder`fP to hash the keys.ggG The hash map will be able to hold at least `capacity` elements withoutgJB reallocating. If `capacity` is 0, the hash map will not allocate.hEii?iAj?j@kkLk@lllllm0mm*8 let mut map = HashMap::with_capacity_and_hasher(10, s);m;n assert!(map.capacity() >= 10);n"oooooNpɌ  0pDp q7DDD!rrrrr rrrrrrrrrsőr4s 7 7 7s sy8sL5 keys. It will be allocated with the given allocator.t8t2 The created map has the default initial capacity.t5uu?uAv?v@wwwwwx0xx*x*yyy Dz zɂV{PA to hash the keys. It will be allocated with the given allocator.{D||J}E}}?~A~?@ƀ0*;Ђ0D 2 Returns a reference to the map's [`BuildHasher`].5ڄNЅ؅0, let hasher = DefaultHashBuilder::default();/; let map: HashMap = HashMap::with_hasher(hasher);>0 let hasher: &DefaultHashBuilder = map.hasher();37 7 7 IH This number is a lower bound; the `HashMap` might be able to holdƉKB݊: let map: HashMap = HashMap::with_capacity(100);= assert!(map.capacity() >= 100);#7 7 $2 An iterator visiting all keys in arbitrary order.5& The iterator element type is `&'a K`.)Îˎ׎ let mut map = HashMap::new();! map.insert("a", 1); map.insert("b", 2); map.insert("c", 3);ݏ assert_eq!(map.len(), 3);% let mut vec: Vec<&str> = Vec::new();(Ȑ for key in map.keys() {А println!("{}", key); vec.push(*key);@ // The `Keys` iterator produces keys in arbitrary order, so theC< // keys must be sorted to test them against a sorted array.? vec.sort_unstable();˒" assert_eq!(vec, ["a", "b", "c"]);%7 7Xb?*7 (4 An iterator visiting all values in arbitrary order.ϔ7& The iterator element type is `&'a V`.)ԕܕ!Җω$ let mut vec: Vec = Vec::new();'ؗ for val in map.values() { println!("{}", val); vec.push(*val);ɘD // The `Values` iterator produces values in arbitrary order, so theјG> // values must be sorted to test them against a sorted array.A assert_eq!(vec, [1, 2, 3]);Κ7 7Y@/ֱ|7 3< An iterator visiting all values mutably in arbitrary order.?* The iterator element type is `&'a mut V`.-ݜ!ڝω for val in map.values_mut() {! *val = *val + 10;'ّɠӠ۠GA assert_eq!(vec, [11, 12, 13]);"ۢ 7 7]-Lиݞ7 $= An iterator visiting all key-value pairs in arbitrary order.@/ The iterator element type is `(&'a K, &'a V)`.2ƥ!ω̦, let mut vec: Vec<(&str, i32)> = Vec::new();/ for (key, val) in map.iter() {Ƨ"+ println!("key: {} val: {}", key, val);. vec.push((*key, *val));ĨΨA // The `Iter` iterator produces items in arbitrary order, so the֨D= // items must be sorted to test them against a sorted array.@1 assert_eq!(vec, [("a", 1), ("b", 2), ("c", 3)]);4ª7 7R*y7Û /= An iterator visiting all key-value pairs in arbitrary order,@' with mutable references to the values.ܭ*3 The iterator element type is `(&'a K, &'a mut V)`.6Ʈή!ï߯ω // Update all values! for (_, val) in map.iter_mut() {$ *val *= 2;/ for (key, val) in &map {.D@1 assert_eq!(vec, [("a", 2), ("b", 4), ("c", 6)]);4ڴȵ7 7Simׇ"m7ѵ ֵ+ Returns the number of elements in the map.Ѹ.ӹ let mut a = HashMap::new();۹ assert_eq!(a.len(), 0); a.insert(1, "a"); assert_eq!(a.len(), 1);ٺ7 7֨ 0 Returns `true` if the map contains no elements.׻3޼ assert!(a.is_empty()); assert!(!a.is_empty());ý7 7-H Clears the map, returning all key-value pairs as an iterator. Keeps theK allocated memory for reuse.ؿD If the returned iterator is dropped before being fully consumed, itGC drops the remaining key-value pairs. The returned iterator keeps aF= mutable borrow on the vector to optimize its implementation.@ a.insert(2, "b");* let capacity_before_drain = a.capacity();-" for (k, v) in a.drain().take(1) {% assert!(k == 1 || k == 2);"# assert!(v == "a" || v == "b");&< // As we can see, the map is empty and contains no element.?' assert!(a.is_empty() && a.len() == 0);*) // But map capacity is equal to old one.,1 assert_eq!(a.capacity(), capacity_before_drain);43 { // Iterator is dropped without being consumed.6 let d = a.drain();> // But the map is empty even if we do not use Drain iterator.A7 7Y~e* 7 U@ Retains only the elements specified by the predicate. Keeps theCU In other words, remove all pairs `(k, v)` such that `f(&k, &mut v)` returns `false`.X> The elements are visited in unsorted (and unspecified) order.AE let mut map: HashMap = (0..8).map(|x|(x, x*10)).collect();H assert_eq!(map.len(), 8);- let capacity_before_retain = map.capacity();0 map.retain(|&k, _| k % 2 == 0);#B // We can see, that the number of elements inside map is changed.E assert_eq!(map.len(), 4);,4 assert_eq!(map.capacity(), capacity_before_retain);7L let mut vec: Vec<(i32, i32)> = map.iter().map(|(&k, &v)| (k, v)).collect();O6 assert_eq!(vec, [(0, 0), (2, 20), (4, 40), (6, 60)]);97 7 / 77  7 777   v: Drains elements which are true under the given predicate,=0 and returns an iterator over the removed items.3U In other words, move all pairs `(k, v)` such that `f(&k, &mut v)` returns `true` outX into another iterator.Z Note that `drain_filter` lets you mutate every value in the filter closure, regardless of]) whether you choose to keep or remove it.,P When the returned DrainedFilter is dropped, any remaining elements that satisfyS* the predicate are dropped from the table.-J It is unspecified how many more elements will be subjected to the closureMO if a panic occurs in the closure, or a panic occurs while dropping an element,R) or if the `DrainFilter` value is leaked.,& Keeps the allocated memory for reuse.)C let mut map: HashMap = (0..8).map(|x| (x, x)).collect();F3 let capacity_before_drain_filter = map.capacity();6Q let drained: HashMap = map.drain_filter(|k, _v| k % 2 == 0).collect();T= let mut evens = drained.keys().cloned().collect::>();@8 let mut odds = map.keys().cloned().collect::>();; evens.sort(); odds.sort();% assert_eq!(evens, vec![0, 2, 4, 6]);($ assert_eq!(odds, vec![1, 3, 5, 7]);'% // Map capacity is equal to old one.(: assert_eq!(map.capacity(), capacity_before_drain_filter);=Fڸ62 let d = map.drain_filter(|k, _v| k % 2 != 0);5. // But the map lens have been reduced by half1/ // even if we do not use DrainFilter iterator.2 7 7 Zh,uI`p7 /77  7 777   I Clears the map, removing all key-value pairs. Keeps the allocated memoryL for reuse.* let capacity_before_clear = a.capacity();- a.clear(); // Map is empty.,1 assert_eq!(a.capacity(), capacity_before_clear);47 7 +G Creates a consuming iterator visiting all the keys in arbitrary order.J+ The map cannot be used after calling this.." The iterator element type is `K`.%!ω4 let mut vec: Vec<&str> = map.into_keys().collect();7D // The `IntoKeys` iterator produces keys in arbitrary order, so theG?%   /I Creates a consuming iterator visiting all the values in arbitrary order.L." The iterator element type is `V`.%!ω5 let mut vec: Vec = map.into_values().collect();8D // The `IntoValues` iterator produces values in arbitrary order, soGB // the values must be sorted to test them against a sorted array.E   $DDD!   ,I Reserves capacity for at least `additional` more elements to be insertedLA in the `HashMap`. The collection may reserve more space to avoidD frequent reallocations. # Panics 7 Panics if the new allocation size overflows [`usize`].:> [`usize`]: https://doc.rust-lang.org/std/primitive.usize.htmlA2 let mut map: HashMap<&str, i32> = HashMap::new();5, // Map is empty and doesn't allocate memory/" map.reserve(10);- // And now map can hold at least 10 elements0"7 7 ͌OQ Tries to reserve capacity for at least `additional` more elements to be insertedTL in the given `HashMap`. The collection may reserve more space to avoidOւ # Errorsނ M If the capacity overflows, or the allocator reports a failure, then an errorP is returned.̃4 let mut map: HashMap<&str, isize> = HashMap::new();7/"υK map.try_reserve(10).expect("why is the test harness OOMing on 10 bytes?");ׅN0"P is returned: # fn test() { use hashbrown::TryReserveError;ƈ#1 let mut map: HashMap = HashMap::new();4$ match map.try_reserve(usize::MAX) {' Err(error) => match error {ۉ#0 TryReserveError::CapacityOverflow => {}36 _ => panic!("TryReserveError::AllocError ?"),9 },  _ => panic!(), # } # fn main() { # #[cfg(not(miri))]ϋ # test()Ԍ 7 7  B Shrinks the capacity of the map as much as possible. It will dropE> down as much as possible while maintaining the internal rulesێAF and possibly leaving some space in accordance with the resize policy.I> let mut map: HashMap = HashMap::with_capacity(100);ƐA map.insert(3, 4);# map.shrink_to_fit(); assert!(map.capacity() >= 2);! 7 7 Ϛ0A Shrinks the capacity of the map with a lower limit. It will dropDK down no lower than the supplied limit while maintaining the internal rulesNIܕG This function does nothing if the current capacity is smaller than theJ supplied minimum capacity.֖ޖA# map.shrink_to(10);Ϙ" map.shrink_to(0);!љ!֚ 7 7   Р8O Gets the given key's corresponding entry in the map for in-place manipulation.R̜Ԝ" let mut letters = HashMap::new();%͝0 for ch in "a short treatise on fungi".chars() {՝32 let counter = letters.entry(ch).or_insert(0);5 *counter += 1;Ǟ assert_eq!(letters[&'s'], 2);! assert_eq!(letters[&'t'], 3);! assert_eq!(letters[&'u'], 1);!% assert_eq!(letters.get(&'y'), None);(נ7 7_ _ ؤD7ݠ f۩\ Gets the given key's corresponding entry by reference in the map for in-place manipulation._ɥѥ8 let mut words: HashMap = HashMap::new();;D let source = ["poneyland", "horseyland", "poneyland", "poneyland"];G+ for (i, &s) in source.iter().enumerate() {.3 let counter = words.entry_ref(s).or_insert(0);ߧ6Ɉ# assert_eq!(words["poneyland"], 3);Ǩ&$ assert_eq!(words["horseyland"], 1);' (J ( J _ _ k=(J E Ѫ I    fg; Returns a reference to the value corresponding to the key.>ȯ< The key may be any borrowed form of the map's key type, butЯ?@ [`Hash`] and [`Eq`] on the borrowed form *must* match those forC the key type.ܰ;@βֲ! map.insert(1, "a");% assert_eq!(map.get(&1), Some(&"a"));( assert_eq!(map.get(&2), None);ų"77 7 7  {-P 7Eʹ ؓ  лw> Returns the key-value pair corresponding to the supplied key.AE The supplied key may be any borrowed form of the map's key type, butHķCӕ;@ʹҹ޹!5 assert_eq!(map.get_key_value(&1), Some((&1, &"a")));Ⱥ8) assert_eq!(map.get_key_value(&2), None);,׻ 77 7 7  {-P 7 7E ؓļ  n 77 7 7  {-P 7E ؓ ža Returns the key-value pair corresponding to the supplied key, with a mutable reference to value.dHCӕ;@!1 let (k, v) = map.get_key_value_mut(&1).unwrap();4 assert_eq!(k, &1); assert_eq!(v, &mut "a"); *v = "b"; = assert_eq!(map.get_key_value_mut(&1), Some((&1, &mut "b")));@- assert_eq!(map.get_key_value_mut(&2), None);077 7 7  {-P 7 7E ؓ  jB Returns `true` if the map contains a value for the specified key.E?Cӕ;@!( assert_eq!(map.contains_key(&1), true);+) assert_eq!(map.contains_key(&2), false);, 77 7 7 E ؓ  sC Returns a mutable reference to the value corresponding to the key.F?Cӕ;@!# if let Some(x) = map.get_mut(&1) {& *x = "b"; assert_eq!(map[&1], "b");# assert_eq!(map.get_mut(&2), None);&77 7 7  {-P 7E ؓ  z 77 7 7  {-P 7E ؓ E Attempts to get mutable references to `N` values in the map at once.HZ Returns an array of length `N` with the results of each query. For soundness, at most one]W mutable reference will be returned to any value. `None` will be returned if any of theZ keys are duplicates or missing.#$ let mut libraries = HashMap::new();'8 libraries.insert("Bodleian Library".to_string(), 1602);;1 libraries.insert("Athenæum".to_string(), 1807);4G libraries.insert("Herzogin-Anna-Amalia-Bibliothek".to_string(), 1691);J; libraries.insert("Library of Congress".to_string(), 1800);># let got = libraries.get_many_mut([& "Athenæum", "Library of Congress", ]); assert_eq!( got,  Some([ &mut 1807, &mut 1800, ]),  // Missing keys result in None"& "New York Public Library"," assert_eq!(got, None);! // Duplicate keys result in None$& 77 7 7  {-P 7E ؓ    Æ ] Attempts to get mutable references to `N` values in the map at once, without validating that` the values are unique.Z Returns an array of length `N` with the results of each query. `None` will be returned if] any of the keys are missing. F For a safe alternative see [`get_many_mut`](`HashMap::get_many_mut`).I # Safety Z Calling this method with overlapping keys is *[undefined behavior]* even if the resulting] references are not used.] [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html`'ٺ;4ܻJ>&ҽ Ҿ "&"77 7 7  {-P 7E ؓ    ԍ T Attempts to get mutable references to `N` values in the map at once, with immutableW& references to the corresponding keys.)]\ mutable reference will be returned to any value. `None` will be returned if any of the keys_ are duplicates or missing.'ٺ;4ܻJ>- let got = libraries.get_many_key_value_mut([0 "Bodleian Library",' "Herzogin-Anna-Amalia-Bibliothek",* 6 (&"Bodleian Library".to_string(), &mut 1602),9E (&"Herzogin-Anna-Amalia-Bibliothek".to_string(), &mut 1691),H "0 "Gewandhaus",$ׁ0*ۂ*ȃ77 7 7  {-P 7 7E ؓ   ߃߃Ȅ ˅ WU references to the corresponding keys, without validating that the values are unique.ƆX] Z For a safe alternative see [`get_many_key_value_mut`](`HashMap::get_many_key_value_mut`).] ]Ȋ`ȋЋ܋'ٺ;4ܻJ>Î0*Ǐӏ 9ɐH "ؑ0ǒӒ 77 7 7  {-P 7 7Eѓ ؓŔ̔  ֓   •ŕ77 7 7  {-P 7E֖ ؓ  ؕؕ ܢ 77 7 7  {-P 7EܘØ ̙ؓә  ØɘΚ  77 7 7  E ؓ  ɛ1' Inserts a key-value pair into the map.*@ If the map did not have this key present, [`None`] is returned.CH If the map did have this key present, the value is updated, and the oldKD value is returned. The key is not updated, though; this matters forGM types that can be `==` without being identical. See the [`std::collections`]՟P' [module-level documentation] for more.*٠M [`None`]: https://doc.rust-lang.org/std/option/enum.Option.html#variant.NonePK [`std::collections`]: https://doc.rust-lang.org/std/collections/index.htmlNk [module-level documentation]: https://doc.rust-lang.org/std/collections/index.html#insert-and-complex-keysnˣӣ!' assert_eq!(map.insert(37, "a"), None);*# assert_eq!(map.is_empty(), false);&Ӥ map.insert(37, "b");ۤ, assert_eq!(map.insert(37, "c"), Some("b"));/ assert_eq!(map[&37], "c");ϥ7 7  E6 Insert a key-value pair into the map without checking9& if the key already exists in the map.ߩ)8 Returns a reference to the key and value just inserted.;ժ; This operation is safe if a key does not exist in the map.ݪ>J However, if a key exists in the map already, the behavior is unspecified:MP this operation may panic, loop forever, or any following operation with the mapS4 may panic, loop forever or return arbitrary result.Ҭ7G That said, this operation (and following operations) are guaranteed toJ not violate memory safety.J This operation is faster than regular insert, because it does not performM lookup before insertion.? This operation is useful during initial population of the map.B? For example, when constructing a map from another map, we knowүB that keys are unique.Ұڰ let mut map1 = HashMap::new();"' assert_eq!(map1.insert(1, "a"), None);*' assert_eq!(map1.insert(2, "b"), None);*' assert_eq!(map1.insert(3, "c"), None);* assert_eq!(map1.len(), 3);² let mut map2 = HashMap::new();"' for (key, value) in map1.into_iter() {*. map2.insert_unique_unchecked(key, value);˳19 let (key, value) = map2.insert_unique_unchecked(4, "d");< assert_eq!(key, &4);Դ assert_eq!(value, &mut "d");  *value = "e"; assert_eq!(map2[&1], "a"); assert_eq!(map2[&2], "b");׵ assert_eq!(map2[&3], "c"); assert_eq!(map2[&4], "e"); assert_eq!(map2.len(), 4);7 7 7 7 ķʷ з~; Tries to insert a key-value pair into the map, and returns>/ a mutable reference to the value in the entry.ʺ2 A If the map already had this key present, nothing is updated, andDB an error containing the occupied entry and the value is returned.Eм Basic usage:ؼ( use hashbrown::hash_map::OccupiedError;+ѽٽ!4 assert_eq!(map.try_insert(37, "a").unwrap(), &"a");7 match map.try_insert(37, "b") {þ#- Err(OccupiedError { entry, value }) => {0& assert_eq!(entry.key(), &37);)' assert_eq!(entry.get(), &"a");ο* assert_eq!(value, "b");#  _ => panic!() 7 7   'w 7  t J u]??t.7 fumF Removes a key from the map, returning the value at the key if the keyIA was previously in the map. Keeps the allocated memory for reuse.D?Cӕ;@! // The map is empty0 assert!(map.is_empty() && map.capacity() == 0);3- let capacity_before_remove = map.capacity();0' assert_eq!(map.remove(&1), Some("a"));*" assert_eq!(map.remove(&1), None);%D // Now map holds none elements but capacity is equal to the old oneGE assert!(map.len() == 0 && map.capacity() == capacity_before_remove);H77 7 7 E ؓ  xF Removes a key from the map, returning the stored key and value if theIE key was previously in the map. Keeps the allocated memory for reuse.H?Cӕ;@!ߚ3כ02 assert_eq!(map.remove_entry(&1), Some((1, "a")));5ќ%C // Now map hold none elements but capacity is equal to the old oneFݝH 77 7 7 E ؓ 7DDD! E- Creates a raw entry builder for the HashMap.0B Raw entries provide the lowest level of control for searching andEF manipulating a map. They must be manually initialized with a hash andIC then manually searched. After this, insertions into a vacant entryF+ still require an owned key to be provided..6 Raw entries are useful for such exotic situations as:9 * Hash memoizationJ * Deferring the creation of an owned key until it is known to be requiredM= * Using a search key that doesn't work with the Borrow trait@9 * Using custom comparison logic without newtype wrappers<J Because raw entries provide much more low-level control, it's much easierMH to put the HashMap into an inconsistent state which, while memory-safe,KI will cause the map to produce seemingly random results. Higher-level andLD more foolproof APIs like `entry` should be preferred when possible.GH In particular, the hash used to initialized the raw entry must still beKL consistent with the hash of the key that is ultimately stored in the entry.OH This is because implementations of HashMap may need to recompute hashesK; when resizing, at which point only the keys are available.>C Raw entries give mutable access to the keys. This must not be usedFM to modify how the key would compare or hash, as the map will not re-evaluatePE where the key should go, meaning the keys may become "lost" if theirHI location does not reflect their state. For instance, if you change a keyLH so that the map now contains keys which compare equal, search may startKO acting erratically, with two keys randomly masking each other. ImplementationsRM are free to assume this doesn't happen (within the limits of memory-safety).P% use core::hash::{BuildHasher, Hash};(1 use hashbrown::hash_map::{HashMap, RawEntryMut};4!2 map.extend([("a", 100), ("b", 200), ("c", 300)]);5V fn compute_hash(hash_builder: &S, key: &K) -> u64 {Y use core::hash::Hasher;1 let mut state = hash_builder.build_hasher();4 key.hash(&mut state); state.finish()$ // Existing key (insert and update)'+ match map.raw_entry_mut().from_key(&"a") {.. RawEntryMut::Vacant(_) => unreachable!(),1) RawEntryMut::Occupied(mut view) => {,& assert_eq!(view.get(), &100);) let v = view.get_mut();# let new_v = (*v) * 10;" *v = new_v;- assert_eq!(view.insert(1111), 1000);0  assert_eq!(map[&"a"], 1111);  // Existing key (take)- let hash = compute_hash(map.hasher(), &"c");0@ match map.raw_entry_mut().from_key_hashed_nocheck(hash, &"c") {C1% RawEntryMut::Occupied(view) => {(5 assert_eq!(view.remove_entry(), ("c", 300));8 2 assert_eq!(map.raw_entry().from_key(&"c"), None);5 assert_eq!(map.len(), 2);' // Nonexistent key (insert and update)* let key = "d";- let hash = compute_hash(map.hasher(), &key);0; match map.raw_entry_mut().from_hash(hash, |q| *q == key) {>0 RawEntryMut::Occupied(_) => unreachable!(),3# RawEntryMut::Vacant(view) => {&1 let (k, value) = view.insert("d", 4000);4/ assert_eq!((*k, *value), ("d", 4000));2 *value = 40000;  assert_eq!(map[&"d"], 40000);!>1(7 assert_eq!(view.remove_entry(), ("d", 40000));: ! assert_eq!(map.get(&"d"), None);$ 7 7^iKd\/7 :7 Creates a raw immutable entry builder for the HashMap.:EI then manually searched. This is useful for@<N Unless you are in such a situation, higher-level and more foolproof APIs likeQ `get` should be preferred.U Immutable raw entries have very limited use; you might instead want `raw_entry_mut`.X́(!ǂ5κYڻ4Ą* for k in ["a", "b", "c", "d", "e", "f"] {-. let hash = compute_hash(map.hasher(), k);Ņ1" let v = map.get(&k).cloned();%* let kv = v.as_ref().map(|v| (&k, v));-׆/ println!("Key: {} and value: {:?}", k, v);߆22 assert_eq!(map.raw_entry().from_key(&k), kv);5B assert_eq!(map.raw_entry().from_hash(hash, |q| *q == k), kv);؇EG assert_eq!(map.raw_entry().from_key_hashed_nocheck(hash, &k), kv);J 7 7a_xtnS K7ɉ ʉ7M Returns a mutable reference to the [`RawTable`] used underneath [`HashMap`].PN This function is only available if the `raw` feature of the crate is enabled.Qы # Noteً F Calling the function safe, but using raw hash table API's may requireI unsafe functions or blocks.R `RawTable` API gives the lowest level of control under the map that can be usefulUI for extending the HashMap's API, but may lead to *[undefined behavior]*.čL! [`HashMap`]: struct.HashMap.html$' [`RawTable`]: raw/struct.RawTable.htmlƎ*`ڏ(֐ސ!/ map.extend([("a", 10), ("b", 20), ("c", 30)]);2ݑU // Let's imagine that we have a value and a hash of the key, but not the key itself.XT // However, if you want to remove the value from the map by hash and value, and you’WT // know exactly that the value is unique, then you can create a function like this:W fn remove_by_hash(" map: &mut HashMap,# hash: u64,ɔ is_match: F, ) -> Option<(K, V)> where  F: Fn(&(K, V)) -> bool, {Ǖ% let raw_table = map.raw_table();ѕ(+ match raw_table.find(hash, is_match) {.C Some(bucket) => Some(unsafe { raw_table.remove(bucket) }),F None => None, κYڻ4, let hash = compute_hash(map.hasher(), "a");ę/P assert_eq!(remove_by_hash(&mut map, hash, |(_, v)| *v == 10), Some(("a", 10)));S! assert_eq!(map.get(&"a"), None);К$X > 7 7 7  Ϝ2DDD! Ԝלڜݜ  ǝ ӝԜԜללڜڜݜݜ"77 7 7   +DDD! ßƟɟ̟  ßßƟƟɟɟ̟̟.DDD!ŠȠˠΠGG ŠŠȠȠˠˠΠΠ8777 7 7GGGEGEGEG EGEG EQ ! >S7  0DDD! _ Creates an empty `HashMap`, with the `Default` value for the hasher and allocator.b- use std::collections::hash_map::RandomState;Ф0I // You can specify all types of HashMap, including hasher and allocator.L2 // Created map is empty and don't allocate memoryޥ54 let map: HashMap = Default::default();7Ԧ"A let map: HashMap = HashMap::default();Dħ" =7DEDD! ةIݩ II %  D Returns a reference to the value corresponding to the supplied key.˪G 3 Panics if the key is not present in the `HashMap`.6¬> let map: HashMap<_, _> = [("a", "One"), ("b", "Two")].into();ʬA assert_eq!(map[&"a"], "One");! assert_eq!(map[&"b"], "Two");!77 7 7 7 7f@ An iterator over the entries of a `HashMap` in arbitrary order.C2H This `struct` is created by the [`iter`] method on [`HashMap`]. See itsK documentation for more.* [`iter`]: struct.HashMap.html#method.iter-͵$@ let map: HashMap<_, _> = [(1, "a"), (2, "b"), (3, "c")].into();C let mut iter = map.iter();; let mut vec = vec![iter.next(), iter.next(), iter.next()];>׷۷D@I assert_eq!(vec, [Some((&1, &"a")), Some((&2, &"b")), Some((&3, &"c"))]);Lǹ // It is fused iterator˹ assert_eq!(iter.next(), None);""(DDɺ̺(#(#R*y(*yźźɺɺ̺̺պպׄ #<ɏ ( (л#7DDջػջջػػ7 7 767DDGG8777 7 7GGGEGEGEG EGEG EQ ! >S7  7G A mutable iterator over the entries of a `HashMap` in arbitrary order.JҤ6L This `struct` is created by the [`iter_mut`] method on [`HashMap`]. See itsO̅2 [`iter_mut`]: struct.HashMap.html#method.iter_mut5$P let mut map: HashMap<_, _> = [(1, "One".to_owned()), (2, "Two".into())].into();S let mut iter = map.iter_mut();"6 iter.next().map(|(_, v)| v.push_str(" Mississippi"));99""A assert_eq!(map.get(&1).unwrap(), &"One Mississippi".to_owned());DA assert_eq!(map.get(&2).unwrap(), &"Two Mississippi".to_owned());D(DD('('Simׇ"m(imׇ"mׄ '<ɏ ( (87DD7DDSimׇ"m7+7 7R*y7 78G An owning iterator over the entries of a `HashMap` in arbitrary order.J' The iterator element type is `(K, V)`.*D This `struct` is created by the [`into_iter`] method on [`HashMap`]GJ (provided by the [`IntoIterator`] trait). See its documentation for more.M2 The map cannot be used after calling that method.54 [`into_iter`]: struct.HashMap.html#method.into_iter7$N [`IntoIterator`]: https://doc.rust-lang.org/core/iter/trait.IntoIterator.htmlQC let mut iter = map.into_iter();#>E // The `IntoIter` iterator produces items in arbitrary order, so theH@C assert_eq!(vec, [Some((1, "a")), Some((2, "b")), Some((3, "c"))]);F""DD! +o.\ 2DD! +7 7R*y7ʗ 8D An owning iterator over the keys of a `HashMap` in arbitrary order.G%E This `struct` is created by the [`into_keys`] method on [`HashMap`].H See its documentation for more.#54 [`into_keys`]: struct.HashMap.html#method.into_keys7$C let mut keys = map.into_keys();#; let mut vec = vec![keys.next(), keys.next(), keys.next()];>G?. assert_eq!(vec, [Some(1), Some(2), Some(3)]);1 assert_eq!(keys.next(), None);"ճ"DD! n;ϓT2?DD!  7 7   - 7 7  HDD! 7 7 DDD! ODD! 8777 7 7GGGEGEGEG EGEG EQ ! >S7   :F An owning iterator over the values of a `HashMap` in arbitrary order.I%G This `struct` is created by the [`into_values`] method on [`HashMap`].JR See its documentation for more. The map cannot be used after calling that method.U8 [`into_values`]: struct.HashMap.html#method.into_values;$C$ let mut values = map.into_values();'A let mut vec = vec![values.next(), values.next(), values.next()];DGE4 assert_eq!(vec, [Some("a"), Some("b"), Some("c")]);7! assert_eq!(values.next(), None);$$ DD! ^z/SADD!  7 7  ޝ - 7 7  JDD! 7 7 FDD! JDD! 8777 7 7GGGEGEGEG EGEG EQ ! >S7   = An iterator over the keys of a `HashMap` in arbitrary order.@)H This `struct` is created by the [`keys`] method on [`HashMap`]. See itsK̅* [`keys`]: struct.HashMap.html#method.keys-$C let mut keys = map.keys();>ۋC?1 assert_eq!(vec, [Some(&1), Some(&2), Some(&3)]);4ճ"ճ"(DD(#(#Xb?*(b?*R*y(#7DD7 7 7/7DDɑ8777 7 7GGGEGEGEG EGEG EQ ! >S7  7܄? An iterator over the values of a `HashMap` in arbitrary order.BՏ)J This `struct` is created by the [`values`] method on [`HashMap`]. See itsM̅. [`values`]: struct.HashMap.html#method.values1$Ԁ؀C let mut values = map.values();"ÁDGԂA7 assert_eq!(vec, [Some(&"a"), Some(&"b"), Some(&"c")]);:$$Ԅ(DD(#(#Y@/ֱ|(@/ֱ|R*y(υ%7DDԅׅԅԅׅׅ7 7 717DDݑɇ8̇777 7 7GGGEGEGEG EGEG EQ ! >S7 Ї 7чׇ9A A draining iterator over the entries of a `HashMap` in arbitraryÈD. order. The iterator element type is `(K, V)`.1I This `struct` is created by the [`drain`] method on [`HashMap`]. See itsL̅, [`drain`]: struct.HashMap.html#method.drain/ۊ$D let mut map: HashMap<_, _> = [(1, "a"), (2, "b"), (3, "c")].into();G" let mut drain_iter = map.drain();%M let mut vec = vec![drain_iter.next(), drain_iter.next(), drain_iter.next()];PB // The `Drain` iterator produces items in arbitrary order, so theE̍@F% assert_eq!(drain_iter.next(), None);((ߏ(DD! (ـ'(ـ'(ـ'Y~e* (~e* > ) >  ck? (ʐ37DD!ϐҐՐؐ Y~e* 7ϐϐҐҐՐՐ+7 7R*y7 7BR A draining iterator over entries of a `HashMap` which don't satisfy the predicateUK `f(&k, &mut v)` in arbitrary order. The iterator element type is `(K, V)`.NP This `struct` is created by the [`drain_filter`] method on [`HashMap`]. See itsS̅: [`drain_filter`]: struct.HashMap.html#method.drain_filter=$ʖI let mut map: HashMap = [(1, "a"), (2, "b"), (3, "c")].into();ΖL= let mut drain_filter = map.drain_filter(|k, _v| k % 2 != 0);@> let mut vec = vec![drain_filter.next(), drain_filter.next()];AH // The `DrainFilter` iterator produces items in arbitrary order, so theK@2 assert_eq!(vec, [Some((1, "a")),Some((3, "c"))]);̙5' assert_eq!(drain_filter.next(), None);*͚* drop(drain_filter); assert_eq!(map.len(), 1);ś (DD/!՛؛ۛޛ% 77 7 777(ئ&(ئ&(ئ&Zh,uI`p(h,uI`pћћ՛՛؛؛ۛۛޛޛ$\)ۢ}ϼ( (ޜ9(DD/!77 7 777ȏǝ ӝ7 7 (Ο3(9( [ >Ew7(>Ew7 (Ο3 (  277 7 797DD/!77 7 7¡šȡ77 ¡¡ššȡȡ (7 7 {-P9 7- 7 7  7Ӥ87DD/77 7 7ۤޤ77ؤؤؤۤۤޤޤB(DD! (ئ&(ئ&(ئ&\)ۢ}ϼ( (ۢ}ϼ( ׄ ئ&ܦ ( >7DD! \)ۢ}ϼ( 7m77 7 7  /77  7 7̨77 ߥ 7 F A mutable iterator over the values of a `HashMap` in arbitrary order.Iϖѫ-N This `struct` is created by the [`values_mut`] method on [`HashMap`]. See itsQ̅լ6 [`values_mut`]: struct.HashMap.html#method.values_mut9$ԭحS# let mut values = map.values_mut();&3 values.next().map(|v| v.push_str(" Mississippi"));6ɩɯ6$Ű$͘DD (DD('(']-Lиݞ(-LиݞSimׇ"m(IQ A builder for computing where in a [`HashMap`] a key-value pair would be stored.²T< See the [`HashMap::raw_entry_mut`] docs for usage examples.?۳E [`HashMap::raw_entry_mut`]: struct.HashMap.html#method.raw_entry_mut߳H[ use hashbrown::hash_map::{RawEntryBuilderMut, RawEntryMut::Vacant, RawEntryMut::Occupied};Ǵ^µ(!D map.extend([(1, 11), (2, 12), (3, 13), (4, 14), (5, 15), (6, 16)]);G assert_eq!(map.len(), 6);ٶκYշڻ4ȸ߸@ let builder: RawEntryBuilderMut<_, _, _> = map.raw_entry_mut();C // Existing key match builder.from_key(&6) {Ź ! Vacant(_) => unreachable!(),$3 Occupied(view) => assert_eq!(view.get(), &16),6ºȺ for key in 0..12 {̺1 let hash = compute_hash(map.hasher(), &key);4( let value = map.get(&key).cloned();+7 let key_value = value.as_ref().map(|v| (&key, v));Ļ:5 println!("Key: {} and value: {:?}", key, value);8/ match map.raw_entry_mut().from_key(&key) {2K Occupied(mut o) => assert_eq!(Some(o.get_key_value()), key_value),N. Vacant(_) => assert_eq!(value, None),½1 D match map.raw_entry_mut().from_key_hashed_nocheck(hash, &key) {GٸƾN1ǿ ? match map.raw_entry_mut().from_hash(hash, |q| *q == key) {ѿBٸN1 (DDD! ( ( ( ( ^iKd\/(iKd\/  (@M A view into a single entry in a map, which may either be vacant or occupied.P, This is a lower-level version of [`Entry`]./P This `enum` is constructed through the [`raw_entry_mut`] method on [`HashMap`],S@ then calling one of the methods of that [`RawEntryBuilderMut`].C$ [`Entry`]: enum.Entry.html< [`raw_entry_mut`]: struct.HashMap.html#method.raw_entry_mut?7 [`RawEntryBuilderMut`]: struct.RawEntryBuilderMut.html:(F use hashbrown::hash_map::{HashMap, RawEntryMut, RawOccupiedEntryMut};I!, map.extend([('a', 1), ('b', 2), ('c', 3)]);/κYڻ4 // Existing key (insert)D let raw: RawEntryMut<_, _, _> = map.raw_entry_mut().from_key(&'a');G@ let _raw_o: RawOccupiedEntryMut<_, _, _> = raw.insert('a', 10);C // Nonexistent key (insert)4 map.raw_entry_mut().from_key(&'d').insert('d', 40);7 // Existing key (or_insert)- let hash = compute_hash(map.hasher(), &'b');0 let kv = map .raw_entry_mut()) .from_key_hashed_nocheck(hash, &'b'), .or_insert('b', 20);$ assert_eq!(kv, (&mut 'b', &mut 2));' *kv.1 = 20; // Nonexistent key (or_insert)"- let hash = compute_hash(map.hasher(), &'e');0) .from_key_hashed_nocheck(hash, &'e'), .or_insert('e', 50);% assert_eq!(kv, (&mut 'e', &mut 50));( assert_eq!(map.len(), 5);! // Existing key (or_insert_with)$- let hash = compute_hash(map.hasher(), &'c');0$ .from_hash(hash, |q| q == &'c')'# .or_insert_with(|| ('c', 30));&$ assert_eq!(kv, (&mut 'c', &mut 3));' *kv.1 = 30;$ // Nonexistent key (or_insert_with)'- let hash = compute_hash(map.hasher(), &'f');0$ .from_hash(hash, |q| q == &'f')'# .or_insert_with(|| ('f', 60));&% assert_eq!(kv, (&mut 'f', &mut 60));($ println!("Our HashMap: {:?}", map);'C let mut vec: Vec<_> = map.iter().map(|(&k, &v)| (k, v)).collect();FD@U assert_eq!(vec, [('a', 10), ('b', 20), ('c', 30), ('d', 40), ('e', 50), ('f', 60)]);X (DDD! ("("(("_ _ i(i_`)D67(a)D Y( An occupied entry.1 use hashbrown::{hash_map::RawEntryMut, HashMap};4> let mut map: HashMap<_, _> = [("a", 100), ("b", 200)].into();A.1$ RawEntryMut::Occupied(_) => { }' ( (## A vacant entry.45* match map.raw_entry_mut().from_key("a") {-3" RawEntryMut::Vacant(_) => { }% ( (!!J. A view into an occupied entry in a `HashMap`.1( It is part of the [`RawEntryMut`] enum.+' [`RawEntryMut`]: enum.RawEntryMut.html*(I!2κYڻ4` let _raw_o: RawOccupiedEntryMut<_, _, _> = map.raw_entry_mut().from_key(&"a").insert("a", 100);c'.1,Ӿ)#"߿0  0C1(4 assert_eq!(view.remove_entry(), ("c", 30));7 5- let hash = compute_hash(map.hasher(), &"b");0; match map.raw_entry_mut().from_hash(hash, |q| *q == "b") {>1(4 assert_eq!(view.remove_entry(), ("b", 20));7 ! assert_eq!(map.get(&"b"), None);$܇(DDD! ("("(("_`)D67(67 " (   (D7DDD!  D7DDD!  H+ A view into a vacant entry in a `HashMap`..+*(D use hashbrown::hash_map::{HashMap, RawEntryMut, RawVacantEntryMut};G+ let mut map = HashMap::<&str, i32>::new();.κYڻ4S let raw_v: RawVacantEntryMut<_, _, _> = match map.raw_entry_mut().from_key(&"a") {V' RawEntryMut::Vacant(view) => view,*3 }; raw_v.insert("a", 10);, assert!(map[&"a"] == 10 && map.len() == 1);/*0@ match map.raw_entry_mut().from_key_hashed_nocheck(hash, &"b") {C3&. let (k, value) = view.insert("b", 2);1, assert_eq!((*k, *value), ("b", 2));/ *value = 20; , assert!(map[&"b"] == 20 && map.len() == 2);/0; match map.raw_entry_mut().from_hash(hash, |q| *q == "c") {>3&? assert_eq!(view.insert("c", 30), (&mut "c", &mut 30));B , assert!(map[&"c"] == 30 && map.len() == 3);/(DDD! ("("(("a)D Y( Y" (   (ĉFĀT8 See the [`HashMap::raw_entry`] docs for usage examples.;ف= [`HashMap::raw_entry`]: struct.HashMap.html#method.raw_entry݁@5 use hashbrown::hash_map::{HashMap, RawEntryBuilder};8(!) map.extend([(1, 10), (2, 20), (3, 30)]);Ń,κYЄڻ4Åڅ for k in 0..6 {/ let hash = compute_hash(map.hasher(), &k);2%ц-2= let builder: RawEntryBuilder<_, _, _> = map.raw_entry();@* assert_eq!(builder.from_key(&k), kv);-EJω(DDD! ((((a_xtnS K(_xtnS K߉߉ (J(DDD!ĊNJ ӊ^iKd\/(ĊĊ, Creates a `RawEntryMut` from the given key./ҋڋ42 let mut map: HashMap<&str, u32> = HashMap::new();5 let key = "a";K let entry: RawEntryMut<&str, u32, _> = map.raw_entry_mut().from_key(&key);N entry.insert(key, 100);ˍ assert_eq!(map[&"a"], 100);7 7 _ _ i(Eԏ   I   ( 9 Creates a `RawEntryMut` from the given key and its hash.<ёّ(4κY̓ڻ4˔5ɕ0` let entry: RawEntryMut<&str, u32, _> = map.raw_entry_mut().from_key_hashed_nocheck(hash, &key);c7 7 E  ( J(DDD!ęǙʙ͙Й ܙ^iKd\/(ęęǙǙʙʙ͙͙C Creates a `RawEntryMut` from the given hash and matching function.Fךߚ(4κYҜڻ4ѝ5Ϟ0[ let entry: RawEntryMut<&str, u32, _> = map.raw_entry_mut().from_hash(hash, |k| k == &key);^ Š _ _ i(/ J  JJ  (  Š /J  JJ  (   ԧG(DDD!ݧ a_xtnS K(٧٧ݧݧ" Access an immutable entry by key.%̨Ԩ? let map: HashMap<&str, u32> = [("a", 100), ("b", 200)].into();B@ assert_eq!(map.raw_entry().from_key(&key), Some((&"a", &100)));Cɪ7 7  {-P ( (E֫   ( ͫӫ««1 Access an immutable entry by a key and its hash.ŭ4(ڮκYڻ4߰Bӱ0U assert_eq!(map.raw_entry().from_key_hashed_nocheck(hash, &key), Some((&"a", &100)));X7 7 ڰEִ  ( ޵p ڰ/7  77 ɶ (   s9 Access an immutable entry by hash and matching function.<ø˸޸(κǹYڻɺ4ɻѻB0P assert_eq!(map.raw_entry().from_hash(hash, |k| k == &key), Some((&"a", &100)));S  ڰ/7  77  (  ʾ̿C(DDD!տؿۿ޿ _ _ i(ѿѿտտؿؿۿۿ޿޿@ Sets the value of the entry, and returns a RawOccupiedEntryMut.C5Q let entry = map.raw_entry_mut().from_key("horseyland").insert("horseyland", 37);T6 assert_eq!(entry.remove_entry(), ("horseyland", 37));9_`)D67(  (fuO Ensures a value is in the entry by inserting the default if empty, and returnsR6 mutable references to the key and value in the entry.95E map.raw_entry_mut().from_key("poneyland").or_insert("poneyland", 3);H! assert_eq!(map["poneyland"], 3);$N *map.raw_entry_mut().from_key("poneyland").or_insert("poneyland", 10).1 *= 2;Q! assert_eq!(map["poneyland"], 6);$  ( (  ( ܂ Z Ensures a value is in the entry by inserting the result of the default function if empty,]B and returns mutable references to the key and value in the entry.E5 let mut map: HashMap<&str, String> = HashMap::new();8> map.raw_entry_mut().from_key("poneyland").or_insert_with(|| {A& ("poneyland", "hoho".to_string())) });2 assert_eq!(map["poneyland"], "hoho".to_string());5 /    ( <UA Provides in-place mutable access to an occupied entry before anyD potential inserts into the map.#5 map.raw_entry_mut() .from_key("poneyland")$ .and_modify(|_k, v| { *v += 1 })' .or_insert("poneyland", 42);#" assert_eq!(map["poneyland"], 42);%' .or_insert("poneyland", 0);"" assert_eq!(map["poneyland"], 43);%  /77  7 777  ( eC Provides shared access to the key and owned access to the value ofFB an occupied entry and allows to replace or remove it based on theE value of the returned option.!& use hashbrown::hash_map::RawEntryMut;)5 let entry = map .from_key("poneyland")0 .and_replace_entry_with(|_k, _v| panic!());3 match entry {" RawEntryMut::Vacant(_) => {},%* RawEntryMut::Occupied(_) => panic!(),- map.insert("poneyland", 42); % .and_replace_entry_with(|k, v| {(% assert_eq!(k, &"poneyland");( assert_eq!(v, 42); Some(v + 1) }); " RawEntryMut::Occupied(e) => {%+ assert_eq!(e.key(), &"poneyland");." assert_eq!(e.get(), &43);% ( RawEntryMut::Vacant(_) => panic!(),+%, .and_replace_entry_with(|_k, _v| None);/%-) assert!(!map.contains_key("poneyland"));, /7  77   ( K(DDD! _`)D67(* Gets a reference to the key in the entry.-4C let mut map: HashMap<&str, u32> = [("a", 100), ("b", 200)].into();F.+: RawEntryMut::Occupied(o) => assert_eq!(o.key(), &"a")=7 7 7 (#2 Gets a mutable reference to the key in the entry.54 use std::rc::Rc; let key_one = Rc::new("a"); let key_two = Rc::new("a");6 let mut map: HashMap, u32> = HashMap::new();9! map.insert(key_one.clone(), 10);$ assert_eq!(map[&key_one], 10);"M assert!(Rc::strong_count(&key_one) == 2 && Rc::strong_count(&key_two) == 1);P/ match map.raw_entry_mut().from_key(&key_one) {2+& RawEntryMut::Occupied(mut o) => {)( *o.key_mut() = key_two.clone();+  assert_eq!(map[&key_two], 10);"M assert!(Rc::strong_count(&key_one) == 1 && Rc::strong_count(&key_two) == 2);P7 7 7 (ׂ"D Converts the entry into a mutable reference to the key in the entryG) with a lifetime bound to the map itself.,49$"P let inside_key: &mut Rc<&str>;"2+; RawEntryMut::Occupied(o) => inside_key = o.into_key(),> *inside_key = key_two.clone();""ŁPނ ( (, Gets a reference to the value in the entry./4Є؄F.ޅ+; RawEntryMut::Occupied(o) => assert_eq!(o.get(), &100),>цۆ7 7 7 ("N Converts the OccupiedEntry into a mutable reference to the value in the entryQ,4Չ݉F let value: &mut u32;͊Պ.+6 RawEntryMut::Occupied(o) => value = o.into_mut(),9 *value += 900; assert_eq!(map[&"a"], 1000); Č ( (#4 Gets a mutable reference to the value in the entry.ލ7Ɏ4FՏݏ.+9 RawEntryMut::Occupied(mut o) => *o.get_mut() += 900,< 7 7 7 (і'4 Gets a reference to the key and value in the entry.Ӓ74FʔҔ.+M RawEntryMut::Occupied(o) => assert_eq!(o.get_key_value(), (&"a", &100)),Pؖ 7 7 7 7 (7< Gets a mutable reference to the key and value in the entry.?˜՘ݘ4Ù9њ$"P2+)@ let (inside_key, inside_value) = o.get_key_value_mut();C' *inside_key = key_two.clone();* *inside_value = 100;  Ş assert_eq!(map[&key_two], 100);Ϟ#P̟7 7 7 7 (5V Converts the OccupiedEntry into a mutable reference to the key and value in the entryʡY,٢4ڣ9$"ȥP" let inside_value: &mut u32;̦2+" RawEntryMut::Occupied(o) => {ק%( let tuple = o.into_key_value();+ inside_key = tuple.0;! inside_value = tuple.1;ר# " *inside_value = 100;۩#Pت ('@ Sets the value of the entry, and returns the entry's old value.ԬC˭4F׮߮.+E RawEntryMut::Occupied(mut o) => assert_eq!(o.insert(1000), 100),¯H ư7 7 (uԹ)CDzϲ۲4ٳ9ô$"P2+߶)5 let old_key = o.insert_key(key_two.clone());81 assert!(Rc::ptr_eq(&old_key, &key_one));ʷ4 "¸P۹ 7 7 (fʾ2 Takes the value out of the entry, and returns it.54׻߻F.+= RawEntryMut::Occupied(o) => assert_eq!(o.remove(), 100),@ڽ$Ѿ (ؾ#6 Take the ownership of the key and value from the map.9̿Կ4F.+J RawEntryMut::Occupied(o) => assert_eq!(o.remove_entry(), ("a", 100)),M$  (xF: the entry and allows to replace or remove it based on the=!4F; let raw_entry = match map.raw_entry_mut().from_key(&"a") {>+> RawEntryMut::Occupied(o) => o.replace_entry_with(|k, v| {A assert_eq!(k, &"a");  assert_eq!(v, 100); Some(v + 900) }), " let raw_entry = match raw_entry {%+A  assert_eq!(v, 1000);  None  match raw_entry {# RawEntryMut::Vacant(_) => { },&-$ _ _ i(/7  77   (  I(DDD! a)D Y(r8 Sets the value of the entry with the VacantEntry's key,;' and returns a mutable reference to it.*4F+ match map.raw_entry_mut().from_key(&"c") {.-T RawEntryMut::Vacant(v) => assert_eq!(v.insert("c", 300), (&mut "c", &mut 300)),W assert_eq!(map[&"c"], 300);ű ( (  (fu;ֲ*(4κYڻ4F let key = "c";0@ match map.raw_entry_mut().from_key_hashed_nocheck(hash, &key) {C-* RawEntryMut::Vacant(v) => assert_eq!(-1 v.insert_hashed_nocheck(hash, key, 300),4 (&mut "c", &mut 300)  ), ű  (fu9 Set the value of an entry with a custom hasher function.<(4B fn make_hasher(hash_builder: &S) -> impl Fn(&K) -> u64 + '_E  K: Hash + ?Sized, S: BuildHasher, move |key: &K| { use core::hash::Hasher;#5 let mut state = hash_builder.build_hasher();8 key.hash(&mut state);! state.finish() 5) let hash_builder = map.hasher().clone();,- let hash = make_hasher(&hash_builder)(&key);0; match map.raw_entry_mut().from_hash(hash, |q| q == &key) {>--J v.insert_with_hasher(hash, key, 100, make_hasher(&hash_builder)),M (&mut "a", &mut 100)  J map.extend([("b", 200), ("c", 300), ("d", 400), ("e", 500), ("f", 600)]);Műh7 7 7 (fuH ű_`)D67(  (fuP7DDD! 8777 7 7GGGEGEGEG EGEG EQ ! >S7  7W7DDD!ɑݑ 8777 7 7GGGEGEGEG EGEG EQ ! >S7  7_7DDD!ɑݑ 8777 7 7GGGEGEGEG EGEG EQ ! >S7  7O7DDD! 8777 7 7GGGEGEGEG EGEG EQ ! >S7  7M7DDD! 8777 7 7GGGEGEGEG EGEG EQ ! >S7  7'PЁE This `enum` is constructed from the [`entry`] method on [`HashMap`].ԁH$, [`entry`]: struct.HashMap.html#method.entryƂ/: use hashbrown::hash_map::{Entry, HashMap, OccupiedEntry};=Ӄ׃!2ʄ΄, let entry: Entry<_, _, _> = map.entry("a");/6 let _raw_o: OccupiedEntry<_, _, _> = entry.insert(1);9Յ map.entry("d").insert(4);% let v = map.entry("b").or_insert(2);Ն() assert_eq!(std::mem::replace(v, 2), 20);," map.entry("e").or_insert(5);· $- let v = map.entry("c").or_insert_with(|| 3);0) assert_eq!(std::mem::replace(v, 3), 30);Ɉ,'% map.entry("f").or_insert_with(|| 6);(ljˉ'FD@ċO assert_eq!(vec, [("a", 1), ("b", 2), ("c", 3), ("d", 4), ("e", 5), ("f", 6)]);݋R(DDD!ˌΌьԌ  ("("("("_ _ ؤD(ؤDkf`)zxo&s(mf)S3v(njnjˌˌΌΌььԌ Ԍ܏č+ use hashbrown::hash_map::{Entry, HashMap};Ѝ.AɎ match map.entry("a") {ю( Entry::Vacant(_) => unreachable!(),+ Entry::Occupied(_) => { }!ƏЏ܏ (܏܏ (ђŐѐ.5Ƒ* Entry::Occupied(_) => unreachable!(),- Entry::Vacant(_) => { }Œђ (ђђ (ؒؒQ7DDD!ɑݑ ѓ8ԓ777 7 7GGGEGEGEG EGEG EQ ! >S7 ؓ 7ٓߓDӕ1" It is part of the [`Entry`] enum.%ΖҖ=!ї2C let _entry_o: OccupiedEntry<_, _, _> = map.entry("a").insert(100);FϘ'+# Entry::Occupied(mut view) => {&Ӿ)# *v *= 10;՚0  ћ match map.entry("c") {+ Entry::Occupied(view) => {՜"7 ! assert_eq!(map.get(&"c"), None);$ (DDD! ("("("("kf`)zxo&s(zxo&s֞ ֞ " (>7DDD! Ɵɟ̟ϟ ƟƟɟɟ̟̟ϟϟˠ>7DDD! נڠݠš ѡננڠڠݠݠݡY7DDD!ɑݑ 8777 7 7GGGEGEGEG EGEG EQ ! >S7 Ģ 7ŢˢB.%8 use hashbrown::hash_map::{Entry, HashMap, VacantEntry};;.; let entry_v: VacantEntry<_, _, _> = match map.entry("a") {>! Entry::Vacant(view) => view,֦$- entry_v.insert(10);ȧ/* match map.entry("b") {¨- Entry::Vacant(view) => { $ let value = view.insert(2);' assert_eq!(*value, 2);"ܩ /Ȫ (DDD!ت۪ު ("("("("mf)S3v(S3vԪԪتت۪۪ުު " (ȫP7DDD!ͫ׫ګݫɑЫ ͫͫ׫׫ګګݫݫ8777 7 7GGGEGEGEG EGEG EQ ! >S7  79M A view into a single entry in a map, which may either be vacant or occupied,P. with any borrowed form of the map's key type.1I This `enum` is constructed from the [`entry_ref`] method on [`HashMap`].LR [`Hash`] and [`Eq`] on the borrowed form of the map's key type *must* match thoseUP for the key type. It also require that key may be constructed from the borrowedկS! form through the [`From`] trait.$ΰҰ$4 [`entry_ref`]: struct.HashMap.html#method.entry_ref7;@@ [`From`]: https://doc.rust-lang.org/std/convert/trait.From.htmlC@ use hashbrown::hash_map::{EntryRef, HashMap, OccupiedEntryRef};Cӳ׳!H map.extend([("a".to_owned(), 10), ("b".into(), 20), ("c".into(), 30)]);KŴ let key = String::from("a"); 7 let entry: EntryRef<_, _, _, _> = map.entry_ref(&key);:< let _raw_o: OccupiedEntryRef<_, _, _, _> = entry.insert(1);? map.entry_ref("d").insert(4);޶!) let v = map.entry_ref("b").or_insert(2);,ѷ,"! map.entry_ref("e").or_insert(5);$Ƹʸ$1 let v = map.entry_ref("c").or_insert_with(|| 3);4,ѹ') map.entry_ref("f").or_insert_with(|| 6);,'ҺL for (key, value) in ["a", "b", "c", "d", "e", "f"].into_iter().zip(1..=6) {ֺO assert_eq!(map[key], value)#ʻл(JDEDD! % ɼ("J("("("_ _ k=(Jk=qf`)e = [("a".to_owned(), 100), ("b".into(), 200)].into();ֽS match map.entry_ref("a") {+ EntryRef::Vacant(_) => unreachable!(),پ.! EntryRef::Occupied(_) => { }$˿ (J˿˿  (JԿ'Կ' ڰ 14 let mut map: HashMap = HashMap::new();7 - EntryRef::Occupied(_) => unreachable!(),0 EntryRef::Vacant(_) => { }" (J  (J%% v77DEDD!  ϫ   GG   8777 7 7GGGEGEGEG EGEG EQ ! >S7  77(DE(p p `x3(`x3 (   (  (  (  ()(DEp p `x3(:   (  (A(DE 7 7 7 (V1% It is part of the [`EntryRef`] enum.(! [`EntryRef`]: enum.EntryRef.html$ C! K  N let _entry_o: OccupiedEntryRef<_, _, _, _> = map.entry_ref(&key).insert(100);Q'  .& EntryRef::Occupied(mut view) => {)Ӿ)#0  assert_eq!(map["a"], 1111); match map.entry_ref("c") { ." EntryRef::Occupied(view) => {%? assert_eq!(view.remove_entry(), ("c".to_owned(), 30));B  assert_eq!(map.get("c"), None);#(JDEDD!  ϫ     ("J("("("qf`)eS7  77T. ( $> use hashbrown::hash_map::{EntryRef, HashMap, VacantEntryRef};A- let mut map = HashMap::::new();0E let entry_v: VacantEntryRef<_, _, _, _> = match map.entry_ref("a") {H$ EntryRef::Vacant(view) => view,' 0 + assert!(map["a"] == 10 && map.len() == 1);.* match map.entry_ref("b") { 0 EntryRef::Vacant(view) => {# ' " + assert!(map["b"] == 20 && map.len() == 2);.(JDEDD!  ϫ     ("J("("("sf )orBㄫ(JorBㄫ  p p `x3J" (ճu77D E D D !        ϫ         8777 7 7GGGEGEGEG EGEG EQ ! >S7   77DW The error returned by [`try_insert`](HashMap::try_insert) when the key already exists.ZB Contains the occupied entry, and the value that was not inserted.E3 use hashbrown::hash_map::{HashMap, OccupiedError};6< let mut map: HashMap<_, _> = [("a", 10), ("b", 20)].into();?P // try_insert method returns mutable reference to the value if keys are vacant,SM // but if the map did have key present, nothing is updated, and the providedP- // value is returned inside `Err(_)` variant0! match map.try_insert("a", 100) {$1 Err(OccupiedError { mut entry, value }) => {4' assert_eq!(entry.key(), &"a");* assert_eq!(value, 100);#* assert_eq!(entry.insert(100), 10)-  _ => unreachable!(), ( D D D !       (" (" (" ("  t J u]??t. (]??t. (0 The entry in the map that was already occupied.3  kf`)zxo&s ( J The value which was not inserted, because the entry was already occupied.M  Y7D D D !     ɑݑ  8777 7 7GGGEGEGEG EGEG EQ ! >S7   7h( D D D !     ɑݑ  8777 7 7GGGEGEGEG EGEG EQ ! >S7    (P( D D D !            ( (   R*y ($H Creates an iterator over the entries of a `HashMap` in arbitrary order.K2H Return the same `Iter` struct as by the [`iter`] method on [`HashMap`].K-$D let map_one: HashMap<_, _> = [(1, "a"), (2, "b"), (3, "c")].into();G" let mut map_two = HashMap::new();% for (key, value) in &map_one {"0 println!("Key: {}, Value: {}", key, value);33 map_two.insert_unique_unchecked(*key, *value);6 assert_eq!(map_one, map_two);! !   (T( D D D !           ( (   Simׇ"m ( 'G Creates an iterator over the entries of a `HashMap` in arbitrary orderJD with mutable references to the values. The iterator element type isG `(&'a K, &'a mut V)`.B Return the same `IterMut` struct as by the [`iter_mut`] method onE [`HashMap`].5$    € D let mut map: HashMap<_, _> = [("a", 1), ("b", 2), ("c", 3)].into(); G  for (key, value) in &mut map { "!݁ 3 *value *= 2;   . let mut vec = map.iter().collect::>(); 1 D @ 7 assert_eq!(vec, [(&"a", &2), (&"b", &4), (&"c", &6)]); :  !   (  HD D D !                      φ Ԇ   ۾ ی 'E Creates a consuming iterator, that is, one that moves each key-value HE pair out of the map in arbitrary order. The map cannot be used afterć H calling this.   ˆ ʈ ֈ  @ let map: HashMap<_, _> = [("a", 1), ("b", 2), ("c", 3)].into(); CƉ  // Not possible with .iter()Ή ; let mut vec: Vec<(&str, i32)> = map.into_iter().collect(); >A // The `IntoIter` iterator produces items in arbitrary order, so DA // the items must be sorted to test them against a sorted array. Dȋ ̡ 4 ތ ۾    ֍ *( D D   ߍ   ۍ ۍ ߍ ߍ        ( (َ ,܎ 7 7 {-P!    (  - 7 7  Ƒ   (Ǒ  /7D D           7 7   7  +7D D          -( D D                ( ( 0 7 7 {-P!    ( ԗ -ח 7 7     (  27D D           7 7   7 ϙ .7D D   ԙ י ԙ ԙ י י  +7D D     ɑ ݑΚ      8 777 7 7GGGEGEGEG EGEG EQ ! >S7    7  ٛ ?D D !   ޛ      ޛ ޛ          $ 7 7      - 7 7      HD D !     Ğ Ǟ ʞ ֞   Ğ Ğ Ǟ Ǟ   7 7 ß  ğ  DD D !               OD D !   Ġ Π ؠ Ǡ Ѡ ۠   Ġ Ġ Π Π ؠ ؠ  8 777 7 7GGGEGEGEG EGEG EQ ! >S7       *( D D            Ģ   ( # 7 7 {-P!    (  - 7 7     (  /7D D         ̦ Ϧ 7 7 Ӧ  7Ԧ  +7D D          ,( D D     §     § §     ( # 7 7 {-P!    (  - 7 7  Ū   (ƪ  17D D           7 7   7  -7D D          /( D D               ( ' 7 7 {-P!    (  - 7 7     ( Ȱ 47D D   Ͱ а  Ͱ Ͱ а а   7 7   7  07D D          47D D     ݑ     ޲ 8 777 7 7GGGEGEGEG EGEG EQ ! >S7    7  ۳        D( D D !                 ִ ۴    $ 7 7     (  - 7 7     (  I7D D !                 7 7   7  E7D D !        ȸ        /7D D !       ɑ ݑȹ ۹         8 777 7 7GGGEGEGEG EGEG EQ ! >S7    7   =( D D D !           _ _ ؤD (           q; Sets the value of the entry, and returns an OccupiedEntry. >     ü ˼ 50 let entry = map.entry("horseyland").insert(37); 3 ( assert_eq!(entry.key(), &"horseyland");Ž +  !kf`)zxo&s (      ( uƾ  b R 2       5  // nonexistent key % map.entry("poneyland").or_insert(3); ( $  // existing key , *map.entry("poneyland").or_insert(10) *= 2; / $  ! (      ( <  y ]; and returns a mutable reference to the value in the entry. >       5 ! - map.entry("poneyland").or_insert_with(|| 3); 0 $ ! 4 *map.entry("poneyland").or_insert_with(|| 10) *= 2; 7 $  ! ! /           (  <    \ Ensures a value is in the entry by inserting, if empty, the result of the default function. _\ This method allows for generating key-derived values for insertion by providing the default _U function a reference to the key that was moved during the `.entry(key)` method call. X Q The reference to the moved key is provided so that cloning or copying the key is T5 unnecessary, unlike with `.or_insert_with(|| ... )`. 8      4 let mut map: HashMap<&str, usize> = HashMap::new(); 7 ! F map.entry("poneyland").or_insert_with_key(|key| key.chars().count()); I! assert_eq!(map["poneyland"], 9); $ ! Q *map.entry("poneyland").or_insert_with_key(|key| key.chars().count() * 10) *= 2; T" assert_eq!(map["poneyland"], 18); %  ! ! /    7  7 7 !     (  <    ) Returns a reference to this entry's key. ,       5! (! 8 assert_eq!(map.entry("poneyland").key(), &"poneyland"); ;! 8 assert_eq!(map.entry("horseland").key(), &"horseland"); ;  7 7! 7    (  M D #       5  map.entry("poneyland")  .and_modify(|e| { *e += 1 }) # .or_insert(42);  % " " #Ȅ"  %  ! ! /    7  7 7 "   (      e F E !      use hashbrown::hash_map::Entry; #  5   .entry("poneyland")  3   Entry::Vacant(e) => {  . $ Entry::Occupied(_) => panic!(), '     "  ( (      Entry::Occupied(e) => {  . % " Entry::Vacant(_) => panic!(), %   %  "  /  ; Entry::Vacant(e) => assert_eq!(e.key(), &"poneyland"), >" '   ,  ! ! /    7  7 7 "   (      F( D D D !             _ _ ؤD (           WI Ensures a value is in the entry by inserting the default value if empty, L! >      : let mut map: HashMap<&str, Option> = HashMap::new(); = ! % map.entry("poneyland").or_default(); ($ assert_eq!(map["poneyland"], None); ' " map.insert("horseland", Some(3)); % ! ? assert_eq!(map.entry("horseland").or_default(), &mut Some(3)); B  " (      (  E( D D D !           kf`)zxo&s (          ŀ  -     .  5& map.entry("poneyland").or_insert(12); )  match map.entry("poneyland") { "̌" %E Entry::Occupied(entry) => assert_eq!(entry.key(), &"poneyland"), H  ̀ 7 7" 7 Ѐ   (р ˈ #ա 9с )     "΂ #  5ߚ ԃ 3 " )כ„ 0 5 if let Entry::Occupied(o) = map.entry("poneyland") { 8) // We delete the entry from the map. ,5 assert_eq!(o.remove_entry(), ("poneyland", 12)); 8  2 assert_eq!(map.contains_key("poneyland"), false); 5 Fݝ H ҈ "   (߈   /     " #݊  5" )͋ ĝ"Ջ "̌" %< Entry::Occupied(entry) => assert_eq!(entry.get(), &12), ?   7 7" 7    (  #Ă 7 E If you need a reference to the `OccupiedEntry` which may outlive theÎ H4 destruction of the `Entry` value, see [`into_mut`]. 7̏  [`into_mut`]: #method.into_mutԏ "     "ʐ #  5" ) " assert_eq!(map["poneyland"], 12); %9 if let Entry::Occupied(mut o) = map.entry("poneyland") { < *o.get_mut() += 10;Ւ  assert_eq!(*o.get(), 22); ! 1 // We can use the same Entry multiple times. 4 *o.get_mut() += 2;ܓ   " assert_eq!(map["poneyland"], 24); %  7 7" 7    (  "ҕ Q ,ٖ I If you need multiple references to the `OccupiedEntry`, see [`get_mut`]. L  [`get_mut`]: #method.get_mut ߗ     . ɘ 5" ) " %  ĝ" "8 Entry::Occupied(entry) => value = entry.into_mut(), ;̌" %  *value += 10;  " assert_eq!(map["poneyland"], 22); %  " (   (  ' C͝ ՝    " #Ğ ̞ 5" ) " <" assert_eq!(o.insert(15), 12); %  " assert_eq!(map["poneyland"], 15); %  7 7"    ( u   5 )     " #  5ߚ  3 " )כ 0 ɡ" 8 assert_eq!(o.remove(), 12); #Φ ئ " 5 Fݝ H  "   (  .Y Replaces the entry, returning the old key and value. The new key in the hash map will be \# the key used to create this entry. & Ǫ ت H Will panic if this OccupiedEntry was created through [`Entry::insert`]. K  ˫ ӫ , use hashbrown::hash_map::{Entry, HashMap};߫ / use std::rc::Rc;  9 let mut map: HashMap, u32> = HashMap::new(); <3 let key_one = Rc::new("Stringthing".to_string()); 63 let key_two = Rc::new("Stringthing".to_string()); 6 " map.insert(key_one.clone(), 15); %N assert!(Rc::strong_count(&key_one) == 2 && Rc::strong_count(&key_two) == 1); Q $ match map.entry(key_two.clone()) { '! Entry::Occupied(entry) => { $P let (old_key, old_value): (Rc, u32) = entry.replace_entry(16);ѯ SE assert!(Rc::ptr_eq(&key_one, &old_key) && old_value == 15); H } # Entry::Vacant(_) => panic!(), & }  N assert!(Rc::strong_count(&key_one) == 1 && Rc::strong_count(&key_two) == 2);ñ Q1 assert_eq!(map[&"Stringthing".to_owned()], 16); 4Ҳ  "   ( u  I Replaces the key in the hash map with the key used to create this entry. L   " K߶     . ڷ E let mut map: HashMap, usize> = HashMap::with_capacity(6); H; let mut keys_one: Vec> = Vec::with_capacity(6); >; let mut keys_two: Vec> = Vec::with_capacity(6); > M for (value, key) in ["a", "b", "c", "d", "e", "f"].into_iter().enumerate() { P* let rc_key = Rc::new(key.to_owned()); -# keys_one.push(rc_key.clone());ĺ &' map.insert(rc_key.clone(), value); *, keys_two.push(Rc::new(key.to_owned())); /һ ܻ  assert!( : keys_one.iter().all(|key| Rc::strong_count(key) == 2) =A && keys_two.iter().all(|key| Rc::strong_count(key) == 1) D  % reclaim_memory(&mut map, &keys_two); ( "Ƚ : keys_one.iter().all(|key| Rc::strong_count(key) == 1)ٽ =A && keys_two.iter().all(|key| Rc::strong_count(key) == 2) D  O fn reclaim_memory(map: &mut HashMap, usize>, keys: &[Rc]) { R for key in keys {ο A if let Entry::Occupied(entry) = map.entry(key.clone()) { DF // Replaces the entry's key with our version of it in `keys`. I! entry.replace_key(); $ }     "   (  r F = !     " #  5  + let entry = match map.entry("poneyland") { ." & e.replace_entry_with(|k, v| { )) assert_eq!(k, &"poneyland"); , assert_eq!(v, 42); " Some(v + 1)  })  ̌" %   "  . % ̌" %   % " .? Entry::Occupied(e) => e.replace_entry_with(|_k, _v| None), B̌" %   Չ"  . " '   ,  " _ _ ؤD ( /    7  7 7 "   (             C( D D D !           mf)S3v (           F Gets a reference to the key that would be used when inserting a value I through the `VacantEntry`.        5ƀ" ;  7 7" 7    (   Take ownership of the key.      .  5 ĝ" "" '? Entry::Vacant(v) => assert_eq!(v.into_key(), "poneyland"), B   "   (  ] ;ֲ *     " #  5 3 if let Entry::Vacant(o) = map.entry("poneyland") { 6 o.insert(37);  " assert_eq!(map["poneyland"], 37); %  " (      ( u  ~ "kf`)zxo&s (      ( u  V( J D E D D !         ϫ    _ _ k= ( J               > Sets the value of the entry, and returns an OccupiedEntryRef. A      4 let mut map: HashMap = HashMap::new(); 74 let entry = map.entry_ref("horseyland").insert(37); 7 ' assert_eq!(entry.key(), "horseyland"); *  "qf`)e      " 7 ! 1 map.entry_ref("poneyland").or_insert_with(|| 3); 4 $ ! 8 *map.entry_ref("poneyland").or_insert_with(|| 10) *= 2; ; $  "ʆ" /   ʆ ʆ ʆ " " "   ( Jʆ <    ! _! _Y function a reference to the key that was moved during the `.entry_ref(key)` method call. \ ! T! 8׀ ߀     6 let mut map: HashMap = HashMap::new(); 9 ! J map.entry_ref("poneyland").or_insert_with_key(|key| key.chars().count()); M! $ ! U *map.entry_ref("poneyland").or_insert_with_key(|key| key.chars().count() * 10) *= 2; X! %  "ʆ" /   " 7ʆ 7 7ʆ# "Ѕ  ׅ " "   ( Jʆ <    7! ,  ӈ ۈ   " 7"ˉ ,! ; assert_eq!(map.entry_ref("poneyland").key(), "poneyland"); >!׊ ; assert_eq!(map.entry_ref("horseland").key(), "horseland"); >  7 7" 7      ( J  M͍ D # Ǝ َ    " 7я  map.entry_ref("poneyland")ُ " #Ȅ"  % # " #Ȅ" ב % Œ "ʆ" /   "В 7ʆ 7 7ʆ#   ( JʆӒ ْ В В  { Fҕ E !– ʖ ݖ   # use hashbrown::hash_map::EntryRef; & "ė 7   .entry_ref("poneyland") Ę 3   EntryRef::Vacant(e) => { * assert_eq!(e.key(), "poneyland"); - ' EntryRef::Occupied(_) => panic!(), *  ) map.insert("poneyland".to_string(), 42); ,  #  ($ assert_eq!(k, "poneyland"); '  ͜ ݜ   EntryRef::Occupied(e) => { "# -ԝ % % EntryRef::Vacant(_) => panic!(), ( Þ ˞ %  #  /  = EntryRef::Vacant(e) => assert_eq!(e.key(), "poneyland"), @ۏ#Р *   ,¡  "ʆ" /   " 7ʆ 7ɢ 7ʆ#ڢ    ( Jʆ     _( J D E D D !         ϫ  ¤   Ť  Ѥ _ _ k= ( J            ¤ ¤  e" L!ϥ >      < let mut map: HashMap> = HashMap::new(); ? ! ) map.entry_ref("poneyland").or_default();Ч ," ' . map.insert("horseland".to_string(), Some(3)); 1 ! C assert_eq!(map.entry_ref("horseland").or_default(), &mut Some(3)); F֩  # (  "ͪ  JԪ "   ( J  ^( J D E D D !         Ƭ ϫ ɬ  ̬  Ϭ  ۬ qf`)e assert_eq!(entry.key(), "poneyland"), J̰ ְ  7 7# 7      ( J  #ա 9̲ )     #ɳ & " 7ߚ Դ 3 # -כƵ 0 < if let EntryRef::Occupied(o) = map.entry_ref("poneyland") { ?"Ƕ ,@ assert_eq!(o.remove_entry(), ("poneyland".to_owned(), 12)); C ʷ "ҷ 5 Fݝ׸ H  #   ( J ھ Ⱥ /     #˻ & " 7# - # &# (? EntryRef::Occupied(entry) => assert_eq!(entry.get(), &12),̽ B   7 7# 7    ( J  #Ă 7 H If you need a reference to the `OccupiedEntryRef` which may outlive the K7 destruction of the `EntryRef` value, see [`into_mut`]. : " "     # & " 7# - " %@ if let EntryRef::Occupied(mut o) = map.entry_ref("poneyland") { C" " ! " 4"   " %  7 7# 7    ( J  "Q Converts the OccupiedEntryRef into a mutable reference to the value in the entry T , L If you need multiple references to the `OccupiedEntryRef`, see [`get_mut`]. O "     ڰ 1 " 7# -  # &; EntryRef::Occupied(entry) => value = entry.into_mut(), ># ( "  " %  # (   ( J  ' C     # & " 7# - # C" %  " %  7 7#    ( J u   5 )     # & " 7ߚ  3 # -כ 0 # ?" #  " 5 Fݝ H  #   ( J  P" \" &   K Will panic if this OccupiedEntry was created through [`EntryRef::insert`]. N    ڰ 1  5 let mut map: HashMap, u32> = HashMap::new(); 8, let key: Rc = Rc::from("Stringthing"); /  map.insert(key.clone(), 15); ' assert_eq!(Rc::strong_count(&key), 2); * % match map.entry_ref("Stringthing") { (# EntryRef::Occupied(entry) => { &L let (old_key, old_value): (Rc, u32) = entry.replace_entry(16); O@ assert!(Rc::ptr_eq(&key, &old_key) && old_value == 15); C # (  ' assert_eq!(Rc::strong_count(&key), 1); *$ assert_eq!(map["Stringthing"], 16); '  #   J   ( J u  ?" L   " K    ڰ 1  B let mut map: HashMap, usize> = HashMap::with_capacity(6); E4 let mut keys: Vec> = Vec::with_capacity(6); 7 " P) let rc_key: Rc = Rc::from(key); , keys.push(rc_key.clone()); "" *  < assert!(keys.iter().all(|key| Rc::strong_count(key) == 2)); ? F // It doesn't matter that we kind of use a vector with the same keys, I> // because all keys will be newly created from the references A! reclaim_memory(&mut map, &keys); $ < assert!(keys.iter().all(|key| Rc::strong_count(key) == 1)); ? I fn reclaim_memory(map: &mut HashMap, usize>, keys: &[Rc]) { L" I if let EntryRef::Occupied(entry) = map.entry_ref(key.as_ref()) { LG /// Replaces the entry's key with our version of it in `keys`. J" $"     #  #   ( J   F = !     # & " 7# , / let entry = match map.entry_ref("poneyland") { 2# "" )( assert_eq!(k, "poneyland"); +" "" "  # (   # "# - % # (   % # 2B EntryRef::Occupied(e) => e.replace_entry_with(|_k, _v| None), E# (   # # - ۏ# *   ,  #ʆ_ _ k= ( J /   " 7ʆ 7 7ʆ#    ( Jʆ            \( J D E D D !         ϫ    ̆ sf )orBㄫ ( J               7" I through the `VacantEntryRef`.͇ !     ˆ "ʈ 7 let key: &str = "poneyland"; 3 assert_eq!(map.entry_ref(key).key(), "poneyland"); 6  7 7# 7    Њ   ( J  <"   ċ ̋ ڰ ؋ 1 " 7#Ҍ   match map.entry_ref(key) { ۏ# *M EntryRef::Vacant(v) => assert_eq!(v.into_key(), "poneyland".to_owned()),э P   #   J   ( J  k; Sets the value of the entry with the VacantEntryRef's key,ُ >ֲ *ː Ӑ    # &ő "͑ 7#  2 if let EntryRef::Vacant(o) = map.entry_ref(key) { 5"  " %  # (  " #” "ڔ   ( J u   #qf`)e`. SN Replace values with existing keys with new values returned from the iterator. Qâ ˢ ޢ  " use hashbrown::hash_map::HashMap; %  ! map.insert(1, 100);ʣ  . let some_iter = [(1, 1), (2, 2)].into_iter(); 1 map.extend(some_iter); Q // Replace values with existing keys with new values returned from the iterator.ä T6 // So that the map.get(&1) doesn't return Some(&100). 9# assert_eq!(map.get(&1), Some(&1));ڥ & - let some_vec: Vec<_> = vec![(3, 3), (4, 4)]; 0 map.extend(some_vec);¦  ! let some_arr = [(5, 5), (6, 6)]; $ map.extend(some_arr);  let old_map_len = map.len(); ԧ , // You can also extend from another HashMapܧ /" let mut new_map = HashMap::new(); % new_map.extend(map); ( assert_eq!(new_map.len(), old_map_len);ר + 5 let mut vec: Vec<_> = new_map.into_iter().collect(); 8̩ H @ު C assert_eq!(vec, [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)]); Fƫ  7 7     # # #             ؑ C# R# 4( D D D !                            E# S# Q3 The keys and values must implement [`Copy`] trait. 6 @ [`Copy`]: https://doc.rust-lang.org/core/marker/trait.Copy.html C    # %λ ֻ !#   let arr = [(1, 1), (2, 2)]; 2 let some_iter = arr.iter().map(|&(k, v)| (k, v));ļ 5# # T# 9# &߾ # 03 map.extend(some_vec.iter().map(|&(k, v)| (k, v))); 6׿ #߿ $3 map.extend(some_arr.iter().map(|&(k, v)| (k, v))); 6 # /# % new_map.extend(&map);  assert_eq!(new_map, map);  # 8 H @ # F  7 7      8 #8̄   (            ?# R# 4( D D D !            $ $               A# S# Q$ 6 $ C    # %  !#  $  let some_iter = arr.iter(); # # T# 9# & # 0 map.extend(&some_vec);  # $ map.extend(&some_arr);  1 let mut vec: Vec<_> = map.into_iter().collect(); 4 H @ # F  7 7     $ $ 8   (              H D)/$*x< D)/$*x<        H D)/$*x<$D)/$*x<        O  (R*y ($R*y (            O  (R*y ($R*y (            { #+o.\$#+o.\  !              { #+o.\$#+o.\  !             O  (Xb?* ($Xb?* (            O  (Xb?* ($Xb?* (            U  (Y@/ֱ| ($Y@/ֱ| (            U  (Y@/ֱ| ($Y@/ֱ| (            q Y~e* $$Y~e*   $        7    uF   DerefMutM   \    +7 7 7 +7 F F M M \ \ e p  /  { …~ 7… 7 7…$ $  { { ~ ~      …     W  … /    $ 7… 7 7…$ …u        /  7… 7 $ 7…$       #    …ʋ %  /  7… 7 $ 7…$             7 7 7   … (  /   7… 7 $  7…$        ! 7 7 7    …  $  /   7… 7 $  7…$          7 7    …      /  aJ  \E  r I  I  I     8   ;     BitAnd  BitOr  BitXor  Sub    [  [     \    X  ! %  1Į  2Į  2  /<JV \er r 0     'Y  L? A hash set implemented as a `HashMap` where the value is `()`.BE As with the [`HashMap`] type, a `HashSet` requires that the elementsHM implement the [`Eq`] and [`Hash`] traits. This can frequently be achieved byPI using `#[derive(PartialEq, Eq, Hash)]`. If you implement these yourself,L3 it is important that the following property holds:6ӛ $FF It is a logic error for an item to be modified in such a way that theIF item's hash, as determined by the [`Hash`] trait, or its equality, as IH determined by the [`Eq`] trait, changes while it is in the set. This is KL normally only possible through [`Cell`], [`RefCell`], global state, I/O, or O unsafe code.   OƠ NM panic does occur then the contents of the `HashSet` may become corrupted and P -     use hashbrown::HashSet;  D0 // would be `HashSet` in this example).3 let mut books = HashSet::new();# // Add some books.2 books.insert("A Dance With Dragons".to_string());53 books.insert("To Kill a Mockingbird".to_string());6) books.insert("The Odyssey".to_string());,. books.insert("The Great Gatsby".to_string());1 , if !books.contains("The Winds of Winter") {/E println!("We have {} books, but The Winds of Winter ain't one.",H books.len()); // Remove a book. books.remove("The Odyssey");  for book in &books { println!("{}", book);A The easiest way to use `HashSet` with a custom type is to deriveDI [`Eq`] and [`Hash`]. We must also derive [`PartialEq`]. This will in theL future be implied by [`Eq`]. $) power: usize," let mut vikings = HashSet::new();%@ vikings.insert(Viking { name: "Einar".to_string(), power: 9 });C$C? vikings.insert(Viking { name: "Olaf".to_string(), power: 4 });BA vikings.insert(Viking { name: "Harald".to_string(), power: 8 });D4 // Use derived implementation to print the vikings.7 for x in &vikings { println!("{:?}", x);J A `HashSet` with fixed list of elements can be initialized from an array:M$* let viking_names: HashSet<&'static str> =-= [ "Einar", "Olaf", "Harald" ].iter().cloned().collect();@$ // use the values stored in the set'A;@$IG D !     ܅> ܽ $   I D !          ܅        7 7܅܅    !'! 77 7܅ 7܅ ! ! !41 D !   4444 4܅ 4444447F Returns the number of elements the set can hold without reallocating.4I5555$55 let set: HashSet = HashSet::with_capacity(100);58 assert!(set.capacity() >= 100);6#677 7܅ 7 7;!6 An iterator visiting all elements in arbitrary order.79& The iterator element type is `&'a T`.8)8888$9 let mut set = HashSet::new();9! set.insert("a");9 set.insert("b");99% // Will print in an arbitrary order.:( for x in set.iter() {: println!("{}", x);:::;7 7܅  R  'ˑ%x7 ; ;>+ Returns the number of elements in the set.<.<<<<$== let mut v = HashSet::new();= assert_eq!(v.len(), 0);= v.insert(1);= assert_eq!(v.len(), 1);>>>7 7܅ > >A0 Returns `true` if the set contains no elements.?3????$@@$@ assert!(v.is_empty());@$@ assert!(!v.is_empty());AAA7 7܅ A AF*7 Clears the set, returning all elements in an iterator.B:BBCC$CC? let mut set: HashSet<_> = [1, 2, 3].iter().cloned().collect();CB assert!(!set.is_empty());DD' // print 1, 2, 3 in an arbitrary orderD* for i in set.drain() {D println!("{}", i);DEE assert!(set.is_empty());EEF7 7܅  Y  "4 }7 F FJM6 Retains only the elements specified by the predicate.G9GK In other words, remove all elements `e` such that `f(&e)` returns `false`.GNHHHH$HH let xs = [1,2,3,4,5,6];H: let mut set: HashSet = xs.iter().cloned().collect();I= set.retain(|&k| k % 2 == 0);I  assert_eq!(set.len(), 3);IJJ7 7܅ /  J J7 7J7$J JJJJK      RkK=K3LK In other words, move all elements `e` such that `f(&e)` returns `true` outLNMMMS( the predicate are dropped from the set.N+NNNN$NO. let mut set: HashSet = (0..8).collect();O1H let drained: HashSet = set.drain_filter(|v| v % 2 == 0).collect();OKP9 let mut evens = drained.into_iter().collect::>();P<4 let mut odds = set.into_iter().collect::>();P7QQQQ(Q'RR 7 7܅  Z   }4a7 /  R R7 7S7%S RRRRW% Clears the set, removing all values.U(UUUU$UV$V$V v.clear();V$VWW7 7܅ W WX  D  XX XXXX`+E Creates a new empty hash set which will use the given hasher to hashXHX Y@ The hash set is also created with the default initial capacity.YCY6 Warning: `hasher` is normally randomly generated, andY9@ is designed to allow `HashSet`s to be resistant to attacks thatZCZ?[@[[L\@]]]]]$]]0^^*' let mut set = HashSet::with_hasher(s);^* set.insert(2);___7 [`BuildHasher`]: ../../std/hash/trait.BuildHasher.html_:`   H`iC> Creates an empty `HashSet` with the specified capacity, usingaA `hasher` to hash the keys.abG The hash set will be able to hold at least `capacity` elements withoutbJB reallocating. If `capacity` is 0, the hash set will not allocate.bEc%c9%cCd?d@eeLf@fffg$gg0gg*8 let mut set = HashSet::with_capacity_and_hasher(10, s);h; set.insert(1);hhh%i:i  0jHjk D !   kkkk k܅ kkkkkklők4l 7 7܅ 7 l lr2%lHm m%mCn%n9%nCo?o@pppp$pq0qq*%q*%rrr܅  ۾HsszP%tA%tt%tJ%uEv%v9%vCw?w@xxxx$xx0yy*%y;А%zzz܅  0{H{{ǀ2 Returns a reference to the set's [`BuildHasher`].|5|}N}}}}$~~0~~/6 let set: HashSet = HashSet::with_hasher(hasher);90 let hasher: &DefaultHashBuilder = set.hasher();3΀7 7܅ 7 Հ ր D !   IŁ ف ܅ ,LA in the `HashSet`. The collection may reserve more space to avoidÂD Ń5 Panics if the new allocation size overflows `usize`.̓8$, let mut set: HashSet = HashSet::new();ل/ set.reserve(10); assert!(set.capacity() >= 10);"ͅ7 7܅   ՋOTL in the given `HashSet`. The collection may reserve more space to avoidÇO Ј؈P‰ʉ݉$ա%/K set.try_reserve(10).expect("why is the test harness OOMing on 10 bytes?");ŊN܋ 7 7܅   B Shrinks the capacity of the set as much as possible. It will dropیEAIԎ܎$+ let mut set = HashSet::with_capacity(100);.А%Ï%ڏ$# set.shrink_to_fit(); assert!(set.capacity() >= 2);!ܐ 7 7܅  ח0A Shrinks the capacity of the set with a lower limit. It will dropDNIғ< Panics if the current capacity is smaller than the suppliedړ? minimum capacity.Ӕ۔$%.А%•%ٕ$# set.shrink_to(10);%" set.shrink_to(0);ږ%!ޗ 7 7܅    K/ Visits the values representing the difference,28 i.e., the values that are in `self` but not in `other`.;љٙ$9 let a: HashSet<_> = [1, 2, 3].iter().cloned().collect();<< let b: HashSet<_> = [4, 2, 3, 4].iter().cloned().collect();ƚ? // Can be seen as `a - b`. for x in a.difference(&b) {" println!("{}", x); // Print 1ٛ%3 let diff: HashSet<_> = a.difference(&b).collect();6( assert_eq!(diff, [1].iter().collect());М+* // Note that difference is not symmetric,-% // and `b - a` means something else:(3 let diff: HashSet<_> = b.difference(&a).collect();6( assert_eq!(diff, [4].iter().collect());+Ҟ  (  (܅%  Ù    BA! (  Ѧ^9 Visits the values representing the symmetric difference,<C i.e., the values that are in `self` or in `other` but not in both.Fš͡$%<%բ?" // Print 1, 4 in arbitrary order.%& for x in a.symmetric_difference(&b) {ˣ)$> let diff1: HashSet<_> = a.symmetric_difference(&b).collect();A> let diff2: HashSet<_> = b.symmetric_difference(&a).collect();A assert_eq!(diff1, diff2);, assert_eq!(diff1, [1, 4].iter().collect());/ئ (  (܅Ѿ%     zq (  O1 Visits the values representing the intersection,46 i.e., the values that are both in `self` and `other`.9ǩ$ө%<%?" // Print 2, 3 in arbitrary order.% for x in a.intersection(&b) {!$Ы= let intersection: HashSet<_> = a.intersection(&b).collect();@3 assert_eq!(intersection, [2, 3].iter().collect());Ƭ6ŭ  (  (܅%     |>G ( ҭ ڭҭҭA* Visits the values representing the union,-? i.e., all the values in `self` or `other`, without duplicates.B$%б<%?ղ( // Print 1, 2, 3, 4 in arbitrary order.ݲ+ for x in a.union(&b) {$˳ճ/ let union: HashSet<_> = a.union(&b).collect();ݳ22 assert_eq!(union, [1, 2, 3, 4].iter().collect());5δ (  (܅%  Ț  {^ (  j, Returns `true` if the set contains a value./@ The value may be any borrowed form of the set's value type, butCC the value type.ٺ$; let set: HashSet<_> = [1, 2, 3].iter().cloned().collect();>$ assert_eq!(set.contains(&1), true);'% assert_eq!(set.contains(&4), false);(̼ؼ;@77 7܅ 7 E    I ukW Returns a reference to the value in the set, if any, that is equal to the given value.Z%CC%$%># assert_eq!(set.get(&2), Some(&2));& assert_eq!(set.get(&4), None);";@77 7܅ 7 {-P 7 E   % %% u/B Inserts the given `value` into the set if it is not present, thenE- returns a reference to the value in the set.0$$B$& assert_eq!(set.get_or_insert(2), &2);)* assert_eq!(set.get_or_insert(100), &100);-. assert_eq!(set.len(), 4); // 100 was inserted1 7 7܅ 7  uE Inserts an owned copy of the given `value` into the set if it is notH; present, then returns a reference to the value in the set.>$7 let mut set: HashSet = ["cat", "dog", "horse"]:2 .iter().map(|&pet| pet.to_owned()).collect();5$& for &pet in &["cat", "dog", "fish"] {). let value = set.get_or_insert_owned(pet);1 assert_eq!(value, pet);7 assert_eq!(set.len(), 4); // a new "fish" was inserted:77 7܅ 7 7 E   % %%  u      G Inserts a value computed from `f` into the set if the given `value` isJ? not present, then returns a reference to the value in the set.B$%:%5$%)< let value = set.get_or_insert_with(pet, str::to_owned);?%%:77 7܅ 7 7 E /    % %%7  77 %  u      7Q Gets the given value's corresponding entry in the set for in-place manipulation.T$# use hashbrown::hash_set::Entry::*;&" let mut singles = HashSet::new();% let mut dupes = HashSet::new();#͇32 if let Vacant(dupe_entry) = dupes.entry(ch) {53 // We haven't already seen a duplicate, so61 // check if we've at least seen it once.4" match singles.entry(ch) {%& Vacant(single_entry) => {)@ // We found a new character for the first time.C& single_entry.insert()) }( Occupied(single_entry) => {+E // We've already seen this once, "move" it to dupes.H' single_entry.remove();*% dupe_entry.insert();(%"  : assert!(!singles.contains(&'t') && dupes.contains(&'t'));=: assert!(singles.contains(&'u') && !dupes.contains(&'u'));=; assert!(!singles.contains(&'v') && !dupes.contains(&'v'));>7 7܅_ _ t*XՏJ7  u/A Returns `true` if `self` has no elements in common with `other`.D: This is equivalent to checking for an empty intersection.=$%< let mut b = HashSet::new();% assert_eq!(a.is_disjoint(&b), true);( b.insert(4);%( b.insert(1);& assert_eq!(a.is_disjoint(&b), false);) 77 7܅ 7܅        -2 Returns `true` if the set is a subset of another,5: i.e., `other` contains at least all the values in `self`.=$; let sup: HashSet<_> = [1, 2, 3].iter().cloned().collect();>$!' assert_eq!(set.is_subset(&sup), true);*%%* set.insert(4);( assert_eq!(set.is_subset(&sup), false);+ 77 7܅ 7܅        /4 Returns `true` if the set is a superset of another,7: i.e., `self` contains at least all the values in `other`.=$8 let sub: HashSet<_> = [1, 2].iter().cloned().collect();;$!* assert_eq!(set.is_superset(&sub), false);- set.insert(0);А%&-%) assert_eq!(set.is_superset(&sub), true);, 77 7܅ 7܅  ŀ* Adds a value to the set.@ If the set did not have this value present, `true` is returned.C= If the set did have this value present, `false` is returned.@$$!! assert_eq!(set.insert(2), true);$" assert_eq!(set.insert(2), false);% assert_eq!(set.len(), 1);̀7 7܅ Ӏ ؀uހۈ9P Insert a value the set without checking if the value already exists in the set.S0 Returns a reference to the value just inserted.3‚= This operation is safe if a value does not exist in the set.ʂ@L However, if a value exists in the set already, the behavior is unspecified:OP this operation may panic, loop forever, or any following operation with the setSÄ7JօȃMӆ? This operation is useful during initial population of the set.B? For example, when constructing a set from another set, we knowÇB that values are unique.7 7܅ 7  u0Z Adds a value to the set, replacing the existing value, if any, that is equal to the given؉]! one. Returns the replaced value.$$$! set.insert(Vec::::new());"5 assert_eq!(set.get(&[][..]).unwrap().capacity(), 0);8% set.replace(Vec::with_capacity(10));̌(6 assert_eq!(set.get(&[][..]).unwrap().capacity(), 10);97 7܅î  ul< Removes a value from the set. Returns whether the value was? present in the set.%CБC%˒Ӓ$ߒ$!%" assert_eq!(set.remove(&2), true);̓%# assert_eq!(set.remove(&2), false);&;@77 7܅ 7 E   % %͖%Ԗ uלoR Removes and returns the value in the set, if any, that is equal to the given one.U%CC%$˙$B# assert_eq!(set.take(&2), Some(2));& assert_eq!(set.take(&2), None);#;@ޜ77 7܅ 7î E   % %%Ý u, D !    %%şҟ  ܅ "77 7܅ 7܅        % D !   %ߡ%  ܅- D !   Gآ  ܅ 8777 7܅ 7GGGEGEGEG EGEG EQ ! >S7   = D !   Ǥ Ӥ܅ *܅  2 D !    %%  ܅ 8 ܅    88 Ȭ, D !   ͬЬӬ%%  ܅ ͬͬЬЬӬӬ87 7܅    ج&&& ڮ      4(  D !      (߱I    ۲<޲7 7    88ɇ   (* D !    &&˶ն ܅ J Creates an empty `HashSet` with the `Default` value for the hasher.M܅  ϸ<77 D !     Ը׸ڸI ѹ ݹ ԸԸ׸׸ڸڸ   ڈ7@ Returns the union of `self` and `rhs` as a new `HashSet`.CԺܺ$9 let a: HashSet<_> = vec![1, 2, 3].into_iter().collect();<9 let b: HashSet<_> = vec![3, 4, 5].into_iter().collect();< let set = &a | &b;м let mut i = 0;ؼ let expected = [1, 2, 3, 4, 5];# for x in &set {# assert!(expected.contains(x));& i += 1;ڽ assert_eq!(i, expected.len());"7 7ڈ  77 =77 D !     ɹ&&&& &     ڈ8G Returns the intersection of `self` and `rhs` as a new `HashSet`.J$&<9 let b: HashSet<_> = vec![2, 3, 4].into_iter().collect();< let set = &a & &b;& let expected = [2, 3];&&&Ҿ&&"7 7ڈ  77 477 D   ɹ&&&& &҈    ڈ5O Returns the symmetric difference of `self` and `rhs` as a new `HashSet`.R$&<&< let set = &a ^ &b;& let expected = [1, 2, 4, 5]; &&&Ҿ&&"7҈ 7ڈڈ  77 177 D   ɹ&&&& &    ڈ2E Returns the difference of `self` and `rhs` as a new `HashSet`.H$&<&< let set = &a - &b;& let expected = [1, 2];&&&Ҿ&&"7 7ڈڈ  77 + An iterator over the items of a `HashSet`..@ This `struct` is created by the [`iter`] method on [`HashSet`].Cׯ#! [`HashSet`]: struct.HashSet.html$* [`iter`]: struct.HashSet.html#method.iter-( D   (#  R  'ˑ%x ('ˑ%x    Xb?* (52 An owning iterator over the items of a `HashSet`.5D This `struct` is created by the [`into_iter`] method on [`HashSet`]GH (provided by the `IntoIterator` trait). See its documentation for more.K&$4 [`into_iter`]: struct.HashSet.html#method.into_iter7D !   O.;F    63 A draining iterator over the items of a `HashSet`.6A This `struct` is created by the [`drain`] method on [`HashSet`].Dׯ#&$, [`drain`]: struct.HashSet.html#method.drain/( D !     (ـ' (ـ'  Y  "4 } ("4 }    Y~e*  (?W A draining iterator over entries of a `HashSet` which don't satisfy the predicate `f`.ZP This `struct` is created by the [`drain_filter`] method on [`HashSet`]. See itsS̅: [`drain_filter`]: struct.HashSet.html#method.drain_filter=&$ ( D / !     7 77& (ئ& (ئ&  Z   }4a (}4a    %   \)ۢ}ϼ(  (@F A lazy iterator producing elements in the intersection of `HashSet`s.IH This `struct` is created by the [`intersection`] method on [`HashSet`].Kׯ#&$: [`intersection`]: struct.HashSet.html#method.intersection= (  D !       (# ( (     |>G (|>G      R  'ˑ%x (   (>D A lazy iterator producing elements in the difference of `HashSet`s.GF This `struct` is created by the [`difference`] method on [`HashSet`].Iׯ#&$6 [`difference`]: struct.HashSet.html#method.difference9 (  D !      (# ( (  Ù    BA! ( BA!      R  'ˑ%x (   (GN A lazy iterator producing elements in the symmetric difference of `HashSet`s.QC This `struct` is created by the [`symmetric_difference`] method onF- [`HashSet`]. See its documentation for more.0&$J [`symmetric_difference`]: struct.HashSet.html#method.symmetric_differenceM(  D !      (# ( (     zq ( zq =   '':_  Ù    BA! (&9? A lazy iterator producing elements in the union of `HashSet`s.BA This `struct` is created by the [`union`] method on [`HashSet`].Dׯ#&$, [`union`]: struct.HashSet.html#method.union/(  D !      (# ( (  Ț  {^ ({^ 1   '':_  R  'ˑ%x (  Ù    BA! (J(  D !         (     R  'ˑ%x (! م'   (B D !    ܅       $E Creates a consuming iterator, that is, one that moves each value outHD of the set in arbitrary order. The set cannot be used after callingG this. $$! set.insert("a".to_string());  set.insert("b".to_string()); F // Not possible to collect to a Vec with a regular `.iter()`.I0 let v: Vec = set.into_iter().collect();3$( for x in &v {$ ܅  7D  ى 7 7ىى  7$( D      (#7 7 {-P'   (- 7 7    (-( D  Ί 7 7Ί   (%7D  .7D  ɑ Ë 8777 7Ë 7GGGEGEGEG EGEG EQ ! >S7   79D!  7 7  - 7 7  BD! 7 7 Á>D!ȁˁ΁ ځȁȁˁˁGD!  Ԃ8ׂ777 7 7GGGEGEGEG EGEG EQ ! >S7 ۂ ܂:7D! ˌ̄ ф7 7ˌ 7- 7 7ˌ  7C7D! 7 7 7?7D! ǍH7D!ɑ  8777 7 7GGGEGEGEG EGEG EQ ! >S7  7F(D/!7 7nj 7'Î7 7Î (F7D/!7 7Ɏ̎ώ ێ7Ű'ƎƎƎɎɎ̎̎ (7 7 {-P9 7- 7 7  7K7D/!7 7 7'ڒޏD7D! 7 7 78(D!Ͳ&&• ֕   (#7 7 {-P' (Ŗ- 7 7 Ø (Ę67D! G Ͳ&&  őš8Ś777 7ő 7GGGEGEGEG EGEG EQ ! >S7 ɚ 7ʚК97D!ěǛͲ&&  ěěǛǛB7D!Ɯɜ̜Ϝ ۜߒƜƜɜɜ̜̜7 7ߒߒĝ 7ŝ6(D!žŞͲ&&  žžŞŞ  (#7 7 {-P' (- 7 7  (77D!Ͳ&£&ǣԣ  47D! ٿ'¤ Ͳ&Ϥ&Ԥ  ǔ8777 7ǔ 7GGGEGEGEG EGEG EQ ! >S7  7K7D! 7 7 7?(D!Ͳ&Ȩ&ͨڨ  ו  (Щ#ө7 7ו {-P'ة (ݩʪ-ͪ 7 7ו ת (ت@7D!Ͳ&&  =7D! ٿ' Ͳ&&  ޖĭ8ǭ777 7ޖ 7GGGEGEGEG EGEG EQ ! >S7 ˭ 7̭ҭ=7D!îƮɮ̮ خîîƮƮɮɮ7 7 727D!Ͳ&հ&ڰ  /7D! ٿ'б Ͳ&ݱ&  8777 7 7GGGEGEGEG EGEG EQ ! >S7  71(D!Ͳ&ճ&ڳ    (ݴ#7 7 {-P' (׵-ڵ 7 7  ($M A view into a single entry in a set, which may either be vacant or occupied.PE This `enum` is constructed from the [`entry`] method on [`HashSet`].H̷&з$, [`entry`]: struct.HashSet.html#method.entry/: use hashbrown::hash_set::{Entry, HashSet, OccupiedEntry};ĸ=$! set.extend(["a", "b", "c"]); $ɹ // Existing value (insert)) let entry: Entry<_, _> = set.entry("a");,2 let _raw_o: OccupiedEntry<_, _> = entry.insert();5$ // Nonexistent value (insert)! set.entry("d").insert();ʻ // Existing value (or_insert)λ! set.entry("b").or_insert();! // Nonexistent value (or_insert)$ set.entry("e").or_insert();ռ$ println!("Our HashSet: {:?}", set);ټ'5 let mut vec: Vec<_> = set.iter().copied().collect();8D@ľ, assert_eq!(vec, ["a", "b", "c", "d", "e"]);ݾ/(D! ǿ ӿ("("("_ _ t*XՏJ(t*XՏJk  nB('m <͛}-d(' + use hashbrown::hash_set::{Entry, HashSet};.- let mut set: HashSet<_> = ["a", "b"].into();0 match set.entry("a") {+! ('' (''.- let mut set: HashSet<&str> = HashSet::new();0'- ('' ('N7D!ٿ'  8777 7 7GGGEGEGEG EGEG EQ ! >S7  7A. A view into an occupied entry in a `HashSet`.1%'=$!' = let _entry_o: OccupiedEntry<_, _> = set.entry("a").insert();@$'+"& assert_eq!(view.get(), &"a");) $ match set.entry("c") {+"( assert_eq!(view.remove(), "c");+ ! assert_eq!(set.get(&"c"), None);$ assert_eq!(set.len(), 2); (D! ("("("k  nB( nB* kf`)zxo&s(V7D!ٿ'  8777 7 7GGGEGEGEG EGEG EQ ! >S7  7?+ A view into a vacant entry in a `HashSet`..%8 use hashbrown::hash_set::{Entry, HashSet, VacantEntry};;& let mut set = HashSet::<&str>::new();)8 let entry_v: VacantEntry<_, _> = match set.entry("a") {;ȏ $- entry_v.insert();. assert!(set.contains("a") && set.len() == 1);1 match set.entry("b") {* Entry::Vacant(view) => view.insert(),--. assert!(set.contains("b") && set.len() == 2);1 (D! ("("("m <͛}-d(<͛}-d( mf)S3v(T7D!ٿ'  ɚ8777 7ɚ 7GGGEGEGEG EGEG EQ ! >S7  77(D! _ _ t*XՏJ(d!>$'0. let entry = set.entry("horseyland").insert();1( assert_eq!(entry.get(), &"horseyland");+(k  nB(&  (I? Ensures a value is in the entry by inserting if it was vacant.B$'0!$ set.entry("poneyland").or_insert();'$ assert!(set.contains("poneyland"));'!('('& (&  (+ Returns a reference to this entry's value..$'0('!8 assert_eq!(set.entry("poneyland").get(), &"poneyland");;!8 assert_eq!(set.entry("horseland").get(), &"horseland");;7 7( 7 (;7D! k  nB7/'.'0(' match set.entry("poneyland") {"̌"%E Entry::Occupied(entry) => assert_eq!(entry.get(), &"poneyland"),H7 7( 7 75)$ use hashbrown::hash_set::Entry;#'0 // The set is empty0 assert!(set.is_empty() && set.capacity() == 0);3('- let capacity_before_remove = set.capacity();05 if let Entry::Occupied(o) = set.entry("poneyland") {8) assert_eq!(o.remove(), "poneyland");,. assert_eq!(set.contains("poneyland"), false);1C // Now set hold none elements but capacity is equal to the old oneFE assert!(set.len() == 0 && set.capacity() == capacity_before_remove);H( 7S Replaces the entry, returning the old value. The new value in the hash map will beV% the value used to create this entry.( "K, use hashbrown::hash_set::{Entry, HashSet};/"4 let mut set: HashSet> = HashSet::new();7"6"6 set.insert(key_one.clone());!"Q$ match set.entry(key_two.clone()) {'"$4 let old_key: Rc = entry.replace();72 assert!(Rc::ptr_eq(&key_one, &old_key));5" "&""Q3 assert!(set.contains(&"Stringthing".to_owned()));6( 7=(D! ŀm <͛}-d(߃@ Gets a reference to the value that would be used when insertingC"ցށ$'0ڨ(;7 7( 7 (̇ Take ownership of the value. „ʄ݄'.'0(""'A Entry::Vacant(v) => assert_eq!(v.into_value(), "poneyland"),DӇ ( (އ؋F: Sets the value of the entry with the VacantEntry's value.=ֈވ$(#͉'Չ03 if let Entry::Vacant(o) = set.entry("poneyland") {6 o.insert();͊('ߋ(&  (f  (k  nB(&ɍڍ  (܎ߎ  <    > ܽ$   > ܽ   ̏CϏ (  R  'ˑ%x($  R  'ˑ%x( ԏ  ޏԏԏ؏؏o    #  O.;F$  #  O.;F ! Ȑ  ؐ  (  Ù    BA!($  Ù    BA!( !đǑ ӑ  đđ (     zq($     zq( !   Ɣɔ  (     |>G($     |>G( !֔   ֔֔ڔڔ (  Ț  {^($  Ț  {^( !   t   Y  "4 }$  Y  "4 } !ʗ͗ ٗ ėėʗʗB 5E;   C  H RS#TV XYYZś [[\] ^^ _aaωjk mȪ nqst   $B R # Y Z    Ù   Ț jk m                                  * $( W9 c! (3 9 #  *:   * ̪)pT1 ! ̪  *   2  / , # .# 7 7  A , ,VgOдд   д/    0  7 7    "|0       7    8  7 7   EtSX- 9:7 7   yL9        ;<7 7 9 9  ;tKp9 9 99  +9+9+9+9G,9,9,9,9H,9,97 7,9 93 77 7 7  * The error type for `try_reserve` methods.-(|kڹF Error due to the computed capacity exceeding the collection's maximumI (usually `isize::MAX` bytes).!( ' The memory allocator returned an error*( 2 The layout of the allocation request that failed.5x7 7     y    y  77 7 7   zz 7 7 {777 7 7GGGEGEGEG EGEG EQ ! >S7       &IMNQTTUVVXX}~܄ۍۍǓǓғ͖ƜŨ٭٭İ˻˻ӻԿ7 77ȗ)ۆ͔ɲޜǩ̓ތ788<<7   7 7<7) 7 <7))<)7<<<??7   7  7?7) 7?7))?)7???BB7   7  7B7) 7B7))B)7BBBCCHHsѵݠȾѓܘɉ¡֡ܽЇڇҨ֨֫¶ؓĢ΢Ĭ Ƒ   ԓ   Ԙ         ß       Ӧ   Ū   ֬      β                 Ѐ         Т                        !!7;>AFJJSRWlՀӀſۂ҉ԊØܙɚӚĝǦةתիެ˭խ  ,9s 8 T  a  e   +https://abseil.io/blog/20180927-swisstablesWhttps://github.com/abseil/abseil-cpp/blob/master/absl/container/internal/raw_hash_set.h+https://www.youtube.com/watch?v=ncHmEUmJZf4))))))$6https://doc.rust-lang.org/std/cmp/trait.PartialEq.html%../../std/hash/trait.BuildHasher.html)/https://doc.rust-lang.org/std/cmp/trait.Eq.htmlenum.Entry.html)struct.HashSet.html2https://doc.rust-lang.org/std/hash/trait.Hash.html9https://doc.rust-lang.org/std/hash/trait.BuildHasher.html6https://doc.rust-lang.org/std/cell/struct.RefCell.htmljstruct.HashMap.html))))3https://doc.rust-lang.org/std/cell/struct.Cell.html Entry::insert)))))))))))))))jj)Z2https://doc.rust-lang.org/std/primitive.usize.htmlraw/struct.RawTable.htmlenum.RawEntryMut.htmlj)5https://doc.rust-lang.org/core/marker/trait.Copy.html);https://doc.rust-lang.org/core/iter/trait.IntoIterator.html))4https://doc.rust-lang.org/std/collections/index.htmlstruct.RawEntryBuilderMut.html5https://doc.rust-lang.org/std/convert/trait.From.htmlhttps://crates.io/crates/fnvEntryRef::insert))))5https://doc.rust-lang.org/std/option/enum.Option.html)))n))HashMap::get_many_mut)https://crates.io/crates/ahash))Fhttps://doc.rust-lang.org/reference/behavior-considered-undefined.htmlenum.EntryRef.html))))n))j))))HashMap::get_many_key_value_mutHashMap::try_insert)j))))))))))))))))))))))))))))n))))))II8;%899889%GII8;899889<ȩ 6?Ϩ<ene<1U< N<}34BB<$悚<CÂق<r 욓<t\,E<4C[O<o?Pf󂚨<XMG<)P<oT<ʅ2/Q<f,2_<f-<'Xc<ߓO<emm<eNbT3<l<л)t⍂<Iꦂ<&m&İ;<u!'<SԂ<+XF<öjE<X{5 t<x9 <AK<ɦK4<=iUW<zˀT<_Cς<$h1gݢ<S{<4ק<n7Ă<ґc\pr5<ޣr<2(/<L&<5+&b<3Jy\<hȫ<Iz9 /<sP)<Ҫ|aX<]<srQm<=bq<<ڱ^<xg]<^hCU~<53~<;d'u<ܵp7<&v<yǽ<cʂ<k@e^,<S3؂<N<((M<7YR‚<"M!6낚<*|]Ȃ<{+B!<׿fm <D-Q8Fz<߅$$&<pg2<*\k킚<x@肚<)ʅE<BHZ<, <5=HF<vz53|<ZI`o<$ h:xP<@‰EHm<WzVW;^<حޛ<wq M<*HϡF<+м<_;lQf<0lp9󂚨<+IǐsZ<eʯ<M?mh<b%!r<:﵂<TX T^Lނ<A-<=ܺ/ɂ<֊X󂚨<Q=8<\m 4K 5<,JtЂ<(1?NA<v˶9<2DB[<&fJNႂ< µ <?i[m<WE34ă<W<UrÂ<Szy-u<qh]B<X%<Q%5Wdł<4f8r<Y{+QY<nLp<Ιx{<Dc!<0%VX$<:Tt<$c<[+゚<:<ܴs#M<F/,<D<Gb٢<7ԙ R<%/`<d&w<gFo<8FT+W<=4n<1ԽH0<Pn+0<^<u2C<D3 i<*9eCz邚<pƂ<Ğ<ױS%<ωޑȂ< w<`m<[_ <ŠЋTN<{pЮ0<>w<܎$C<)2"=< 颴y` <`A<ib]E<x]Ѡ <I4Ԟ<(R<Ϯ2bP&I<_J}%*<H1/HU<6>I <傚<:A*<lG <ЉYT]^<Ux@<i$S]<VI62s<(Mmt"<pb)<Pced٫ɂ<Q)< l\<CVb2ñ<}Lr‚<.5<fN# Sʡ<Q|iz0.\<b]8!т<;2[o҂<b e0@&<Oщ˸j<TY+s<~; "<I4<2vC(<%(b<قeUޒI<Pܷ5<j3v7V<Etb+ߊ<eg˾$<iߠ<{3C^%<r <8g.A.<r֢ k߂<.p3b^<pr,?< ow<%W<Jm7i<g+z0Q <HQ3􂚨<?ڱ`<CAs,<r eĂ<ܰ<;<صW<t '{&<[kÿ<nQ#B;<ٙ~Ü<e75Ղ<<"{<1AȂ<:|h><-O<>ۻ <3Rߋႚ<)yH`@A<=jTe<C[}'Ԃ<9}U<.VF<8,)<M<!8'<ykH7<o/Y;x<ok<Oł<4S傚<6X)<-vEv<Kc?ijƂ<-]z=&<Ε0<UvFT><7.z<tt:< 'I<<!]Q F<yc-"s<+b:l<i%h<Fa< #GA<_l <6O\<?sw4a<Er؛<u .e<x:sw<g:i!<Hh<߱)y:><U"H<̿肚<hAR<S7<E#U, <ǃ+"p<!*.Ph<} <IF鍦e΂<{d6/<bm<e|ʂ<X2< A<p#zu7<d~rP<ł<)ڮ񂚨<"r?<-<љ͒<jd*%|}<UR ][< v)~z<Yh<Bl?+<Y?J<Ld\Y%<CdnӖ<88<P_q?<%ZIPU<0pޖ<A&C< z!<<KѠ1)<tRS<MVÂ< k^Z<Vc'Ղ<S%˂<:|3t<}NFx<m`G *<jM<2T< NM$<=2n<Yf<-iVŔE<, <Ԋk8,<8_C<3Wr`<-ۼ{c<ݛg,T-炚<۔\e <D= Â<H(Cx?ς<B&J<@q׌<j2O\<?uR<^x 羂<gyw<mEuق<bѺₚ<սy֔<X$< 7/& fZ<+ւ<CA%̂<¬nZH;ق<iy26e<>*[s<E佚<<!8[< .^<uvO/"<YK<Vpߙi<pjl肚<(<Ă]F]<ТV<uT-~{<;3=<cQނ+<WJ{<ǪMU7<1IU<1N;h<?¦͂<&'<ƨ>쇂<V>yּ䂚<D6 <`Fl<b#P꺡<0`_d<OH'<{Z/?5*邚<zd%<MÆق<E-n<$<3Z < ^1<|tkLE<sʡ'@d<MԳς<%Z <э&#"<j:#hP^<U&Xz<_40.<p2ς<ч֠PԂ<؟l\΂<E~WM4U<*2<Os 2U<sexkU<#+<q=g<lnT" ނ<56GLO<F0<"WE:K<}8<#q<sz;F<mS^<Xxꅂ<%Uz>b<":<TsMR<Jù g<~@1DZ<oG<6`K<k~伂<tLMQM<T4<: "<:6,J< Ii 9<~Aj<P`*<sUj˂<U-x ~<L X<GcEg<'<\HHt<2ڎs΂<NQ <@G2<0‚<jM<L&w.-u<din< [=r<F|gm<A킚<ytFqؿP<2%Dv+ǂ<TRG%z<qZ f<,BFK<ZJ {<{A<N-8QX񂚨<Z:V<EBc<o<|wn8<9p#ehP<=4Q<y;~=<H` <fQuQv.`<))<0޴<pGM<$3<{ܳ9<̍b\8<U6<ΥY2<y`z`5\<OUpԂ<u[PnЂ<N 2<}. <ҧ<n4"ʂ<뛃&q<mv<ok#< F]j<>=E<!go'<֒C[<:Hj<,LOek<7q$<A9̉3<T$?#>P<sCmWwҊk<w៸<-Na=q<xm^ә<9D~ւ<8kXӔޯ1<`\W=<⌫x邚<wN{m<cA܆]<ޗ<Fg<< ɾ󂚨<#DU~~<&ɇqj<.Ŀ 󝂚<lP>򂚨<XZ-<טRCAڂ<w{/+M<]ׇv!<.$wCb<UT4Li<OXg<tiOp>:゚<U9֢=<6&e<LD[IҾ<==*F򂚨<ʷR<:=V[<d,}< Ib:<R5 ₚ<wt;󹂚<qɄ6<8Dp<ns<9" <=h<} B4<%è< ^v<+7 1<0ti<<uMlS<qJS<㿮Y̭<{ꂚ< PU<u邚<bUYm:<yo`%<}ٿq<9ߣ:<nO<౞(Q<= Ղ<UWET<adP<7<Bs~ <lsV&<cꂚ<^l (<9 yƂ<pz@Ҭ\牂<AX%T< ;<JJ3G<_p}k<1+ }V<ehtt<҈䂚<-uk=G<#CO5܂<N 0<ffcNԂ<j&lG9<e+C<=(<6TxhÂ<j <t]WC<2!Ctς<Mӡ5<PDh&悚<|}&;F<Lq<gW<x}O<.!qKL%<3T_5<}沴T<}R<:-3ڂ<\cdя<l~=<stl <$;7X<y< m=N<iNRD<~xm&e<3Fq< x<LIcբ<}<|k<=PY<vb~<*zF"<4:I#><G\ڂ<뺺Y|<O`6Ȫ<a̰C;z<>f?<7=~ʂ<R8]@V<O˗ &<20><xAy<껩27y<X܂K<_b:<ăBɥ !<9$Cfₚ<V{?<ߌH[ܓ<Kw^<O'ς<@j1H$゚<x*i<fi3 '<xs0<56󂚨<&2X,c+<; <Hs<Vq!<K9s܂< mI<s<8Q<8~»ɂ<y]2)<*{Z<VtX<^\_:<\d$#<lX08<Jm2x<@^<j$<G: <Nk%+< \w<w)#`{<2"!L<Ox(< D^'W<B%-<k%乂<cg<eAAA<!TVo<_V=y<|rC;‚<,:]!Ȃ<& 6<q;<YC @ Â<vui<݋jTR<ODjk9 <YA< aI<oLt㸂<yF<:sc󕂚<X|)*ŀ<]Iy:<0l2V<qSJE@]< (S3Ks킚<POt<*M#hWu<$g{S,<=eIu.(<:زꂚ<_#Sjv<Mx#<5R)˂<-E:Á<#K] <ؐQ=ꂚ<QZ["<Du<h y<3qq^<*<H<OaK <*tF<1G H쾂<\1y g<o؂< IQk<S7nў<Vh2b<,gW$Z<L&mk<ǯ&򦂚<G+I$<-36xj< "X9<ӂ&|<~|Ђ<%Ra<oP<&a< <C,<L<sߔ}l<MbX1͂<$eM{~<_Ia<Ù;<o<2<p&}<|*<zHE<lv@e<Jpaؖ<a[(g<~-|Me<6\< ~) 3<X)Ig<Wႚ<N~FJxl͂<{肚<|6<ҶKŝf< .<Ce< '<] M<>K+ς<; ႚ<A߂<iki<F4+5[<''P<b1۔炚<cj܌<G}G<ZZӒ<"2)<|b:<qV$<d8Y킚<-O{:</0'ѵ<{j *<VAƂ<u^&*<8E<u$ײ<ád<uZwwǮ<(@.V8ꂚ<z9F:R<^m1)<+F<Mqʢ<6,-tPς<Ҥ<(8<%S<iyJۂ<5nm<[~<%#[Ղ<ng既<_ava>܂<iUî<Xf* 7䂚< FdVu<lU!nₚ<*TO<UZf<k</<<}ԣu<ߧSം<qek#t<3 m<X>Ӈ<kC2 <Gbl<[bsu <O$#<hK'@;6<f^0sR<,"#<P!ȏ<03Rvi<(m!<|-8<?SG=<QBJт<5%{j<\ag,<D8<Ww4G炚<;ܔ{߂<|B킚<O&f=삚<KX\q<"N/<Wҡ0~y<Z,I<\X 6-<E:qB<x]F<-ؖŻ<^낚<4>/;;<_,D<e􏂚<t[HFz<JXO<ɾu<oƲ%߂<=^K<1l*P<mN`<mNdO<ީU(MD݂<-k3޳<</uf@A򂚨<oIY<BesF6ʂ<(sW<ج IƂ<TaE<Ga2.<;Rӊ􂚨< qTh򂚨<$&.g<+ͽJւ<#(F\(Bۂ<Qp}<<[m<XֶF?<<*炚<Z)?<sH% <_s'<O}aKT<_Ҽuނ<сb_<'ú'ł<FU5򠂚<1=<t"<ќv<FRn8[<ً<VC. ׂ<`4z<e톕Ă<ܯQ<'i#l<a1B"۸<\V%ީV<Kwt<<͔c<QH<.E@+<L<ނ^<Yf?<zRK<[kq .F6<@ ѳd<9cꂚ<tJ}:<Bqdz<k4<r䂚<=8p< 7w3< Dׂ<*<;>03<1Wk_s<V Vkf<<_~I<fP<PWkC<4Cb<(ʛ6/< ~[pAn<5U ϭ<nh2L<f6<|8`<Ǩ٬롹<C]\XcR<ք؂< *ZP^<vGdJ'<NN/<IeV5Ԃ<1q6g<h,X<7QgG<+kWyA<N/ҡ~M<m-s<肚<lM/#<q*<luլN<vr0;<OGd2)<oHP <~At<Yi邚<K5 }+F<IW܂<E:F<gp<~oV܂<WB<xE,<w"dGc<7!ڱo<Wcy<"\r<HV;S悚<6b܂<̴'< qVږ< < ̊t<.<1IRu<,1ji<Bݱ<jv7< 3lH炚<.@xiт<> ,݂<AHLN<oo&<Qrrʾ<VhM</v-y<+{т<D<Ƀ@<i+o<cxˢl̚<ʘ<2Ų`-<b}X<*kY[<<= <n$."<45>4<(" <-D#lfM<c2U<|<c+ <rLdB<a^<$kB낚<0'1g^ɂ<?<xMh<Z/%Zبn<9Yg<lnb`)<nD˂<_ރaC<_vn<K!q,~u<N-5$<<dWf@m<=Z?<!邚<JM˕5<X:T%Y<ғ<΂<Ohcm <l`b_<" 9<EtP<zc3 .?c<PQ2-Az<֊bU]<*f_<\p<>NȈ<\!-<rɃ<g*r< <vúN0<Zef!aɂ<k൒/<,Bۉ<tu<QB<:pf<EP2}<l /-ޥ<VT]b<im҂<&a({ <7 Ro<E|Ղ<KyYJʂ<Lq <rN'oy<-~E 䂚<"~݂<$~!f< lqY C</|1s<@)O<)~/<׮8?*<O,ˢR<o锾<18 \`6<86<N8C<<(Œb<>ivM<t [l؂<ڛw3c<|<J;:</YuT<ۛ~<eJ*<_ˆ/Xf<2<trrR<êƎPJ<0iƝ<euV<rQ<( #zX•<O0R<VL炚<2r肚<d<䨜u< C゚<EضP<bNR<Uт<T=<|h u<JEkZ<޲yC< Rw<K<TS<;Oaut<bs<$!<GA<l.ϣ<Ό|R<$GP]< 7Dނ< K>=N*<q<-wŁ<z|Bu<$:}_<V:[< S&<.ds<Bc9Y<|YHVǂ<fɂ<,ao`<\e<@c 0<dR|<C毯炚<oh3i<eiB<J{;<Ӎ8‚<hL ꂚ</CG <c,bD< Q<xy~<=^(< v< 09 ڂ<#1Yس<|Rm7L~{<$jX<sZa+<ee4B(<ᦉ L𭂚<Ú^炚<MIN:Q)ǂ<f(كUq<Pr<W}XNV<+vA<0*<%.Nڂ<hчFDN<T-v@V<2bM݂<}fJi<nao<mu)U<S<Yh[<p#/g͂<0qa<lϤp̂<߂K'<D*C<Ym)zЂ<|cQꂚ<݀Zd"q҂</; <T*S<nP4G_<QXX2<YAf<G'<Dނ<ˠY(]<7ws<X}A<{B4G{z<M<(-j+< szӗ<{`<]<Oͫ鑂<oNoҝ&ł<n<,<@}<z=)<-6u7<fh$<;W[t<1~X<Pͩ<vY>u<1+RWm<n6I<z <hj8<U$BƂ<3زꂚ<R}<K}sl< Q'=<j6&ق<ݘ<>9т<>R_<゚<RCxI䂚< cd <A;e_<1fU8Y<g0{゚<%6@ࣂ<G 1oÓD<2=<22wp<"<#U<5<gq}(<wivw?<dI"iՂ<]x4g<Gj&Q<؍hꭂ<ogS<TAO邚<_4y<IW<TEp̂<ȋ5<>gep<{-"~aq<]bmL<zǎKϡ<URpn<$;TeJ<J3g<(}^T<%pk9‚<,_:Q<$[OAz<eVn<xN<]<5$v<5w9 <]Unʂ<wWM<H.<A"<!D6A&Q<7KK}<Ǩ<݂<Y'`d<A|e%Z< Hj<Ys!<V9?Eʂ<#R <`G{m<6\'e`</;qs<xrjP2Ћ<S < _h+<OcNa<cAȂ<NAhE4p<ews/<(NF<ѻۀɲ<uu<0 hS<+@<gC%.<ϧ<xck_L<:3;<ᒫE􂚨<KW,<<0ץ[</_v9 <S()&.΂<j<EJ ҈<êY0<Yo8b<7󣶂<L8s6<rKU<].<@y:ݪ΂<]w -<I2<7|˂<SÂ<JЮ*< **kH</<0H<fMDۂ<zye?I<-<FB_<|8<~&)NЂ<m</#{ڂ<0u<GKBc <v@7ւ<(8I<󻨵<<`B,"G$<3(<iZ+L<=38A󂚨<<-@<5Q z<,X֎(C<ߏ+꓂<qpS<#x<AuF<9;<EO<֕M'E<[zNS}Ȃ<ݜj<Qv/<Djk֬<k(1!$<+ы<yH{<<Gj "fB<ZAa)<lܘ(<ZiX<eeZ<(\R{<$<"$4io&<7)p~<0&bO< V<|)_`<K"$U<eSH<XɌ7<vrsWOA<?uɂ<(ϦGT<7<Yʂ<L Eғ<5H\<·aӂ<?97< _9$\<0U `<4z<񻜔{`<A<kބM< (iނ<<>2 <Lʰw <Tow<j-"v<4=^7< qHB<5o$<;H<Gwg8<4|b5w<sq゚<*<|:9ۿ<|.e)<*%<i<UL/wԂ<g-9<,!83h#<z\<ۥڛe<swzY~ł<"th낚<zh~˂<\+o-s<_Òh7<%Iip<{y><})b<6qc%<@v<o0<<KC@b.<NL>9yx<N{@<8P ~,<F ]b<>`?Ȃ<5zԄF<!Lqk<FT<g ؂<%1誂<D*͘ꂚ<>!K󤘡<YE+<쉟/<Ȳ2+P*<C<؈<J/9_&<xzMh<V<4cO(B<J{qH(<)R#<.pM)<)jJǂ<-qC0<Zf<$i<2h<\>nk< %ς<k9ᵂ<C)򂚨<qL"0;<β#+F<g,kLS<ڕiO<\0t<dق<L<|2.D)><ZP'F[肚<1+iV񂚨<o>4™<0Q]'S<T=8!< c|uₚ<_lTn.ʂ<~䂚<2<#j<,m>*7<ąX<~1/e<*LJ삚<@䪂<9={4z<PN|Q`zn<g_Hd<wL$TBj<l.<V71<uؔ1a<a r<NM4.<gX<-8䂚<a.r ?<VRrƸ/< N+̟<N4Q<vYق<a.<|R悚<'v3]<DI ˂< l;!:<I78'<aZ﯂<jH0<_]<,QWʂ<G 삚<EŸ<젇Â<Bh@ ʂ<Y˧PK<O'X< w؂<Od<A YJ<%~n<0Lf6.<+~&y|<Vw2󂚨</TzdY<u~o悚<oCwO<y|U<  u<'<s1<߮Ƃ<w}f<;W֪<?T~?<ъ+ <6I<7"L<'}[<t>B^<ЉR#S<ݰlN5_<O!3)<7)܂<u Q<_ + <z&Q.<ap,<1w%WV<>邚<$.*O<< -z<d>^RG)<"X/]y<WV|<1 <Bₚ<e"F<Oʭ<FxÂ<6R;<>DEH8<k'<m:&<-h巌<=[8>Â<!J١r<ry m <u.gdЂ<' ķb<1K3т<Z O<#A&x1<dчk8<O"<]< I<e)ks<<pwвa\<8 <:?o&<:i@ł<j\@]{<Kh"<CW^a\< <e7?B<eY҂< /NĂ<Tɭt^<pnE?<<xH:<~;&<&pys<&T\8<1Ovł<b̨<*Zi'<Q!hOk<]Sv<ؐd5*炚<+.<3{Gf< 9lǂ<məv_<ǩQg<&gٷ򂚨<'=K<kl̵5<d.1<St<>BC<²> <X@_<df}<e <=X< ;h<ɿHB<zL<4/&삚<r H؂<hǂ<o7 <VT <ڡd<<L5RFO<sΔf<i<=_%<O%Rq<w|iV<zmܨЂ<S<6(躂<nӎB< ~gDW<Ў ?Ԃ<l?C悚<g-|X $<14<ߵvB<yx|͂<9"S<QF| "<bk!g<9,}3<@t(S$<c[2<`kn3<n΂<eEKKŃ<_v1m<JlNN;<_ >CQm<!2<?Q0삚<v?0o<%F<b<Fhn݂<~[K%%傚<g' 7l<"<5d<8R}Q<a(Y <?Lxc֑<yu2<_W<>)QV<fV{<Tݗ켕<gqoR4<E ʂ<kkz<4}d,6<cPF[$ǂ<lMqz9<<;#$<H<moإ<)u<<[~E4z<*ȿ݂<`kP<|R{<el3ق<5.J<;[gyQ-Ƃ<U^w<^t{<澬 <Zʽ<mAk(􂚨<2z<ށx`1Y<ã >< %vC<FQ D 䂚< ??I#<r:&mC<f9<3<@hhp$<-]炚<ajSk<%׆*1ₚ<:mDݔ</ↂ<d c,%IH<k>aTX<(7JY@<2,<e޾Ђ<*cJ<ZED<ę <HpM#<I< !z傚<m}z<͜BpÂ<[<r< <<iEkIE< d#<lr<=L~<:u3<\f6゚<L K<<mBP<>=!|Z<Nf}yD<zo`<pN\{'<V:?P;<df" 񂚨<L/F[ <#uGk̂<1![Y<1mEdž^<&X$W<QJ<o|PR<Kcķ<<Q6SQ`a<ye<v q//<mS#<`73<i6ۇ<4F邚<oF<zJʉT<Qf<M/7<\܂<<ڕ[ySq< '}<`U>{ۂ<>[񾂚<â<y| S<`[sı{<(S?<Sy'xS<hU'.<x@<7< B]<{xQ <N!񂚨<˼;y<G^O<-#W<f 6~<렏3<zFkmڂ<­y}L<J~Ջ<vp uz<aj +L <r‚<[LY<oܒ|<Ci<ZÂ<5%TÂ<JϢ<nzG;<A ǟzx<rA:t<c*^vN<i< Bi<f[ )ւ<Bۻaz< Ca첂<6n<`Wڂ<RK8t<CZvpA{<|A}Le< <ޤS< f,}<i\ǂ<-bq<[ <qۊ5q<T:Q䶂< Fd&&<^c猰d<!ʌ/tb<¯Miт<Jw3󂚨<n_+<_/<mJ< Kt4<v^/<cF+#<O|,C`<\^mc<aSO;<;-.GD<-qC<?v |u؂<-cl<`'<3gZ<Wwp<%utrAԂ<}jWy<i$BD <FR+& [<*gZ <bc0<h<=<炚<3<"<1<%o<|\ق<R+Bҕ゚<Vf,낚<~f1p<maMH<:yU ꂚ<bB:{<G%<?4<#>g/)i<E^lg`R<Ĩܛfq<'ߖÛ8<3NP0΂<ᲫP<+%𐂚<^7WT<3G <˩QH<T悚<0Uo<bQQ悚<MƸR<t\7i<ɨHp<9ũIL<oV<1EG낚<r'<r8&<wt_<b(D<sS |ϕ<׆ <EfU/<()<,ó<)K7n <[<*=<k=[゚<h}<5LjyȂ<#3FF򂚨<:AShn<tA<ɡSzK<+<w;+И<d%^Ƃ<p<K6悚<{I<j8<\a0͂<{A8<9M<05Lp<}C52߂<48egւ<wל^C<rO<(\NF<ƍ$?<YR*5h<=Onj /‚<1OaE=Ƃ<$䓶<= '<~GX<,CLW<<ɒ!<O?AQ<z{ɉς<gG<DPi<©H窂<h(p#<<ǽݽꂚ<HI(L<`Kf&L<҉Ȃ< G͂<C;<7Oͪ"΂<:CeY<EXdtj<YqV<(4q<?zj <A_g<Tl肚< +< |.\dW<I^U݅<"jC嗂<;39<?jV<,G+<ߘKq!<ꮆx<k}^<eт<8Ui<e($uh<R`4<G%<rP< HE<%Oy<aZ<)yAY<rznH< ,G҂<l~H<MT<͡~#1X<4 B \߂<vy.B'J<4EA:G<0"~&u<x$\^<砦B48<:Jɂ<;_}I<(,`.<}S<}iz<>h҂<f3KBa/<&]<2YN<8^v1<qQ 9zcn<_Ne<>|<qvgc<_嘎<l\Ϗ<}Z)<SH<S{hO "<ndv:<^g]Udׂ< <ƘOj‚<_lK <J<$?؂<Yu*<}02|</ = <*CbO}<pFЂ<H<#dک^`‚<C@(ڂ<\u L}<fiw)<zd'<ɁW<i#2 z<5wk1<P?g0Yd݂<.)-#<Ϙv _<v<:1o<1Z 䂚<{QdWN<po$< 8<읠<<}ֳUo^<_~<RJₚ<3>B9ǂ<<k7!O.<aD<C*)s<WRN<)<Tv<  gs<VY I~<ʴ<5ܯ/<Tu[Xݲ<ݞ_<,h|#*<,/ƣ݂<BIׂ<Iܤ񂚨<,q<A8<ä&J<כ6ǂ<*⛰QNm<,ì7<\#|T< 谂<Gv΂<þGₚ<th َ<JUIY<e{ˈ炚<gL =傚<.=v5<a`UL<uQ$ 邚<(]󂚨<߽e `5a4<űB悚<$uy<}d_̂<}e<kg`ul<IV؂<oA:炚<'ݚ1(TU<q< 9<Җ <|<92LO<]׳<rcIj<Z)ȹʂ<RO|Ǵ؂<~#΂<()o<f^<٠K(=_<>Xpc<;<5X<^*< ]ւ<Yp@Â<h6c_ւ<cuPv:<<+h<5Ip<kfMCт<};<]ɴ<G22<ٶu߂<cªꂚ<4SlL<0u|t۴< <?sb_<bhL+_т<HtZ"f<eaI78<2 g1T;<ƶ=߂<=T<o@␋</`d4ł<4+g<ic -C<<8-#<L[a͂<A?J X<.=fD<cbq< D]ق<f5x<ҵ:<Ip}<5$i6<}[WY^w<ߣB%t<vZ*<ҡc<^%fς<6x Q<KIp<gp$z<$[ӂ<6KS]<"ZV<w{笫_<&M)>O<ly:JT񂚨<#пO<l)㱂<O҂<`9m܂</7gX<j=<^ǂ<=Gk<K<ɚA<OJ%<ACϟ<'<7jj䂚<|s֭3<ONi<S[I `<bZk~8B/<U< t1w킚<"S ӹ<$_ₚ<V% <rܧ7e<|o<.c<N'7wb:<6 gh<4T <,gR/O<X<6ϐ7< &C<?Lӵₚ<ZD傚<[v=\+<l5Nw6<G~0mb<O#C8Lx<50E܂<=WI<@m*J?<<@S0<=C3Ao<UZh]J<c<5|Ɵ<|mYs<;|+<jxX<<\҂<Th+ta<G #^e<U84@?m<oct(F< <"B<܇k,<R4$ <G@eт<FuD<Krw<kE<6W <d]<XCjP<5oς<5G<DUSg<8.Ђ<x.1r:<,)*= <xw󂚨<S41L<d˦<oFfpoiT<z=o x!<D<V,/s<z ԕ<~@j4*ɂ<+yT1<i3h<I+Ղ<h.<"#-YI<Q T+<=ۊ!<}ruO<qwXj<M:<xt ԧ<u0TU< 1<6 Q< ӄ<QJrt䂚</huDo<; q}᱂<6!d0<e#􂚨< ;&[<it<BgN YC<mz9-<4:wC<*Ax<X[f<F>゚<c7<<(ہ<Wlpɷ <u ݂<Xj<TuЂ<M~*<&Hk<<M$Km<L& <T>R'6< eς<*,nT^<Vͷ~҂<ĽWׂ<ʥE{<N"GgV%<B<` A<т\邚<zp<0;j܂<%X6X7<FǑy<a` a< rnݰ<'ChƂ<i > pQ,<I"i~<o {&)<9ҥ^4-ꂚ<[Ğ<ZdRdB<bx 1h<g@{.< -#S$v<4my<F{>.˂<N xdy<os80y<kjH =<e;y2</yxmy!<GxԙEϱ<a"1g<<5w E<2b,e<ίrk<w!)b<뼐AӍ<1v J)`< VmF<w[<GH悚<oUfYS<&6u<EOAo<V$2B̂<j%cZ<1A7;<݋W <Â<N{^󂚨<׵ܲ<n%<PEY<^ <.>&9<\zwՂ<7[ oÂ<[ߘ<X` ZF<uaM< R<w/d͊<̪w<\Z{i< ;2<r瓛< wݶV<QXUH̚<&+!}<k^.X;悂<7hI<9{悚<~ B9y<tBc<if˂<A=*"< 8$CDP<0rZCc<S J<qq&v<=s<n<N<9c@<x3)i<2qR#<5iSٟ<}fS^j<ji؂<li7x<TO<:=zz҂< yW6 <ԡd>g<Tp2΂<VԠFk_I<× ߗ<(<44P<fY%<ekN8<vhòP<iƔ<_iEW䂚<Ⱥ::<Ko炚<CCF<PFQ]<reG3<H{B/g<<(<wէ0y悚<1;G E<ͷ\ K M N O hK s.4<;E IvOU^kNwT Rs(4= _   ̸ 9 d    c` 0` L` 7` V` ;` 1` s` X` Z` &` .` }` 5` $` >` w` l` _` H` n` T` u` y` B` a` ]` 3` d` F` D` R` J` =` \` r` rPVa befbj  `/ 2 4 M PQI_~`^be%f3giggGh_hh2iIi}iRjjjGkkSlllwmmm n&nCnnno,oHoogp qq2rJrrrrs@sysss&tWttttt uEuuuuCvv-xKxxx.y|yy-zzz={{{{|}}~~~iQځDŽ gLJˆnȉj"Nj<aAhƓ`ϗK9&gxǤ8 {˫eT 3/2ѽ@gп~Fu<|Kh7 Ij wm"J?b5 U Dfu JGh?2TO/(s*X,ao {!Mn\ cA  4(T(t()**-,{,--.-/0U227:;<0>?A CGK!NQ"]U V >X&]b/l6npHstw,} &=T^j+٢)-k,6,ٴ(x<91LVQa#,8^l } 9Iu" y5f)  I!o%%[&|&&8''j(()i*_++2//00$12566778==??VFyFFTHHJ4JJKoLLRMMNlPPPQRVV7_`Tm oo qq<xxxyFz{0ł"#P -˔r LM2 ƥR7%`A !8}!^$kSVZsw+  i(1^6 X {    4 Yz [|N   !!"##$)*%***,+,./026T666D8V9 ??=@VAZBCDEE9FRIhJJKNOOORdSSPTTKUUBVVWW  o m 2 L  z - 2 ]  { x w H   O ? < ; @ k " $_ +  $ x T S        ; x ! B !  # $ u% % ~& x' ( * ]+ , $. J/ 1 (3 a5 y5 5 5 5 5 A6 u6 6 6 7 S7 7 7 +8 k8 8 9 O9 9 9  : X: : ; F; ~; ; N< l< < < 4= v= = > L> > > ? 0? O? ? ? @ @ A A 1B B B (C bC C D RD D PE E bP QUabef_g\j>" l{  W `/ 2 4 X= @ agWhBijnn$oBrOttuxrxxUy ~C/=,j˼{E@14|iA6!t"ifoi#!8/z-'5)2w;t%~4Qs 9$%&(J)*./0m5h6m7&=>EGIuJLN PvQOVk_lm xy0{I*# '.5:$; M  qB"W#])G,-e/57>@ C"EI"OSU VVXY"Z[]^_/acddf}ghijzk}moopqsx ) k0  Z V d   / / 1 C TI CO  M $ ߓ B  ,    F F N  ׯ  B h ˼   h   Q "  z t     L  :  5   f  , '  `     g  B   3   9  5 k6 z9 : P: : @; v; < < < h= p= F> |> ? ? ? A A B [C C KD D E %%  !                                                                                                                             !          ##                              ##        ##  ##                                                                                                                                                          ##                   !"!$$$                aPQQ_Tabef;g}ggshh]iiZjkk)lgllNmmmn,nWnnnn2o\oLppqq^rrrrsTssst.t]tzttuYuu vWvw3xxyyAzzzQ{{ ||d}~~~oۂ~…!rɌڎ }'#TIz?ԱZf`U|i[+Q }L^S$wJKmyN}9Dz.v`(Tu. &:(Z()**,./S17:<=?wACCFnJMDQTVWQ]ajmnpsw)}|VwR̓U NQO*uxd @'#! $v%b&&M'(~*%.9/40914567<=?D]FFiHHIJJvLLgMNsPPQUV'^_Ik@oooqLqqvxxx̂e*Oj^ΓaH,XCYGi/ k@-w$p ` = _   `b W   !H!!"#' *,**+/396[66Y8F=N?#@kACEEIoJJFNOORkSSeT`UV-WWXpZ%\T\\]_aalbgcd%eefWhhBi=jkmnnoruwz~ڂ)~G3|v@Qͻн2[V5*"N    8 8 8 8 8          +  }. V/ \0 0 3 45 6 $8 U: < n@ jB E H I 3K L 9N xQ ^S NU W e[ ^ a Yd g i Ul Wo hr My { ~ B ڋ 5 E N Û @ ş Y < A 1 + ۭ ( ñ ~ '  M ӹ ) 4 _  I i   6 e ^ 3 b  2 9 r ) ]   Q G 7 5   V   i # $ I   0  *! " f$ $ % % & ' ( * r+ , 9. _/ 2 4 g5 5 5 5 6 I6 {6 6 6 &7 g7 7 7 ?8 8 8 9 W9 9 9 l: : : ; ; )< T< < <= ~= = = = > > ? 6? ? -@ @ A A B uB B C E E MPPPPPQC_x`Xbdde eee%e/e;eGeSe_ekeweeeeef fffff gg!g-gcggAhYhh,iCiwi j j(j4j@jLjjjjjjjAkkMlllqmmmn n=n|nnno&oBooooooapqqr,rDrrrrs:sssss tQtntttu?uyuuuu=vvvx'xExrxxxx(y`yvyy'z~zz7{{{i|u|||}~~~~~Mc5Kԁah‰c5Z:aXǗDޛ2H`q1@Pbtë)9K][k}M,(ɻjͼ+ɽ8`ɿwls?n5uDaIay0B3Kcp6NfC8mo~C[ .6N%=_nCv(@a8i +MHf~qo( !+9Ql#!9Q%Z8Ph3AYtFg|/=U\U\fpz  # / ;  '''(.(N(n(9)O)e){)))*+++,',u,i-----...&/~000002-2C2O222227:;;;;;y<)>?ACGJNQVUV7X]bbkk/npAs2tJtbtzttw}ނlj߉64LҔ?WKcay7O_qҢ!ɨdD\l~߯.Ҵ!pӶ4]uι2E7O2JW'?Woe~2Jbz8F^vSku    2*B ;Sk&>Vnr._ " B!%5%M%h%% &$&<&T&u&&1''(3(K(c((J)b)z))*2*J*b*X++../+///0000112o5}5556j666 7o7778(=6=N=f===>>>??EEFF4FOFrFFGGHH5HMHHIII J-JwJJJL L8LPLhLLKMMNNNNPP5PMPePPPxQQQQRRQV_VwVVVm_{_____ `mm{mmmmmnooo0qqqx x8xPxhxxxxyyyz'z?z0{H{`{x{{M[sчI.<Tlr& 1IayĔ ":Rjؘ-E.F+-;Skͨ3K/=UmY:1vWcL7OS $<Tlp)AYq0H`x7Ogx[b<Tl$2Jbz*'?W$<Tl=Um     / Q t  O g     wRsTus  / G    ,!~!!D"R"j"""Y#g###$e)s)))))))***%+G,U,c,{,,,,,-..(.@.X.p..g//////05555556+6M666777 8%8=8O9>>>>>??6@@AA7AOASB CC3CKCcC{CD(E6ENEfE~EEE2FKIIJJ1JIJaJJJN(O@OXOpOOOORS-SES]SSITTU,UDUU V#V;VVVVVWW5XXXX.YYYY$Z V n d  ) ~ D \ t 4 L   2 H . < W o ] u  8 P   2 S 5   3 K l J b z J b z P ^ v ϫ ͭ ٯ  w  % = U p F T l " l z Ź  H ͼ ۼ & ν   6 Q ,  ; n d  S a y " :  ( I  |  t  * B 3 % F ( 7 N f ~ x h @ X p f +  - E  ; I a y s h &  + V , D \ t ) A Y q p  ) A f t     H  8   5 4 ! 9 d  % = X  $ : D \ t       q   5 M L 5 C [ s          x ? W o  4 q    # ; ! # $ n% % i& w& U' c' q' g( u( ( ) ) ) ) !+ /+ =+ U+ , , , , - - . . / ,/ D/ 1 1 3 3 3 "3 15 ;5 E5 O5 [5 s5 5 5 5 5 *6 ;6 o6 6 6 6 6 6 7 M7 7 7 %8 e8 8 8 =9 I9 9 9 9 : R: : : ; @; x; ; < H< f< < < .= p= = = = > F> ~> > ? *? I? ? ? @ @ A A A +B B B !C [C C D KD D IE E kF sF {F F F F F F F F F F F F F F F F F G G G G %G .G 7G @G IG RG [G sG |G G G G G G G G G G G G H H 'H ?H HH QH iH rH {H H H H H H H H H H I I I ,I 5I >I VI _I hI I I I I I I I I I I J J J "J +J 4J =J FJ OJ XJ aJ jJ sJ |J J J J J J J J J J J J J J J K K K K K K K K K K K K K K K K L L L #L ,L 5L >L GL _L hL qL zL L L L L L L L L L L L L L L M M M M %M .M 7M @M IM RM [M dM mM vM M M M M M M N N N N vO ~O O O [P cP kP sP {P P P P P P P P P P P P P P P P Q Q Q #Q ,Q 5Q >Q GQ PQ YQ bQ kQ tQ }Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q R R R R (R 1R :R CR LR UR ^R gR pR yR R R R R R R R R R R R R R R S S S S $S -S 6S ?S HS QS ZS cS lS uS ~S S S S S S S S S S S S S S S T T T T )T 2T ;T DT MT VT _T hT qT zT T T T T T T T T T T T T T T U U U U %U .U 7U @U IU RU [U dU mU vU U U U U U U U U U U U U U U U V V V !V *V 3V [ G[ P[ Y[ b[ k[ t[ }[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ \ \ \ \ (\ 1\ :\ C\ L\ U\ ^\ g\ p\ y\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ] ] ] ] $] -] 6] ?] H] Q] Z] c] l] u] ~] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ^ ^ ^ )^ 2^ ;^ D^ M^ V^ _^ h^ q^ z^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ _ _ _ %_ ._ 7_ @_ I_ R_ [_ d_ m_ v_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ` ` ` ` PPPP QQ_Nabddeee e*e5eAeMeYeeeqe}eeeeefffffggg'g5giggIh_hh4iIi}ij&j.j:jFjTjjjjjj kklSll:mwmmm n&nCnnnno,oHooooo8ppzqqr4rJrrrrs@sysss(tWttttt uEuuuuuCvvwx-xMxxxxxx0yfy|yy-zzz={{{o|{||P}}~~~~Si;ǂj otn ]Ŏhϗ?4uOzѩG˫0eb*EQyK1лqԼ4ѽ@gп~szTFu<hPh7I:Rl w=Um*$LAtvJb5=,DfdL}/GhAp2VQmxv/* 2@Xs,(@Z.a?WqY:H`{ !Mn6D"eZaku   ) 5  &''((4(T(v(?)U)k)))**++,,{,o----../0000?1232I2W22227::;;;;<=?bA.CFYJsM/QTVW<]abjkmYprJs9tQtittw}gAbΉ%=;ٔF@Rjh>VШKc9x<d|չ:>X !9q`.F^v` !9Qib]?Me}Zr|    91KBZr-E]u$ 7h+ $$%<%T%o%%&+&C&[&|&8''"(:(R(j((Q)i)))!*9*Q*i*..//2///0000 1$14v55556q6667v777</===U=m===>>>?DEE F#F;FVFyFFGG H$HV\+C[sy0H`x7Og>Vn9&biC[s+9Qi3.F`+C[sD\tY      6 X {  V n    ~Y[~z  6 P    3!!!K"Y"q""#`#n###'l)z))))))*%***.+N,\,j,,,,,,- ../.G._.w..n//////3555555626T6667778,8D8?=>>>>>G?@?@@A&A>AVA\BC"C:CRCjCCD/E=EUEmEEEEHTIIJ J8JPJhJJ1NN/OGO_OwOOOoRR&S4SLSdSSPTTU3UKUUV*VDVVVVVWW>XXXX7YYYY+ZCZ[ZW[[[\\?\\]]]]]L^^^^_____`Va+>LZr<3}F0)AYA1?Me} ~  t9 t9Qio     5  x      , y A            #   #   #   #   #   w ~      c w       ^ t   n    *    Y    | ! "! ,! 6! @! G! Q! \! d! p! |! ! ! ! ! ! ! ! ! ! ! ! " " " $" 0" w. / / 7/ P/ r/ 0 0 20 H0 0 :1 1 1 1 3 5 6 8 A: < o= Z@ |A VB B C C E H H bI xI I I K vL $N N vO O O cQ IS 9U rW P[ \ ^ h_ {a ?b Dd d f g vi j @l Bo 8p Sr s s 8y { ~ w Ѓ - ŋ Ǐ ߏ T l - E ] u m  0 K c { ; U ! 9 Q 5 C ^ v d ~  ' ? ! 9 > " : R ' Q i , Q i  W e } $ ԭ  !  , D \ w M [ s F s ̹ " Լ  - ޾ % = X 5  B u T m  Z h ) C  / P "  {  1 I  , M 1 @ U m q G _ w 4   4 N   B P h z o /   2 ]  3 K c } 0 H ` x y  0 H m {   Q  ' A $ < =  ( @ k " .   , D } A K c {       z  $ < T  < J b z       4   F ^ v    #    * ! " Q$ $ u% % p& ~& \' j' x' n( |( ( ) ) ) * (+ 6+ D+ ]+ , , , , - - . $. %/ 3/ Y/ 1 1 3 3 3 4 65 @5 J5 U5 a5 y5 5 5 5 5 C6 u6 6 6 7 S7 7 7 +8 k8 8 9 C9 Q9 9 9 : B: X: : : 2; h; ~; ; < N< < < < 6= x= = = = 8> n> > > ? 0? q? ? ? @ @ A A B oB B B MC C C =D wD D uE E qF yF F F F F F F F F F F F F F F F F G G G G #G ,G 5G >G GG PG YG bG zG G G G G G G G G G G G H H %H .H FH OH XH pH yH H H H H H H H H H I I I I 3I M GM PM YM bM kM tM }M M M M M M M N N N N |O O O O aP iP qP yP P P P P P P P P P P P P P P P Q Q Q !Q *Q 3Q U GU PU YU bU kU tU }U U U U U U U U U U U U U U U V V V V (V 1V :V CV LV UV ^V gV pV yV V V V V V V V V V V V V V V W W W W $W -W 6W ?W HW QW ZW cW lW uW ~W W W W W W W W W W W W W W W X X X X )X 2X ;X DX MX VX _X hX qX zX X X X X X X X X X X X X X X Y Y Y Y %Y .Y 7Y @Y IY RY [Y dY mY vY Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Z Z Z !Z *Z 2Z :Z BZ JZ RZ ZZ bZ jZ rZ zZ Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z [ [ [ ![ *[ 3[ <[ E[ N[ W[ `[ i[ r[ {[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ \ \ \ \ &\ /\ 8\ A\ J\ S\ \\ e\ n\ w\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ] ] ] "] +] 4] =] F] O] X] a] j] s] |] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ^ ^ ^ '^ 0^ 9^ B^ K^ T^ ]^ f^ o^ x^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ _ _ #_ ,_ 5_ >_ G_ P_ Y_ b_ k_ t_ }_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ` ` ` "` ʌOgghRhh i=ioiijj2kk>lzllbmmmmn6nlnnnooxcxxxxyFysyyzozz({{{M||}+~~~~~ `{ HƁʃ=NRɍ?)ےYmە</n<XϢ]!^pGYҭy2ӰnٶǺXƻ޻LƽuEL3W_I$D`EJ^v(-H`eKcQK(l0Y@ 1X &z&K:WyL2d=Y!Y~E#E}-x{>8 uQINf_`6NRa7MeVnE4` TRV8 B'''(((F(f((L)b)x)))_*/+++,$,m,-|----u.../00001*2@222227:6;;;;;W<>?AuCgGJMQEUV&X]'bb>kk npssGt_twttw^}:܉ˏ3IT`$vɡLmʢcި\ޮYzׯ& δhQ϶,r+ L/G4<Tl],F/G_w[s6h0r 3   *M'?~Ph;Sk[ZSm@a :!$2%J%b%%%!&9&Q&m&&)'''0(H(`(()_)w)))/*G*_*/++[./(/F///0f001114555M6666G777l8\<K=c={==@>>>>?mDFF1FIFjFF/GHH2HJHHHI J%JZJJJTKL5LMLeLL MMNNNN=O2PJPbP~PPPQQQ5RRUtVVV}^_____kmmmmKooo qgqq w5xMxex}xxxxZyy z$zVnXE]u_Ld|f8?{QikG_w $<T9QiRjl    ) J l   d |   ~ $"k$mE, D d   !c!!!g"""<#|###/()))))*9**++x,,,,,R-%.=.U.m...|/////0j4555 6%6F6h66f777 8"8:89=>>>>Y?.@@AA4ALABB0CHC`CxCJDDKEcE{EEEEIIJ.JFJ^JzJJaNN=OUOmOOOORRBSZSvS%TTT)UAUUU V8VxVVVVWXqXXX YjYYYY9ZQZ![[[[\0\\\Q]]]]$^^^^_E____`aXapaa,bbb0cHccc'd?ddddde fifffgbgggg.hFhbhitiijjnjjjkTkkkyllAmmmmmInn3oooopyppppHqqqqr>s t$t7Og}e[svk',?Wc "<.;G_w } F   + C    O   " : O             o        k    {    Q   7    Z . / +/ D/ b/ / 0 )0 ?0 0 1 p1 1 1 1 L3 5 7 S8 : < |= = @ A B B C -C F H I oI I I J OK L vN N O O O Q S U W [ 8_ b d bg g -j j l o Fp p r s s t y :| | ~ Z с  / 1 Տ 9 b z ԑ ; S k ;  & ^ Y q ҕ I  / @ Q l r  5 M ٛ F  / K  0 H d s _ w w _ w g s S ǭ 1  5 : R j m i  6  A +  3 K l x ) T , E A v  7 g h % A I C ' ?  z " >  d  s  c { K  @ U m ?  v  * B  e ^ v K 5 : * } r  ( D \ A Y q > V n ?  & >  v `  P L !   5   2    6 R j { " : R   p Y q Z        2 J  i X p N  *    y b P  T l   J  f  8 h! " $ 0% % M& 9' &( ( ) ) * R+ N, , - . . A/ o5 5 5 5 5 "6 76 S6 6 6 6 6 6 7 <7 }7 7 8 U8 8 8 -9 _9 9 9 : K: : : ; ;; q; ; ; >< _< < < = E= = = = > A> w> > > #? B? z? ? ? s@ @ A A #B B B C VC C C FD D 7E ~E OF pG G G H A .ʒL̘M 7y}ߠVգaWi[@Rr!°]zȶչ 3׻xۼ6k4;z7N8p3O4Y9WoAYnTD\,&V&C{!QiD3Mo;!N6OCw ;XSt}d,G_|.O/G\ !0&F^sdOg"*VwJK$'g} &''(!(<(\(x(E)[)q)))O**++,,;,,u----J..../0001#292Y22227::;;;;G<>?AdCVGJMQ4UVX]bbkkm~psLs@tXtpttwM}҅Չ,אB_̖MؙYoEfx5ר *yRsǴ6#ȶڶkXܹ!־EZ(@#b5Me}+z (@XphTlaya    C 8MIay4Ld' &B9/j- !$+%C%[%y%%&2&J&c&&&n'')(A(Y(((X)p)))(*@*X*+m+). /!/>>>?DEF*FBF`FFFGH+HCHHHIJJ8JJJKL.LFL^LwLMMMNNNN+PCP[PtPPPQQQRRUmVVV-^_____OkmmmmAoooq]qqv.xFx^xvxxxx yyzz5zJz>{V{n{{iςkLJ߇-TJbz̋1'?Wo˒ٔ0H`9Θ;z<[_!6Iay\*ۨmAX)Kc{GH#ľ@Bl,"+ )W-E ^2Jb*{7OgG>VnNE]uUF.5qJbzZ@Xp55Mb2JbzKc{[f    " @ b   ] u   m ac% = Z   !Y!!!`"x"" #u###'))))) */** +0+q,,,,,,.6.N.f.~..u/////0355566<6^6667788388L=>>>>O?$@A@@A-AEA B^B)CACYCqC9DDDE\EtEEEEIVIJ'J?JWJpJJWNN6ONOfO~OOORR;SSSlSTTT"U:UUUV1VFVVVVWX@XXXX9YYYY2ZJZ[Y[[[ \&\u\\]]]]^N^^^^____``Qaiaabbb)cAccc d8dMddddee8ffff1gggg'h?hXhhciiij]jjjk#kkkhllmmmmm8nnnoooo9ppppqqqqrrtt5tMtvxzz~,bwƉމD׍)6ϙmDТ®-E]"δayѹI:r70H`sTleZ5>1v~2$1{@Xpv   $ <        3 H g q p  o          h |       d z   t    ,   ' [   J . / $/ =/ X/ t/ 0 "0 80 }0 0 <1 1 1 1 <3 5 6 C8 : < u= = @ A B B C &C E H H hI ~I I I EK L eN N }O O O Q S nU W [ '_ a d Bg g j j l o ?p ^p r s s s y )| x| ~ (  q ى  l Ώ ( w [ s 4 L d * o   T R j B W  ( r  S J e } ș k  . F ϛ  ( A @  ) A Z b X p f X p V l . ޭ + ȱ 3 K c , b z  R ֹ ,   7  , D b 7   J | x 4 o u  o 0 E W   7 $  8 H   4 3  B \ t : / s N f ~ . { 6 # ; P T W o : v 1 ! : K : R j  7 O g . {   7  e   S  . C  + ?  / H Y :  3 K   f R j I      |  + C  ( Q i       o X ?  M e }  @  %   1 W! " u$ &% % 8& ' ( ( [) ) * K+ #, , }- . . :/ h5 5 5 5 5 6 06 L6 ~6 6 6 6 6 6 27 s7 7 8 K8 8 8 #9 X9 9 9 : D: : : : 4; j; ; ; 4< U< < < = >= = = = = :> p> > > ? 8? s? ? ? b@ @ A A B vB B B OC C C ?D yD &E wE >F iG G G H 5H _H H H H "I LI vI I I I K UL M N O ]g<ghThh i?isiij6kkBl~llfmmmmn:npnnn o!o@oo^ppqr?rxrrrr.sgssst9tltttt2umuuu)vvwBxoxxyRyyzszz,{{{Q||}o~~~~,,ˁσ:BSW΍D`.^Ҕ7ʙAQ| N`r7I[:i{7ذs ޶̺gȼx zJQLg dN)IeJOB-.jA1y-y5fV}>+3 \~Q7q^&fs(J2clfzhe<5p }9e8Y= '(*(K(k(2))d*+r,N--.#/[0127:t;\<>?AzClGJMQJUV+X]bknp#sswc}ڌJ]oϢaj|ܯ+QдmѶ1F0 9"b{Npw u /R"!XE ?!%d%%&r&&.''((G)*4++.K//k00155e66j7q8<}==y>?zEKFoFFGH5II*JrJJKL%MMNOPP5QRVV___7lmPoooqlqqwxxxxy-{ނ S<<ΎŏK^ӞʟѲ]^2ھOTEQG`#@$]+d2k.=D7p!8qN + O q  J   'p)rngi   !h!!!"T##()*>**+D,-b/05'6K6m66794>>^?3@@#BCODEEE$IIJJfNOOORS{S*TTUUVVVWXXYYZ&[[5\\\])^^_`,aa1bbccdddeffgzghghiyiisjjwk~llzmmNnnlo ppqrs9v+xzzBBdi/8ғLޙSߢ`1׵ö*jEnp,1 Oh&cTahV-<  <             C   x S  a    <  _ . -/ F/ g/ / 0 1 1 Q3 5 7 X8 : C= = PA B B F H QI J TK L {N @O Q S U W [ =_ b d g Sj l p p [s t y ?| | ~ _ ց  U > J ! @ ܓ c ?  E ) ,  ޛ P  i x C | C l  ɭ  : l  ; x " F M q . Y e J N   m F  w q   C  I P E 7 D j 2 P c  I a ) $ D ] { &  W o T ! u ? _ E      c  } U   O   m! " $ K% % O& ;' I( ) + q, - / q5 5 5 5 5 '6 96 U6 6 6 6 6 6 7 A7 7 7 8 Z8 8 8 29 a9 9 9 : M: : : ; =; s; ; ; C< d< < < != G= = = = > C> y> > > (? G? |? ? @ x@ @ A A (B B B C XC C C HD D jknnoruwz~ۂ* H4}wBRλѽ3\W6+#O         ; ; ; ; ;      , ~. ]0 0 3 55 6 %8 V: < o@ kB E H I 4K L :N yQ _S OU W f[ ^ a Zd g i Vl Xo ir Ny { ~   C  ۋ 6   F  O  ě Ɵ = B 2  ,  ı ( N    j      f   _ c       3     s *  ^     R  8 6   W   j $  % J   1  +! " g$ $ % % & ' ( * u+ , <. 6 L6 '7 h7 7 7 @8 8 8 9 X9 9 m: : : ; ; *< < >= = = = = > > ? /@ @ A A B B C E E K M N O ggthh^iikk*lhllOmmmXnnn]oNppqq`rrsVsssttu[uuvZvxyyCzzzS{{ ||f}݂ƅ#$u،ގ+(WMBױ]icXl^.TOa#yL |G2 z3 )**,./W17:<=?|AHCGsJMIQTVWV]ajmsp sw.}[}Zғ[UZU/z,% &Q'(*80=167"?oHIIJLmMQlomRqVqeדjO!2_J _Mo5q}*    N!"#0a8qAC ILNRSiTdU1WWXtZX\\]`apbkc)eefhFiAjknnoruw z~/M9¢|GYջٽ;d^=2*V'     < < < < <     . `0 0 3 85 6 (8 Y: < s@ nB E H I 7K L =N |Q bS RU W i[ ^ a ]d g i Yl \o nr Qy { ~ F ߋ : I S Ǜ ˟ B F 6 m   h a f  7  w . b  # V < i [ n  ) N   5  /! " k$ $ % % & ' ( * w+ , >. 6 '7 h7 7 7 @8 8 8 9 |9 9 m: ; < *< < > ? 1@ B C E E oggehhOiikklYll@m}mmInnNo>ppqqPrr sFsssstuKuuuIvxyy3zzzC{{{|V}͂puztd̎o֗F;|xة{ҫl1ƱLXRؽGn׿[M|C|K o>P~wti<ko6 h ) **-,,-../E17: <=?iA5CF`JzM6QTVWC]ajm`prw}nHi DGq٢k@ٴ(CAxl gi|y  &&?'q(p*_+&0+167?[HIJLYMQ|o>qA\P˔{SM: J5  K9[v!^r]zi  :!"#/K8]ACH8NvRSWTRUWWXbZF\\]_a^bYceefh4i/jklnnoquwy~̂p 9%nh2C½$MH'#@   Y    * * * * *      N0 0 3 &5 6 8 G: < = `@ \B E H I %K |L +N jQ PS @U yW W[ ^ a Kd f }i Gl Io Pp Zr s ?y { j| ~  ~ ׃ 4 ̋ ' i | 7 @ . 3 # [   W P : T  m $ d   O  C r ) H [  ;   "  ! " X$ $ |% % & ' ( * d+ , +. 5 7 Y7 7 7 18 q8 8 9 9 ^: : ; < < = = > ? @ A B C D E !j(jhjpjkNkVkkkkkkkkll"l*l2llltl|llllllllXmmn`nnoWoopppp'pppq^qqqqqqqqr@r~rrrOsss*ttt&uuu-vsvv4wwwVxx)yy z}zz-{x{{{{+|s||}L}}}~~&~.~m~~~(f!_"dÁGOWV^̓:LTɄ>xƅB Y@ڈ'u‰Rي_)Čiiij0j`jjjjkCKW_gj+ruv&xxxuy~~bJ_ȻȽ`xJbMeZ M<?} Pk8POgXsT''(-(N)d)z))++,&,~---..000,2B2222;;;;bkItatyttމ5KVbxN[tN1I>Vn1Iay]uj )A Rj=Um !4%L%g%#&;&S&2(J(b(a)y))1*I*a*/*//011556677M=e==>>>FF3FNFHH4HLH JJL7LOLgLNNN4PLPdPQQQRvVV____mmmm7xOxgxxyz&z>zG{_{w{{rЇSk%0H`x!9QiטDE*RjJTl6N#;Sk@XpG_wNf~SkIay&>V;SkTl   . f ~    . F i""~##)))))z,,,,,'.?.W.o..~/////5556*677 8$8<8>>>?AA6ANA2CJCbCzCMEeE}EEJ0JHJ`J?OWOoOODS\S+UCU"V:VVVXXYY;ZSZ[[\]]]^^____Zara2cJc)dAdddffgg0hHhj jjkkkmmmooopppqqqt&t>tVtzkωȍ6Nfjʷ¾C@ !9Qi]u $Iay   - E    $ < Q   q    m  }      / 0/ I/ 0 +0 A0 1 1 1 ~= A C /C qI I I O O O g j Hp s s ׏ d | = U m  ( [ s K   1 S n t  7 O   1  2 J a y a y u ̭  < T o k Ĺ %  5 P  x 9  ' ) A $ e } W o  , D  ` x   * C [ s @ X p  ( @     7   4  8 $ < W [ s     4 L Z r    V n  " : ( ) T+ , . C/ rG G G H >H hH H H H +I UI I I I I ^L  'cOS*.BUi0`x Oyq^lF/ $ LsI&)+/1u4\6d=ACCGQXT_VX^[e>gjvtwpxxyzC}5~e;kߔƨɵ N$=\UPC"!2%'Y089E:GPV9cddfgqDvwx{{K|}nܚtuɡ*ߪϲTۻpn%t,cN$N;*)vu+      .&+/2?455:68:~;j>@AQC:EaFGHuI-JJgMMOOpPQS$T6UVWY[OC^_`a%DE$gDijskpqsuxyz}cKN6яߒ2Oךϡci Nݺ%FFn"GHIJjQ$?(IGi U/T~ ~2, fYt ~"U#w')/ 5558T<>AEkK^MQTWAY?[\]^_` egm\u(vvz5'ǎh LgiII7"ͨp=-^J0,PmOQwD bt]lwYhHW_]oBB>  5 l xLX!!KsLr"&H)m+,,/1V2<33)5567]8 99z:";ܚi2AAuF;9=@Bldcejljt@uuz@xw6c ~  g (=fCDExFfGZHTI@JKLLK#7:zA7B%aM~Q(,BSu gOP.^v Mwo\jD- " JqG&)+/1s4V6b=AACGQVTEVX\[d0gjtdwnxxyzA}3~c9iyĨF  ;ZSNA!0%'W089EsFPV7cddfgoBvw>xy{I|}lursǡ(ݪͲRٻn޿l#r*aL"L9('tsa     &;&+/2=44586~8:n;h> @AOC8E_FGHsI+JJeMMOOnPQS"T4UVWY[^C_`a"gDEBi}jqkpqsuxyz}aIL4Ϗݒ0M՚ʡagLۺ#lwFeG YHSI?JKhO"=&GEg S-R| |0* dWr |"S#u')/4}558R<>AEiK\MQTW?Y=[\]^_`egmSu&vvz3݋Ŏf JegGG5 ˨n;+\H.*NkI HuB`r[jqWfFU][m@@<  3 j vJV !p"KL&F)k+,*/1T2:33'5567[899x: ;;ښyA!6B8G7=@A&bNR)-NCTv khPQ/_w Nxp]kE. # KrH&)+/1t4[6c=ABCGQWT^VX][dbee=gjkjjt?uuvswoxxyzB}4~d:jޔŨG !#<[TOB!1%'X089EtFPV8cddfgoCvw?xxz{J|}mvۚstȡ)ުβSڻom$s+bM#M:)(ut5b*  }     f  ' <e-&+/2>455968:};i>@APC9E`FGHtI,JJfMMOOoPQS#T5UVWY[^$D_`a#gEFCi~jrkpqsuxyz}bJM5Џޒ1N֚ΡbhMܺ$mFG!HIJKiP#>'HFh T.S} }1+ eXs }"T#v')/5~558S<>AEjK]MQTW@Y>[\]^_` egm[u'vvz4&Ǝg KfhHH6!̨o<,]I/+OlNPvCas\kvXgGV^\nAA=  4 k wKW!!q"rLXM&G)l+,+/1U2;33(5567\899y:!;;JI69ۚA"B9G8=@AaZeecjj7uuuxϚ-"u  ^  ]%B#f_eehjj?ACGJ NQMUV.X]bk&np8swx}ʂ  +7M#0rI&#N i%V &'(E+0278?HJBMMR^mȢ {|P1moe/@]z " $0<9@BmDBINR@TTUW,X%Y;[\ ]:^`Gbbce$fgiijlhnn%prWvIxzd`AVjqթرOUHtW\KzoU ^ '               I l 0  1 b3 5 7 i8 : X= eA B F H J WK L N Q S U W [ N_ %b d g hj l p ts y P|   .   j ǎ O Q t * Η J  "      [    ~       . e _ ] "  j     { ]     ? !   x 9    o + h  ! " $ e% % ^& J' \( ) + , - / *6 D7 7 7 8 ]8 8 8 59 : ; &= >  @ @ C C AE YF Qg/&' efg j efgj j  #   #####j j ######### ####efgefgefg####boooR S _ j  # boo         efgefg###j #######  #_P QLabef3gGh2iRjjmno2r&ttuwKxx.y}~/2 j("J? J?TO( *X,oW c &t(U2:HsV^[ I"5f)$%'()./0467 <=DFH4JKMNPU^@k7opvyFz\P-2%SZw7$1^W  |N  !#',+,.36===@ZBDRINRTUBV o 2 L - { w   O ? ; , {  ~ x    ! W/ 1 4 5 A6 O9 : @: : 0; f; ; < < 4= v= = 6> l> > o? ? @ A B B KC C ;D uD sE nHtx~~;' ', 1%.e5=ExIPGVc_lxA xU)5>R . F ϯ : ` ü T  + d6 p9 : ; V= ? @ nF . : ï . T H   X6 d9 : ; J= > @ #'+/37;?CGKOVZ^bfmquy} #.FXm %,>EIaq} 'EIPWr#/6?LSr  6KOW_m&;H[i}(BVl 3;@EJO_gw$,08@HMh/GL_v(-5=EIQYafns  $,4<@HPX`h{  (,4<DIZ^ft|$(04<NV^fx  (,4<KS[cks    % - 1 9 A S [ c k s !! !!!!!)!1!9!A!I!M!U!]!e!m!q!!!!!!!!!!!!!!!!!!!!!!!!" """#","4"H"P"U"]"e"m"u"}"""""""""""""# ### #(#0#8#=#E#M#U#Z#_#g#o#w##########$$&$2$:$L$T$d$l$t$|$$$$$$$$$$$$$%%$%,%9%J%R%\%d%l%t%%%%%%%%%%% &&&$&,&1&6&;&@&H&P&X&]&b&g&l&&&&&&&&&&&&&&&''$')'.'3'W'_'g'l'q'v''''''''''''(( (((%(-(B(S(d(i(q(y((((((((((((((((((() ))))&).)6)>)F)N)V)b)j)r)z)))))))))))))))))*****%*-*5*=*E*M*U*Z*b*j*r*z*****************+ ++++&+++3+;+C+K+P+b+j+r+z+++++++++++++++++++, ,,,#,(,4,<,D,L,T,Y,a,i,q,v,~,,,,,,,,,,,,,,,,- ---#-+-0-8-@-H-P-c-k-s-{----------------. ....'./.7.?.G.O.W.\.d.l.t.............../ ///4/;F;N;S;[;c;k;s;{;;;;;;;;;;;;;;;;;;< <<<"<'</<7<<<D<L<T<\<d<l<q<y<<<<<<<<<<<<<<<<<<<= ==="=*=2=7=?=G=O=W=\=d=l=t=|==================>>>>>%>*>2>:>B>J>R>Z>_>g>o>w>|>>>>>>>>>>>>>>>>>>?????%?-?2?:?B?J?R?W?_?g?o?w????????????????@@@(@-@5@=@E@M@U@]@e@m@u@}@@@@@@@@@@@@@@@AAAA$A,A4AGFGNGSG[GcGkGsG{GGGGGGGGGGGGGGGGGGH HHH"H'H/H7H?HGHOHWH_HqHyHHHHHHHHHHHI I(I-IGIOIWI\IdIwI|IIIIIIIIIIIIIIJ JJJJ'J/J4JQFQNQVQ^QcQkQsQ{QQQQQQQQQQQQQQQQQQRRRRR$R,R4R[E[L[S[Z[a[h[o[t[{[[[[[[[[[[[[[[[[[[[\\\\\!\(\/\6\=\D\K\R\Y\`\g\n\u\|\\\\\\\\\\\\\\\\\\\]]]]]"])]0]5]<]C]J]O]V]]]d]k]r]y]]]]]]]]]]]]]]]]]]]]^ ^^^!^(^/^6^=^D^K^R^Y^`^g^n^u^|^^^^^^^^^^^^^^^^^^^_____$_+_2_9_@_G_N_U_\_c_j_q_x____________________` ``` `'`.`5`<`C`J`Q`X`_`f`m`t`{```````````````````aaaaa#a*a1a8a?aFaMaTa[abaiapawa~aaaaaaaaaaaaaaaaaaab bbbb&b-b4b;bBbIbPbWb^beblbsbzbbbbbbbbbbbbbbbbbbbbc ccc"c)c0c7c>cEcLcScZcachcocvc}cccccccccccccccccccd dddd%d,d3d:dAdHdOdVd]dddkdrdydddddddddddddddddddde eee!e(e/e6e=eDeKeReYe`egeneue|eeeeeeeeeeeeeeeeeeefffff$f+f2f9f@fGfNfUf\fcfjfqfxffffffffffffffffffffg ggg g'g.g5g*'/ 4%.h5!=E{IPJVf_lmxD X)5>U . I ү  = c Ƽ _  . f6 r9 : ; `= h= ? @ A  Q_` c `a h #Ph &N7?`TT*R<<"C&d[[3VEs||gdd:ZJJxkkk=^SorrA##bZ1 TBryF*f__7v 1ihh\P|moou@/D''4t}I..hccyljj>psB""2 C$zzG++8'K22ji}O99np0 +WGGJ--;zM66_UU)Q==!ttc\\UDDH,,c9YKKwL11]RR~P88aYYSAAqxxE))e``5XFFu<[OO{  < lgm core_intrinsicsderive_clone_copy< 2$crate::assert_nenOYY<H 4 <4dɋU?Y<GvR$crate::assert_eqCGYY<Nl5^oOY<=3.?Y<(Kv<@-FG?Y< wPQ^j$crate::const_format_args="ZY fmt_internalsconst_fmt_arguments_new<u"<GT&= $crate::cfg&~GYY$<S?89W.<&Kk<f; `?Y<zۑGDQOYY$<]bwq<Y2D)?  <W Tݠ  <ڨ=  <:Ӈ6DD (OYY$<;<),HU <.>pC<'{  <4W4<)鶟Q$crate::assert[?YYgeneric_assert_internals&<ǁ4v <ΤxNEo  <._R<S^aD 1?YYD&<Eif[ ?Y<soGx<&7}tI<=&ulyD. GYY<?shY9<Fen~Dj?YY$< )<$HK:?Y<OآI}O<zczD@GYY$<g"A <#}yn1  <{K5å<ۺ$rOyY)<+}DGY<okVmDD<aJ5VD#wOYY<j~փ  <&Iȣ<0  <:kk8Y)<ЙnC]s+<Y5 <)8r<gŒ$5<k\FBD- GYY$<z0;<`m+Dc?YYD&<* }Y<'6OY<Ҳ,Bx<<xD8?YYD&<Rls?*Y<zHkB <\˲xG<]?',  <pN&rm&i %dDD<-Vm< F8"qD qGYY$<J<fS,'qgV?Y< [DF?YY$<$hsEpY<E8Yg/?Y<KА"  <ך5XH?Y<̶UD?YY$<8ATthGY<oj[D&~GYY<,\R.<<<+#<*)(Y< +~Ia?Y<JyDQOYY<aKIt<e[_ZJ<3F<{қNc%<fĞr^D (OYY<PS@ Q!<woiPF4<vpH<Z2 <ʗ%&P<|}$D_?YY$<[ z<)(p  <cJE0rD5OYY$<ijVh8c<yȌ#?Y<sS>9<nNC<AgDȳ+ C6 <سHA<0r᳂Dj?YYD&<^£I=<nLܬ2~V*<fWGROY<5D@GYY<qppx[/1  <ڊ8<FXL E Y<duki%dDD<UsDԝ<p7 D%{OYY$<Jάn  <h69JZIAi<''ɴY$<&{]?Y<9:DNOYY$<K7@u<+~ۺ>  <QX<bͷY  <'aY$crate::panic::panic_2021B$?Y ZA@<A-l?Y<0 *}(O \D derive_eq </h<?1S>?Y<Ul ) 46 <ٲoe1  <Ժ{ RDXOYY<xOY<6z2?Y< N 8 Y<B, JPY<Un[m.D -?YYD&<,!<e?+<OtLJ0'  <cK]y.D- GYY< o.<A(sO+DgGYY$<="M9GY<׸[a 7Y< u1'BUD)< SiO^D<?YY$<Èel}<րUz$ -<s<w: AGY<LlcۼmDD<dZ v<˰KD qGYY<nN <. <g"7Y$<<6cYOY<ٛFDF?YYD&<ʈz>A4rGY< YhN" =7  <]unV#  <\?lB<$ۧa=r\D?YYD&<1^vb;i Y<m܊2$crate::format_args'YYD<3.V?<Hްճ<!~|/&Y)<ⷧTd?Y<bX~DT?YY$<&3DRu<Vf5dM<' j GY<_BLXK?Y<"9T\m 9DD<Gpec#<{Sޠ  <E|<<zEmQm,DD<SjVn|3  <, D_?YYD&<Ə{\~"< s  <@:<ECxZD5OYY<_CxM<+sk$?Y< eBF<I,y:&<26`r}DnOYY$<FEU'2<#n qD<dIOSY<0kuDCGYY$<2VOv <#*=5<U!Y<7g&n9Y)<\9 < fZD& ZA@<eHDqC.<u([aӄ4D%{OYY<gW!'  <l^ߟé#< _=<%ŮGwDNOYY<T9l$<}┭ >0  <[SXz͠  <j0 debug_assertn(>Y< 6NdC  <;YX>޹DC&"ZYDD<C^TBK<-gp(Dfmt_helpers_for_deriveGG<NG]'  <^#i*Y)<P.5<┥ÐQD[?YY$<6TźtyY<^9 3?Y<hH<?ZD 1?YY$<\Kq < MI7?Y< Zm]e2<""  <vCiD. GYY$<L]8[DgGYY<cU Y<[2 {y9?Y<\ RMޅE%>Y<W K?D<?YYD&<zU/<D`/<!ѯ] <𒨕 Y)<:X?B Y<)-i%dDD< k#,~<iЏ D#wOYY$<zX_gi  <P;Sm <^HoYYD&<Ҹ%F>1"ZY<|ꌛDJ?YY$<.CPz6s Y<(L4>  <c&  <` < )`9WGD "?YY$<6޵W<ni(%dDD<esB<W0IuݾC<;k(6 <RY2Ape?Y<98GDT?YYD&<t5j <8 {AO<tdv  Y<?&iL?Y<@E1fi 9%dDD<^Y+uǾ!<5  <Q#b<1wi,%dDD<?#}ܰ  <5+'nDc?YY$<n:|OY<oDcv~u  <KCr{)<GTD8?YY$<  <ġP )OY<ń[Ov 1s|nry3TBgdF*<?J]RT. kk8M6YKL8%{WGI.e`npc\R "`QP\Piht} -j4UD1 cXB^SFj@N7J#w q$zF ( "__h[or@aY -- l&~jiZ5uK2XVE2 qxfSAE)TdQ=J_UNO9<g!t[psmobZA#D*AFY < bdebug_assert_neGNY <ZENY <8<ҥqDɫ$FY <JZ'ޅE%>Y<! 1\xUE%NY <?w yfޅE(>Y<jxޅE >Y<FSˠE,NY <vl! 8&Y<N\3BDGFY <o"`]E%NY <ȾRDψ1FY <]rޅE)>Y< cجޅE,>Y<LNlޅE%>Y<ky =.fޅE׺.>Y<HDډ(FY <t<ƜUaE+NY <I}3w\ޅE>Y<+%6 <X-cm,D*AFY < dE%NY <vE"NY < H ۏޅE%>Y<M MBޅE<(>Y<l$bޅE'n>Y<: +`{bQwPJN"%[m]OQ?CPr:P OoD PN]tQOe_ O)6NxYQaTOP(QZO-Q&LP>}Q)OSNrPK PwNFP?jCdNO{P6Q8AOOQNGX|;O)PEQ*{]P@NN'[;SNPjQNeOu.SM+;QN7OdvO>HQ{oNOPO21PPh Nf PP@,NoOnh=2NOOQNJOYPQc-OhP1Q/O UP QxNO^PMs2( ! TqxOOPHNOPrKl%nADQ$OPqPaQD15Q3Qf\N'PINzOdP\6NT7\V4 -oX:GQ$OPeNOx*UG#@SU WqS%VBvUV;SDUU'SUpVRT>VRTFkRlT9R:T~9HT2QS,;JX&5$D VQ=L(6Ev!;0_*8Gq#1A ,:Ip%3GC.<K'%6E s/>M)7Fs"=1'@;+9IY$"3)B"8-<!K&[5zD.>M(47F!0?p*87H#G2}Ava,;IJ%n4CU\.)=QL(6uE!/?N).89G"s1@k+8:uI$z3Bz-Z<K '5Dv H/i>_M<)7zF)"0?Y9H$2A,;J3&4C.y=[(6EP!03*w8GL#1@+:ID%3C-<K'6D >Ma)7N"1@+9H4$2B-;J&/5UD.=L(7!j0`?*8H"2XAQ<,:$J%I4C07.=,L'c6PE/>M 8G"Z@Fn+:PI$U3_BUn-5<_K&5DQ #/D>:M)g7TF"0?*49jH#z2A,c;J &4y.T=|L6(E*!/;?)R8]G"1@+c:I$3B-~<K0'5#*UG<#@SU2WS4%V CUVaSfU'+S4UVRT`VRTFRT[R\T9H*T2)RS-;Jw&5ED.VQ=L(6F!Z0`*8H#2HAA,,:J%94sC '.<L'S6@E />M)7G"c1J@6^+:@I$E3OBE^-%<OK&5DA /4>*M)W7DF!0?*$9ZH#j2A,S;sJ%4Cip.D=lL&(6E!/+?N)B8MG"1@+S:I$3B-n<K '5D c/>zMQ)7F>"1?n9H$$2A,;JH&4D.=p(6Ef!+0O*8Ga#1A+:I`%37C-<K'6 E >Mw)7c"-1@++9 II$3B(-;K&K5jD.=L($7!0u?*8'H72mAfQ,;9J%^4CEL.=AL(y6eE/?M8)G"o@[+(:eI$j3tBj-J<tK&5Df 8/Y>OM,)|7jF"0?+I9H#2A,w;J#&4.i=LK(E@!0P?)g8rG #1@+:I%3B-<KE'5ODHT <!8'<*HϡFV<]Sv<:pft<9,}3,<u2C<I<O?AQj<G~0mb <sEN Y <g+z0Q <6P-<ք<B<\ph<K<u{`74A <Zu? <2(/*< +<K @<  gs<2"!L<#x<߅$$&G<d%^S< 7/& fZ<lsV&x<''P:<6\'e`q<X|)*ŀ<+мW<Etb+ߊ<6/<r瓛h <ϧ<߂K'<jH0<2*@ <ã >_<o|PR<R5%v<wkM<CCF <%/`<9*|<wէ0y <5#KN<b e0@&<A7<TsMR<Qm\<~oV <*{Z<8~»<%6@=<uu|<TEpM<[kÿ < G͇<+vA<vY٘<3NP0/<gGl<hL <x$\^<Q|iz0.\<56<0pޖZ<ZI`oP<bNR<KѠ1)]<X{5 t<:i@<Xj <ns2<EضP<E`:#`Ƕ<}NFxd<6O\4<kg`ul <kkzG<L X<1A7;U <Y?JT<1N;h<@^<͜BpÔ<:Jɰ<H<+@~<<-@<[<xs0<XֶF?<i< 9 <'=K<˩QH4<o<2<N 2<&a<J~ <J{qH(&<oh3i<=4Q<t"<֕M'E< !z<yc-"s.<6qc%<1![Y<bѯ m<r'><{A8Y<_lK <$uy <}Lr<|.h3 <DZ!q?2v<Zef!ao<݀Zd"q<i$S]<b%!r]<Gj&QG<͡~#1X<,h|#*<ɚA <x.1r: <Y{+QYt<Nk%+<PQ2-Aze<,QWʢ<_ + <0qa<411<J1aɹp<:|3tc<,!83h#<[~E4zQ<!D6A&Qc<7q$ <N-8QX<$;7X<8Q<q;<MIN:Q)</;qsr<9;<=[8><Ux@<~@1DZ<{+B!D<A<טRCA<"WE:K<eAAA<m`G *e<`?<u0TU < cd 9<2 g1T;a <Fhn:<:i!v</7gX <ok <j5kAB<pl ofRC<>h(p#<Vq!<a r<f^0sRm< t1w <i > pQ,5 <.d <jxX <_V=y< z!<\<Cz8yqˑ<| <{-"~aqP<fiw)<1A<y;~=<lΨ1n<PFQ] <:1o<maMH&<<ɒ!i<ZZӒ><5nmV<8g.A.<(,`.<rA:t<$$h< <JϢ<oo&6<D-Q8FzF< D]m <S<x]Ѡ <-Na=q<Ce2<vz!e<E:qB<߮Ʒ<EXdtj<'!Z k<q=g<-~E <qV$A<3qq^<-6u7<eSH<pwвa\<?Q06<k7!O.<, M<<+h' <6x Qw <Bۻaz<1ԽH0<}ٿqo<읠<<w}f<+yT1 <ádJ<*Ax <MqʢP<eiB<z&Q.<FǑy1 <*⛰QNm<L<k(1!$<ܯQ<O'ϼ<ʘ><ؐQ=<X@_ <;[gyQ-W<5wk1<ߘKq!<ul<z1s<Ε0'<_ރaCU<i+o<<ogQD <P<#}2ˢ<ݞ_<@q׌v<bѺ|<nao<A<W <tLMQM<ZAa)<֎z<_ava>Z<lv@e#<|8`<#DU~~<~Aj<L&mk <N!<P`*<zLz3<{IV<mT;}<2Ų`-?<;<Tu <~; "<7 Roz<+7 18< 2w3<O҂ <?20<lnT" ޸<ZdRdB: < Rc <7hIm <><zd%<EP2}u<45>4E<}34BB<x*i<#.@<4/&</0'ѵD<(" F<*2<<8-#h <VI62s<03Rvip<V$2B̂S <r6r<RK8t<9 <e7?B<hAR><a1B"۸<kC2 h<*CbO}<ɿHB<dI"iE<r H< ??I#b<56GLO<05Lp[<f3KBa/<jMӳ2 <xrjP2Ћs<T:Q<6KS]{ <8FT+W<WzVW;^S<͞-Y2Ecb<eY<QZ["<c9[2<R8]@V<!^b<d>^RG)<*G \p <;Oaut< d#<ehtt<$ jC;T <emm<(m!q<ґc\pr5(<Qrrʾ7<]<srQm2<rP<p#zu7I<wivw?D<sCmWwҊk <RΩxt<Gv<S7ze[{<?sb_] <>=!|Z<Z|rZM <l~=<1iu*<wL$TBj<N'7wb: <}ruO <N{^X <tBcp <{,<3Rߋ<Q)<Ⱥ:: < ;h<KC@b.<B&Ju<T5<KYP<3lb<oG<tRS^<˿B&<7Oͪ"Ή<V"_;<44P <*#rm#~<Obl<ҤR< w<5+&b,<yNϯCW<lr<<ڱ^4<e<4Cb<rKU<CVb2ñ</⫖l<2DB[h<2<zRK<MƸR8<>D)>y<dJX)^<Zʽ[<0l2V<7YRA<9" 3<4c2P&^<20><CÂ< m<BZ+pp<ױS%<oƲ%ߠ<(ہ <6kpBG-<>|<ТV<}C52\<:|<nQ#B; <$kBM<:ز<U$B<3ز<trrR<TC} <Vh2b <oܒ|<c+ J<űB <[G"Ko~ < Ib:-<G'<c2UH<A"b<FB_<}02|<6!d0 <:sc<z <Gj "fB<g*rl<"2)?<gqoR4E<O|,C`<ܰ<(\R{<L Eғ< <bs<J1"SG < D<dY <B+ <©Hn<cg<֒C[< S&<?O<?u<7󣶌<܎$C<'i#l<?97<:u3< #GA2<&ɇqj<qJSh<)uO< '}<\d$#<C,<IWL<fN# Sʡ<2,<&! <5iSٟ <@)O<l)㱁 <>K+5<pr,?<w;+ИR<ic -Cg <vz53|O<|wn8<_ >CQm4<"jC嗔<D3 i<UWETt<nDT<4:I#><l3\dJc h<<0lp9Y<.pM)(<rQ<ܴs#M}<K}sl<ews/y<<Ό|R<WS#@5[<?Lӵ < 7w3<@\נ<7<ɁW<{d6/E<2<lP><.`i<3G 3<vhòP <4:wC <xE,"<J;:<,óF<c7 < ]&B< v)~zQ<O$#k<l.<O"<c <Dc!w<%è6<1K3<  SF-J<A-`<SH<8_Cn<.5<7.z)<#q<}沴T< V<*9eCz<~;&<'cr<v@7ֵ<Ü=<%ŨY . <.$wCb"<;>03<-qC0*<,<ߧSd<NW<Kc?ij%<T*S<\ܹ<Bqdz< C,<~# <; <mS#<i3h <;39<cªY <X)Ig)<l.ϣ<@ ѳd<_$̃# <ȋ5N<ӣt<q<\^mc<Pr<9c@ <xw <= C<sΔf< %vC`<S<;3=<؍hH<dÞ<Yh[<$cz<Wm<އI9 <kfMC) <#yJ <53~7<r<6b(<#R o<,yq <KP <{U<:=zzҙ <%Z <MT<zˀT"<2iZ;<G^O<л)t</TzdY<ъ+ <Kwt<6 gh <&v:<De!<[G#t.7V<n7'<5zԄF<>gepO<&6uQ <FQ D a<,"#n<qek#te<X$~<w"dGc#<э&#"< 'I+<Y'`dj<e($uh<iZ+L<ݛg,T-q<,<uؔ1a<p2KF<WE34ăl<N-5$X<7<r8&?<>9<g:i!9< 8<=sw <} B45<_C#<2vC(<fMD۫<LFę%<#Ed~<i$BD <% J:<\m 4K 5d<K6U<MԳϩ<mN`<Ox(<Od<^g]Ud<,gW$Z <ˠY(]<cPF[$I<v^/ <_40.<pΓ^bx<eNbT3<\cdя<Kcķ<<$;TeJT<ԡd>g < ~gDW"< qTh<"$4io&<݋jTR<zۀjf<~@j4* <N"GgV%* <@hhp$f<|qԱ <s<_s'<7ws</huDo <ڕ[ySq<0u|t۴[ <G}G=<q'}4<5$v]<Nf}yD<}d_ <â<N4Q<젇å<EJ ҈<"~݀<oCwO<ŠЋTN< NM$h<$<G%<z ԕ <I4Ԟ<3Wr`o<5H\<WV|<¸<4T <:P<UT4Li#<]Iy:<-]g<TAOJ<;#$L<ޗ<St<DG$Q <(4q<ίrkI <^c猰d<u[<%~n<7W|<o<I78'<ä&J<$i,<c,bD<r < I<y<iƔ <xt ԧ <<͔c< _9$\<6,-tPQ< ӄ <2!Ctώ<+b:l/<E佚<ƍ$?a<ՄTEHx<$<Iܤ<:mDݔj< ބ;CM<YA<3޴rx<ޤS<*tF<imx<mNdO<tw1<Ynt0 <S%b<-qC<Du<oLt<=Gk <$_ <0U `<n4"<$䓶e<<i6ۇ<ĽW( <>!K󤘡<?Lxc֑@<KB]<;d'u8<$!<ؗP+<8Dp1<o>4™|<Q T+ <V9?En<n.7E)q<GcEg<7)<ѕխ <bmF<^ \ <(B- U:Z<tur<sH% <Uѥ<ncUnB<ߣB%ts <JJ3G<X%q<pF<Y<ܵp79<":<f6<?uRx<r e<y?!!U؟<HtZ"f_ <l5Nw6 <K"$U<5w EG <F4+5[9<V,/s <u .e7<)~/< 1 <22wp@<s`v3%<砦B48<X5]<X8ՙ<A8<ғ<_<{Z/?5*<^f0?׸X<d c,%IH<T' <;<صW <TRG%z<1=<h<ٶuX <+FO<) ۭ <pT<FU5<<QZ,-<> ,4<A;e_:<#j<EŸ<%utrA<y|U<V% <`m<TyUƬ<ҶKŝf0<.u@`< k^Z`<&'<t\,E<x9 <_]<>DEH8<5%T<1OaE=d<@}<P6(<ʴ<L&+< F֏~<0, 69<\X 6-<A YJ<|}&;F<$<! <]<1N6= <} C<S()&.·<MV_<_0p<&K ֓ <"M!6B<m"f{<#A&x1<ZP'F[z<'<C)1<mAk(\<+6`T<iy26e<Ga2.< /4C<6&e'<j6&<0Lf6.<U9֢=&<r:&mCc<כ6<.=v5 <|m|=v_K <zye?I<nE@vՀ<yH{<<_p/J֨Y <Lq<ekN8 <>bP&I<fQuQv.`<>)QVB<Qf</YuT<݋UQ[ <CW6 <%X6X70 <IYV<aZ<c*^vN<^\_:<`Fl<O`6Ȫ<pb)<18 \`6<#dک^`<k@e^,=<gFo<ng既Y<$gF <}jWy<xck_L<-D#lfMG<mv1<^ o7I<oFf/ <qq&vv <VRrƸ/<BesF6ʩ<L8s6<j-"v<-wŁ<Lʰw <yǽ;<V>yּ<t '{& <}<|k</|1s<0"~&u<׿fm E<My.H <M~* <u^&*G<hчFDN<ndv:<IF鍦eD<hj8 <q7V3e<@v<CWY<d&w<qɄ60<ꮆx<ͷ\ <[~W<oNoҝ&<qvgc<k4<df} <L& # < ;&[ <8^v1<̪we <eeZ<euV<bk!g+<aD<[Ğ9 <՘nH< ^v7<s1<Pܷ5< FdVu]< xSfQ<ANVz<"ZV| < '3<?6ȵ <'hFS<,/ƣ<?¦͗<Fa1<҈<V$<cy<j$ʖ<v@<vv3!L<Ĩܛfq-<^%fv <PDh&<1Ov<*f_g<==*F)<?ڱ`<$~!f<Ǩe<(8S<fP<eVnZ<#3FFM<\#|T<"x< <;e(. D <(b}z<V Vkf<+XF<.=fDk <*TO_<N<e톕<vI<13<mS^<l?C$<%F8<U6<f9d<˼;y<&v%_<N8C<<.VF<ka<+Fu޳ < $&o<=X< \w<V71<G22W <Ww4G<0Q]'S}<@G2<s ZW4%q<4=^7<-cl<rܧ7e <Ys!m<Z)?<Yp@$ <`B,"G$<"<#UA<&X$W<Cs%'k<0&bO<n$."D<UL/w<O0R<\0t6<껩27y<nP4G_<Q%5Wdr<Ǟj5w(d<^7WT2<:^<z9F:RM<;W[t<*f;= <1;G E <׮8?*<Bh@ ʦ<cAw<vy.B'J<^hCU~6<_iEW <{B4G{z< qHB<IW<*cJ<ffcNԇ<"N/<W;PgTت <|cQ<1+RWm <S7?<?SG=<T>R'6$ <U&Xz<*Zi'< B]<d] <bJf<XeY<reG3 <ڕiO5<VԠFk_I < ow<lftO<#uGķ<uZwwǮK< wة<Szy-uo<\zw^ <RO|Ǵ </g <ʷR*<u!'<;-.GD<MÆ٢<b(DA<adPu<48eg]<:=V[+<%amw <Tow<6W  <ifq <1EG=<4#*Tcy<)P <ڡd<<0ץ[<1mEdž^<IW?<x:sw8<= 'f<+~&y|<g2vz<jv71< 7D޴<!go'< µ j<rO_< Uw_E<| <J3gU</CG <' ķb<[m 7P<9YgR<񻜔{`<4f8rs<Jm7i<rLdBK<YE+<j=,c<nzG;<l`b_a<X>Ӈg<sʡ'@d<m<W*<Jw3<O ׆w<l~H<li7x <fV|$<܇k, <E^lg`R,<S ><OJ% <lG < <H.a<>2 <j3v7V<M/7<4|b5w<{QdWN<<wt;/<Sy'xS<it <}R<;W֪<gp< yW6 <Wwp<xg]5<اhC <' <%R<w[N <a^L< ]# <׆ C< e% <.Ŀ <k'<@‰EHmR<.c <1G H<+ͽJֱ<N~FJxl+<ACϟ <GHO <'v3]<; 6<88W<3Fq<5.JV<C@(<u'+ fF <ǯ&<&Hk <xx*e: <4+gf <V>-8<_ˆ/Xf<F0<0<'ݚ1(TU <3(<`kn3/<bx 1h; <S]:C@ <)2"=<=C3Ao <RCxI8<O#C8Lx <'Ch4 <Hh:<U"H<<LD[IҾ(<Kh"<HI(L<MO(U <}fS^j <N#Ti<1IU<0%VX$x<(@.V8L<֊Xb<JUIY <¬nZH;ق<\X~w<zy]/z<#(F\(B۲<т\- <H` <Ҫ|aX1<MbX1<LR?c,<GKBc <j%cZT <`Kf&L<Gwg8< _h+u<iߠ<Y}ih\† <dчk8< 3lH2<Z]f8 <FRn8[<n<5o$<ytFqؿP<"th<@t(S$-<6TxhË<( #zX•<A ǟzx<sߔ}l<W}XNV<(<C]\XcR<@j1H$<bZk~8B/ <jM<Z/%ZبnQ<zJʉT<YhR<TO <VtX<k൒/p<PH/0kg<]w -<G[h8f&<_Òh7 <jMf<qL"0;2<'ߖÛ8.<易g<VhM8<ޣr)<ykH7<E|{<0 hS}<j8W<zɆ<{xQ <Tp2Μ <v<z=o x! <cF+# <{j<=h4<n0<Jpaؖ$<gBֻ<<$3<~٬нhB <a` a2 <zHE"<b]8!<T=8!~<Er؛6<oT <"bhc<d8YB<>NȈi<!8[<Oщ˸j<|b:@</cdxK<e{ˈ <ќv<<\ <|YHVǾ<l[J#oO<(\NF`<ąX<:AShnN<gX<1 <|< .^<h,X<lܘ(<cuPv:& <䨜u<B<H(Cx?t<jJ<fh$<+.<\HHt<~<߭TB<JЮ*<V{?<>Sæ<}8<QH<Ro8}c<TS<&9] <3I!<뺺Y|<P!ȏo<i%h0<FR+& [<OH'<@+9(yK<)<߱)y:>;<Xf* 7\<M,i]ͪ<B%-< (i<β#+F3<P?g0Yd<#1Yس<j2O\w<"#-YI <x3)i <o 5\9t<n6I <"<5d=<86<i69<NL>9yx<;H<5X! <0;j/ <6>I <N{@<WB!<GA<T6Hi <x@<|I<w|iV<N|k4<o/Y;x<|.e)<Ѻ I0:<h6c_% <=jTe<b9<iUi[<= s<9]5<Mx#<!J١r<YwA7 <{ܳ9<~ B9yo <_v1m2<ج Iƫ<>BC < <i<*ȿR<5|Ɵ <D;-EC<LIcբ<ΥY2<_4yK<zd'<<T$?#>P <¯Mi<bUYm:m<p2ϯ<-O<gywz< >iB9<(uvl{<e޾Ќ<.)-#<mz9- <x]F<Jù g<Ù;<YAf<.@xi3<*%<i<%D}<Yi<#[O~ < 颴y` <$?<C*)s<\V%ީV<ɾu<>]ɴV <Ym)z<êY0<-ʐϣ <BgN YC <iyJU<Nhҵ<M: <<<X` ZFa <A?J Xj <9ߣ:p<-E:Á<lMqz9J<iNRD<jiؖ <i#2 z<·a<%ƹxS<a[(g%<,X֎(C<|)_`<ǃ+"pA< +JC(<y-N<@m*J? <v?0o7<bc0<f,2_<`4z<-36xj< ?P$7 t<Yo8b<Iz9 //<qQ 9zcn<ly:JT <(M: <A=*"r <>*<,m>*7<`A<oA: <`G{mp<pGM<%ZIPUY<RJ<S{%<AX%T}<lݝSj<ɡSzKP<qwXj <vZ*t < ^1<5-_Z<Gb٢<_Gc:/<f-<$h1gݢ$<$ h:xPQ<ί emʮW<yo`%n< szӗ<(Mmt"<tt:*<_1{9<tJ}:<Wҡ0~y<9$Cf<-]z=&&<Fg<:3;<V:[<4z<bQQ7< qVږ*<[!ۈvx<k~<>R_<oF<tAO<<oIY<)$ AE <ґږU< mI<|B^<9{n <'<Z:V<*gZ <))< ɆcQ<8Ui<;b<:Hj<bB:{(<OUujj<҉Ȇ<q*<^5{ <׏]- <c' <Hs<ƶ=b <oP<HV;S'< Kt4 <L K<<r֢ k<I+ <wq MU<Җ  <o {&)7 <9D~< <Gs9VF<#+<}ԣuc<(su.\<Th+ta < kΤ~<6I<aSO;<6R;<!25<"{<%#[X<e# <5%{j<mu)U<>*[s<O,ˢR<Qv/<=2ni<4K3w<2z]<o7 <Y7ؗ? < 09 <k90<6ϐ7 <<*<C< JJ<k=[J<=38A<QBs<a̰C;z<CZvpA{<JEkZ<,BFK<L/F[ < &C <뼐AӍK <^=J;OS<eEKKŃ1<aj +L <92LO <_Ne<UvFT>(<Tl<PWkC<k^.X;l <YK<*kY[A<*\kI<j\@]{<[v=\+ <3T_5<<_~I<d˦ <OXg$<~g[o <,1ji/<j <1+iV{< Bi<URpnS<\>nk.<.!qKL%<!Lqk<^s*v<a.r ?<mEu{<RՉ*w<\1y g<_p}k<sexkU<nx <뛃&q<ǩQg<FT<cA܆]<AK< v<qtD!tF}<⌫x<+Q<zǎKϡR<T4<o@␋d <x@J<g@{.< < (S3Ks<Ϙv _<` A, <=E< @4 <I"i~6 <9={4z<4C[O < l<< l;!:< D<Th+9\<5B<鬠Ikk <4 '/ <ۛ~<8 <حޛT<0)i-ߛ!i<:-3ڙ<ok#<k25#<u  < {lu<&a({ y<RN}d<e"F<c[2.< "X9<|tkLE<|rC;<8 .<=bq3<>ۻ <7ԙ R<`\W=<OaK <}. <Bl?+S<&2X,c+<ry m <S t<vb~<=8p<3Jy\-<L<  u<pjl<D6 <K<r 욓<E#U, @<_;lQfX<i\<4SlLZ <oct(F <G #^e <p^$m< -#S$v= <ɘ&\0<ӂ&|< Q'=<})b <*<6( <:6,J<ڈ=(3, < |.\dW<H{B/g <o0<<Ϯ2Xpc <kl̵5<Ohcm `<g7Gnѽ<KX\q<rɃk<Krw <stl <!ʌ/tb<S/wNR<yx|(<)yAY<Ιx{v<QF| "*<9}U<Bs~ w<-M<۔\e r<΂x<p&} <X}A<|\"<mv<,q<+ր<;|+ <2P}\^ <a"1gw<Vf,$<4 B \ߪ<tyg <S41L <x}O<eg˾$<Wܷ <cxˢl̚=<|2.i<zL<|R{T< N<1<%o!<luլN<Djk֬<dR|<<պEN <ӻ=D <-ۼ{cp<~|<: \#r<7"L<1l*P<AHLN5<X܂K<*=̪<ᦉ L<w{笫_} <os80yA < 9l<7!ڱo$<*|]C<Gbli<G\ڪ<sS |ϕB<eт<_l 3<Lq6 < F]j<Oͫ<+@?| <*=I<5R)<­y}L<|o <[m<DK%Y <0: VK<gL = <T=<Pͩ<m}z<Ip}p <,Jte<Q=8c<, l<\e<>f?<I2<1+ }V<F ]b<3<" <5$i6q <((M@<ީU(MDݥ<M<(-j+<[+{<y+̡<8,)<K!q,~uW<l /-ޥv< <L?<< <=Ahv<Bݱ0<ICPy<F/,~<j&lG9<~^[I3 <~DK@<nLpu< mNi <NQ <"S ӹ <ЉYT]^<5U ϭ<I^U݅<E~WM4U<?i[mk<`~[fEs<;_}I<`'<"u` <b}<rcIj <w/d͊d <$eM{~<UZh]J <9i ><cj܌<<-uk=G<ODjk9 <~xm&e<m`<\+o-s <_lTn.ʀ<1q6g <gq}(C<16q ><po$<[bsu j<,ve<2%Dv+</v-y9<>ivM<XCjP <;ܔ{ߎ<jd*%|}O<h. </yxmy!D <4ק&<7|˓<ǽݽ<M<_vւ <_J}%*<kބM<m#<E15 <]<o7ۊ '<ݜj<Os 2U<ONi <y]2)< Q<EP}_?<m-s<܎Mp<렏3<Tu[Xݲ<-<2=?<ŗ =<O˗ &<u Q<pg2H<R2o<i&j <3gZ<uaMb <uũ <;˄MG]<G: <]bmLQ<az> <Nm[<k%<=N*<qh]Bp<kE <E-n<Tɭt^<{ˍ<㿮Y̭i<Qp}<wN{m<g-9< VmFM <(R<=PY<7<8R}Q><2h-<}Z)<"\r&<xzMh#<zmܨ<HpM#<;$Y<(] < wݶVi <a.<L&w.-u<ZFO<lM/#<xMhP<'}[<F|gm< m=N<; < J 2DL<1Z <[kq .F6<@c 0<tK ,<&fJNi<7v<D<zc3 .?cd<g,kLS4<7jj <d7< rnݰ3 <t]WC<_~<{`<\!-j<N? <N 0<8P ~,<df" <ş%g$^|> <%W<$&.g<C[}'<Vc'a<fi3 '<(ނǙ<7)p~<%׆*1i< -z<%.N< /N<ak$O <1~X<OGd2)<R4$ <=4n<E53C <)K7n G<n_+<_/ <5`-=<=^(<(1?NAf<j=<^Dž <:A*<{A<VC. < D^'W<8EH<.E@+<E F<4F<׳Gޠ <F> <ɦK4 <M$Km" <uMlSg<PEY[ <JXO<u[Pn< *ZP^ <TX T^L_<قeUޒI<0 V~z<D`Une<mqHXXA<TY+s<lX08<vY>u <z\<,:]!<VT]bw<$GP]<TU8`NXY<swzY~<`U>{۽<f^ <=WI <u.gd<zh~< +in><xm^ә<JqV m7Զ <tiOp>:%<lϤp<8s~~<~At<=eIu.(<məv_<Kw^<pN\{'<xAy<Yfj< %/<²>  <*zF"<UR ][P<EOAoR < ;~<cQނ+<9"S)<+IǐsZZ<ڛw3c<-k3޳<<8kXӔޯ1<o锾<.ds<l+n; <_嘎<ٙ~Ü <lU!n^<nOq<wל^C^<ωޑȐ<hU'.<F{>.? <N/ҡ~M<r<Tv<9UܤZ<إ^ <6n<()o <1U<S7nў <0'1g^N<[LY<^".5<౞(Qr<f[ )<};* <mP<љ͒N<^<OcNav<CdnӖV<6`K<AuF<^t{Y<Ğ<%(b<êƎPJ<.-<{pЮ0<HM<VAF<nӎB!<(NFz<wN*0<]x4gF<)ڮK<:|h><()E<rznH<Vͷ~' <ƨ>쇙<k>aTX<WRN<+{:<~GXg<J~Ջ<S3><^x y<Dނ<c7("<NN/ <2r<t[HFz<,G+<ҡcu <ݰlN5_<mJ <^<g| <%Uz>b<xN[<?T~?<<8. <h y<6 Q <j<*,nT^& <q <݋W V <[_ <E:F<( O=&<uvO/"<k Y<5Q z<[u<@S0 < Rw<EO<=_%<[ <S<Y<F|n2<~1/e<>Z<n2{/8 <: "<+%1<rN'oy~<5ܯ/<ʅ2/Q<5o <ȩ 6?Ϩ<|8</; <<߇b_<٠K(=_ <@䪈<U84@?m <ZED< ,GҦ<}fJi<vúN0n<DPim<|R< PUk<!TVo<vrsWOA<zX`<Yf?<RWD<g/)i+<؟l\α<zo`</Q9pI <v q//<(c:u)M</_v9 <Jm2x<xy~</#{ڲ<e|G<u~o<ѻۀɲ{</<4cO(B%<14&<]ׇv!!<:?o&<FuD <p#/g<Zf+<,LOek<a m%< .1<fV{C<$l:<ߵvB'<S{hO "<× ߗ <}ֳUo^<\ڗqA<0Uo6<wt_@<&+!}k <?4*<쉟/<?sw4a5<o<ߥ?) <1Wk_s<aʰO^V< ?(_R<M?mh\<yu2<_WA<>[<*<g-|X $%<JlNN;3<Yu*<,_:QX<Ў ?#<dVOY=<"r?L<KW,<<R <ꔽo <þG <J/9_&"<5G <r<Q!hOk<D= s<O׀ʏ <\Z{if < N+̟<EfU/D<Ԙ0Ϭ <#auS <#пO <ߓO<$[OAzY<ҧ<I*lڏP <Vpߙi<_b:<O<w៸ <Uٓ</k<C毯<`W<,h翰 <u]]<,O|W<A_g<Ko </Ow<w{/+M < aI<-O{:C<Oʭ<oFfpoiT <[ߘ` <7[ o_ < )<)jJ)<4>/;;<pƍ<<( <gC%.# 3[O(1,lWw%_\ 9&<^c-GD0@NEOIQ}U6?t_'Mh%G19:. :?#7jr7MS;,WT>\vy/d}A ])f+y]2yYTP-wf H]a^P\J7A/NY`qi US&#EsssoO6n-dQ:ff lgu/.yK7U:bSV([< 6R^%4Sad{Q CRT4U4S"r9,F]a4di.(~,GBe0y\:V(Dx|c9Za- vm%U9k+L# O5W0[,T+W d*nH o)`)v?,~H Hd\Q7$ I6zP:4P=lj8 @!c53r/.vUF^ J3{2Jjl'8YE[.+/1iY+1::{Q_6(5jg-/--SJ'yNtpw?~%sK )gI(?6; + YGBVXKV pX+al8oO# +owuucuwP@W?s7}>JI!{0]=})k,LUQ-Od[}6 5YE>MXP^O'Xg L|D6K4e{gdnjzrC)l^AX f/eK~B5wd"yK&6t)qk}Py0(W LY=T1h$W8+tMkU1ZKBZcnJg}wOuM2zL:Rp y 3GOV-ZChw(4stU _85^-K%NZ[LwJ.gg6M$sx! 9} iF;pe!\wq e[rCkPH}: (8L eM3neEDh!:#`hxIB}blL-9 8r^gt\j(.u e"&"DIU.sh8Fm9R=2@&yluKK8(j3t8Y[! |_a<-Hao](3x'MnXL,zCs%QRG]%#HSgaUut yzI2!2l!c/$j,HO0w`E-YE '6U a7Q#<&&3;eAw@B^r}59:i'gl;A< ?b1TIx}GR"O7;] d?d)nf0r u [GgsbOy0_w(Oy*<>3K"'rb$h/s=~oH'Jbnu# lvY&6PX094!`z/ 2{pyQ$>)~A+?'T\):?U8B.!\ /kNgN6\_kfOs.p p%m3S}23F a*HP]!G r:eB 5O**Jm2WeVz9 808+czg 3$R>G4LqrfKo#nY.F4$OMH|[nSTUsF;UG[d.; C='6ff5x4mn6Dgz"a`) H?8@:t `I3cuMp wM]%+3@~=AY!a6ES~pyb Hj'gi9$qX" qg_~M^A;1bf,}w*Ng{l;BkQPZOge O"?Jlt+;uofR'`MID]y:_ B#JNjjc?qMmbmM_G ck+ etwq|6), hTo$=C,9:d1qbmS$he Ljqf?O{@\w3g @{S-1ZA7 Nq_!d]eMa;@bL\Od,(k (Iu0K%#=D`%$c!#3xQXiC,\h,El_?Qt=]1/%I>1h<wRW_DG,=;T)ea{EHZE0l9kz4M_VE(jmL)yqMr5ar4L[g:G'={4XXwCsmDC>3sU&$V*waMccA# 3[O(1,^/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.12.3/src/lib.rs 2~j9|'qB!MPK@>d?  &(% %   ' QR=O+1<  ' G+#=O+1<G=O+1<.'N&/>&I)N837vB *)3' ϕla/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.12.3/src/macros.rs We.;Y6~!2F!04 . 37 @ +1 :N,*WOP"LQPC=B*N? "!12R2J#3d/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.12.3/src/raw/alloc.rs Ju_0O$$I; %6%Z'2  7_4R8 K! 7N!GG'H= H+  Z 7)H< K)mT>}{u(f/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.12.3/src/raw/bitmask.rs u^jm)rmz=Q#K'OOIP4%8"'C*):BG0=-'@'E3; I# :C%:@+LIGM:BJ> ?*9 !(L ! *,- *V7/b/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.12.3/src/raw/mod.rs |a4ůIKM227, PMNJLPD!:   ; +N0*L7!  !  !   B"F.14HO -1<MC ,-!O O "H (%L +BJ +QJLO+&OQKNP>J2L(. %!!L1*I536OINO&2>F0IER+M* :NP E$`H)!B O25NYDK O;:*-D:9QM!B@@5L"%H0E"% . @&+: %&N+0 50<* . 1 '%)"/3BC)8/b4N'24PBFMNQ!2! LIQ5O;41/PMNQ&1! E21!")25)! LI"):)! ^R^M`EAEW&@ 9$<1(:@2@0 0>7E.6=5/8>1I?-!@1-6J#J.1S:4$ 91-<#C1Y:$B J1&$P1ID# )8& G1OL?< KLP@& C*/'TMG= P1O1IM9 N(1$'1K ? $"'-K),W P$"'%K) JN1]?LLC4U);E-! ^`N1X<5)' UN1`=IKN1APF/LGOO?F1U #00*6(*62#0 .YG, :@ 5M:$> =Y:$> PGdXc')+"@7K!eZ- :+"<)5/QH*66> V!NFG&25!:%4%#III:.@[% QNQFJNM1I%N14$' NFMB1W2b-! HFMBP2.1! LK1K9I\"B^ = = (Ec .1!#")2AWA MO8 ?P9 @'A J&? #")$cbL P7<E1*'P<52CUKPLINNNNQ9?H* G1:VN/;670351:IVDAB=&70 $4,-; ?/;CZMON:O 9QO!,'6.L7E2Q:C%3:% E)M1.&% !81.&% @'1.$& N$M*53*=?D1J";!LD0 1N1G,P$PMLA9OJ18M/;&-@"D"64N# X%1ZGM6BJILLHS8? PO++$1%'/ '1.4% 4O?= O4-LN.ZJOWKTK&RJ?dS6,UJ7TKG6+\H6GB3NH^,bdUSR^_-%%R)P)OVHL@7cc+dOd]`dad`b&TJ;#))0@Ke!ReH )7 1% "1.0J N+   4',(:;/21'@ @ P1+';4 !;1+';4 ?1&24IEH<PK))I-31'@ @ <1F'O(G< @1&* 4JFBQM;?$4!#6>:1;>" 91=$3@A G.&E F/9U(D!BOP  Q)K%,W  )#( SG -SG ĩ® ms/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.12.3/src/external_trait_impls/mod.rs /Tψh^=!39J$7"^/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.12.3/src/map.rs AbiϤH' 7AW%/"2(CIMP%MQRTOH %GNQLOPOQ.E<+6)+$+'9*!G(7I&J>5N'>8 IJ *.LQE6+"L$ 51JDEa 1&CZOJ1AZ!QO2DFDEQE 5//"' S18$ UOJDFDEQE 5/@"' S1P6 :9$Q=:DFDE 5// 1?, UIOJDFDE 5/@ 1]@ :S 54C8 1!NPG B"( 1&:. &"- ! HD*" 1+$<. &","! LF$" 1/&D2 && ","! LF'" 1:$ E7 &"4'3$ IE9" 1+9*% E/; &) "4!3$ IE9" 169*% 1&3 $  1!8 $ 1%P$LKE $2*'+ D/19$; F 14' H$]F M"5(J"1<T> * &M,C$, B8]b1X2RW1. K;YE@-,-BK;: 67" 1K &&4( Q $219 1O3* &<LD* 2% Q3* &=LJ$ 6% %QI ?F :4'5' 13QYT U <4'S5' U  (9,(8>   1VTJFN F(& 1&JISNO# F('&& 17UW *8: &&&- 1?GJ, ( d @L3; +, 1e BI24.. CDH@E &-' 6 :"* FMH@E &=1 F :"? = #D4 iMH@E &9!E5 R :&G JDH@E &01 19 $KDH@E &+ "+ 1B :&2 I #D8 Mb_( ,@9OC+#  '+' )+  e Ceb%Nb!e ,@9OC+#  '+'  E .,\.bd# ,@9OC5 / >M '5  )5 //  >) $3\]b%bb!e ,@9OC5 / >M '5   O) .36% 2DG% 2NU %I /HPLU/USs &/+4# 18EP(V >.@CRX<O#R!GG '///#'/6 A%##### 1LER9C7IJ 0&<(5./( 19 K= NIDH@E &85/*LM 1< :%% NMDH@E &85:*KM 1G @9:5JNK3>REARPQLPTPCKUMQPWU -9&:^$9" ,361.('5 %"5H6-= :"/5C8+97  &"C6-? )" 1L)?JN EAV#] - &:^$9" 26*27:JO 1A&UVN$ZQ)/e - &7"]\\'($ -3K ^$9" 4X)" 1>3)' P, /?41$g 5Q:<'I' 1E>L; F&& 1%7HY$ 4; ("D3L.%D?EAM##)7&1'! 9?6K7P6%T#::##EE.-PH <C12'! K+HN68%RD$?IAG##;#5C12&! H&I$68%D$?H@2##;B&*4KHR?8J&KV<%D(EHF8%%=D&*4MJM?8A*L.%D?D@5##7&1' 2?6C*N2%D#EHB;%%7(1' 4?6E2M0%H&QFAG))<$6C12&! VOT>%MABLA6++C" *:"1-0 D51:"1/%4+_=E,A1B &)C#: J.R:%T'77%%EE!U@I_)"HZ 5D!%75,;93O2 HO2 CO2 L&Q0TD%@;)J"0Z 5HD 8 1-(#1-)%1('((1(')(GEAYC 9F36, 3 9:28* /2,+)J"3Z 5d(/2-*$#1 !1D2)8 61?2)8 %M(E !E !/,+)H/Z 5W+40+1D4'20 01?4'C 0K(U<A9)"-Z 53&.3A.FKI"M4 9:S $ 1,K D.A -9^$9" :5h $ ,e ,MK -9^$9" :5c $ 1,U )$1R )@F,6<,6 J* GH 1,F D.9 - ^$9" G5] 1,` ,1M ?? A - ^$9" G5X 1,P $FH :Y> 1Q 2%J W> :M)V) 1U DR bJ =F. : 1I D,(# I( :",(*",'* 1- #2<-F KJ& .:#8*2 %#--#*3*0 *#4*2 1 19 'I, N2 9K30B 1): 9$$>)'U70.0 'U 1*-L1 9$$>)'U'70C ''U 1)-4 9K30C 1)V1 9K30> % 1)-< 9K30A % 1*-< 9K30U 1.< D 9$$>)'U70.H/% (U 1>H ^1 9$$>)'U'$70*0&( '(U 1<H H 9K30M % 1.,H 9$$>)'U70.=9 'U 10*: 9K30E ) 1> 9K30R ) 1*0KB& 9KC0F%$ *0F%% +2 ) 1L '&IE ,8'5 L@/ 9K32\ $ 1D F5@/ -9^$9" K5H229% $ 1'^ C: A -9J (=& :15C22R% R$ 1" /A1S F&: - S?3Z?WY b?.&(R?5P?3QI%0>"30:  )-#!%1-()(GEAS( 3F0& - 3:2$ )T?NP 2&>"3G(,'*$1 !,#8 %G(? !? !\?(&(/&</?%.0+.!(# 0E (S?@Q2MVT%%8. (:8.5=1= :KM 1*64 (:.'*D 1)<M<' (:.*A &9 * 1*-V1Q% 3:.*'@* * 1)-H (:.A* * 1.,:. (:8.5=( :KM 1a+P 4A;;*V,)XM+ V9 153E;QP 3MCCU2+/4 BI -BI WIN) 1$36KB& (:%3$.1' * $3** *3G* "3, 1 1F '&I>//+,%'& FN# :@ 1# 3:',G 1!@/ (:; * 1/ +(A 1P ,A  YF <</ 1M /%B W7 <1)8) 14 ;> bC <9)@) 1K ;@ ddaY= >R)]* 1Q +;)9$ 1 <1CC 1 :8 I( <#(*#(* 1- /$*@ KJ& +<$8%2/ 1$-,#'2*- *$4E/ 1 19 'F) bQC D1,6K 1) ;I a2 6<2+-O 1 2>. +<825D1H :KM 1*64 +<2+-G 1)<P?' +<2*H &9 * 1*-Y1T% 6<2+C- * 1)-H +<2H* * 1.,:. +<825D( :KM 1a+S 6=4%/-+TH- /, 13 3R;QP 6J<U1'/ DNF)DQQO) 1" 3CKB& +<17'.0' - '2*- *7J- %2/ 1 1P '&IF/@+2%') _N& <%; 1 # 6<%#/U 1 C/ +<%: * 1/ +(,A 1O ,,A  >$1D%_! S58XV *&6Y>+5)%4*0=MEK 1DODD5%+) &  / 6ODD5+! S5D XV;H *&$:Y>+5;);4*"=MEK 1LJ 7 6<S5@ XV;H *&$$Y>+5)9MEK 1HI 4 6<O O V V 2*& 2*& V V \ \ 7-  #*'2 %%%@%&%P%%% %/+%& $ + + ,, $ + + *--! $% + + --!W#(&+ &0 "#  "/  (#"2,2"#"2+&&'28#!28#28 .  , )#"2,2##"2 J 4#"2N&#KQ$$ .  8( 8% .  H)/& <  8,+-1+/ 0 7#$M#3!'-'')".1!2'1.3 '1#2 1  $,+,! + !$+,+, !/+++,,, /+,+,,+,,,),, (&<.<.--( /+ ) $+( $6( /3 !#$! + 6<:#$$$ 6<>%((( 0@( >%&&& 6<6#$$$ 6<:%((( $&*  %% &7,I2 $ ,0   '$ )0$(2&  /" ,.&7 0//"  7 &$* '$2 $/ " */  *+ K?/ 4 C?#*4 C?#*# CC'*4 CC'*# &  "&; IC!)$-2 0"!)$(' 0") / '"#+6 2" $$&%%$ C!%3.-2 3"!%3.(' 3"'3*/ ,"#%5(6 4" *%1) V $9* -, , !   .%19 V $9* -?. ?.,*+   #$$ ""$ $!$b=$8! C$@3"(  +$ )+ +7) #$!' ##6 # '$!') #!-? # !$!'%+! # %H!'!/%*! # 2$('K!" +1# ' )9%*# 4% '  6H('O " '*1- ' -C$*- =/ '  -$('J4% A!" +1# ' A!& 4% '  1$('N=/ )E " '*1- ' E & =/ '  6$(' )%& *+10 ' =F%*0 )2 '  1$('6)2 -%& *+10 ' -%*)2 '  2%1) V $9* -, ,<  6%19 V $9* -?. ?.I  R(#!!!  T@7!F& T8&  iD-?L> RKPD>D>DWA  4QCF@ !1)$-2 +GD I "!1)$(' +GD I "+G) : 8IN"$2+I J"A.*2:JO5H2JH2EH2  & E I TN-L III TN-L III V/T% EEE "**956%*50QL-39-'!b6,,Y3]8'#! 8/&- /  "%7()6% G,!0+ &)***3133=Q == &'! $!()-"+% 4" 1! '""""'"""  ۨ     Pݕ⯪N-A^/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.12.3/src/set.rs Z3%6-_% !@HCIQM7 %GJJLPPOQ.E4$67-2!0I! EM!*&DDCE8N.A(B. &- 1(# 3 $  1!8 $ 1%? G"/ ! 11$ >S  B%" * &B8SX0 6PA<-, 1H &8, - $ 1#MH>HDEQE 5// ?12/ F#OJ>HDEQE 5/@ ?1JF 9$MH>HDE 5// 199 F#OJ>HDE 5/@ 1WP :S 54>8 1!QI = 4' 13&YT U 4S 1V)JFN 3(& 1&"ISND 3('& 17*7@ AD#$* ;02-;0 1R AK AD*. FF"4 1eH 9> AD*& E; 1V? " 2G AD0 7: 1H\S? C 4HH C,- @E19 %_HH C+' @E1: :.% J5 G".26 16_^"MC ?:".6$ ? F +_^7OG ?:".D$ ? 1N _^/Y +*(8:;9*.H.0M/- BBC 1>&\V IB A$--. 60:B C&//0 4L 17&L,# DHH &*+ @E1; )ZHH G+( @E1> :-% -)' 3&.?4>13$1?T HN$ 04 #"-1?< %  6F51C0 )! 6F+$R1% =!H AA(+ ' >+>!O AA+ ' ?25!W AA%+ ' <:2!M AA+ ' 90/D$%.6HL%88#7E$%09$[T>%@ +JL$%>C!!HJ$%:A!!RG1%NJCCE$%0<7M!1(E$ML &%%N8- 1+(  1% '1*1401)1?6<1&:!% 14E1BJ?=6=1&:!% 14F1CK?=6G1-0 G1/94+RG1% 91*)*" 1407?6:E1% 71*)+" 14085?6N1% @1*14A>?6@1% 30?621*14QI%0>"!-6"" % (9EA0% 350& * 352$ &Q?NP 2&>"!A,#* ,#, %D0Y?((/&<*<%.2 ..2B.W?@:C 560 16 -: G 5,,,," 1 - 3 5,@@ 175 >4 35,'*M 1:. (58,5=1 6KM 1$[-P 4<;;&V,)<:+ V; 1 !@H# 5@ 1% 35',I 1#B (5; , 1 18 0 C J .&" 3@< =IE 5B> .;7 *,%  / %%@%&%P%%% %%&& && !&&'' $$$  #%#%"%#$ $" #! + $$  '&+ ' $$#$+ ' %$$/.+ ' $$=+ ' +& !!!! 1<& 4 ) 75 F<%% &+,=2 ++ 4T%$'@ %(.#  '!1" "9  $2 ? 3% $ !!!!$ !!!!!! %B%"###  :=7!/& :5L  "%7()6% R!$ & N $ 2c/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.12.3/src/raw/sse2.rs o<846JGQ%[\[%.F2 ? &5M'<-A ' ;* >;10L/)96K/F/)66K2I3: M6$- S8 H*H5 M6$- B; N*/IH<0 :L//? 1=%3 G| +z+e/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.12.3/src/scopeguard.rs m x0~^J'   <!*:51PNN;4  &)(%(wAeH/ypѸI8rx86_64-unknown-linux-gnuHzxɴ*&D hashbrown-aca6f9a6d0bd5465<K#Q׭'؎z؎z~ȃ~؂ȃ؂AUAUUUGGGGG؎GA؎AAAAAEAE@AA@AAA@@@@ȃȃȃAȃAAAAUAUAA  0`0`  (ǝ