Caml1999I037{w e 1Diffing_with_keys(with_pos;!a@@A#pos@@#intA@@@ݰ;utils/diffing_with_keys.mli`}`}@@A@$data@@ `} `}@@#B@@@A@Y@@@@@`}}`}@@@@)@@A@(with_pos@$listK!a@@@@@@ A @@@@@@@@@1a2a@@KC@@(mismatch;!l@!r@$diff@@C$Name#pos@@Y@@@WdXd@@qE@#got@@&stringQ@@@edfd@@F@(expected@@@@@qdrd@@G@+types_match@@$boolE@@@d d0@@H@@@dd1@@I@$Type#pos@@@@@e2?e2G@@J@#got@@ae2He2O@@K@(expected@@de2Pe2\@@L@&reason @@ge2]e2i@@M@@@e24e2j@@N@@@A@YYY@@@@@@@c @@@@D@A@&change;!l@!r@$diff@@C&Change"@@@@@kk@@\@$Swap##pos$@@@@@@@@@@@@ll-@@]@%first%@@@@@l.l<@@ ^@$last&@@@@@l=lI@@,_@@@llK@@0`@$Move'$name(@@@@@'mLY(mLe@@Aa@#got)@@5@@@3mLf4mLn@@Mb@(expected*@@A@@@?mLo@mL{@@Yc@@@CmLNDmL|@@]d@&Insert+#pos,@@V@@@Tn}Un}@@ne@&insert-@@\n}]n}@@vf@@@`n}an}@@zg@&Delete.#pos/@@s@@@qoro@@h@&delete0@@yozo@@i@@@}o~o@@j@@@A@YYY@@@@@@@j @@@@[@A@&prefix*Format_doc'printer۠!l@!r@$diff@@@@@@@@qq@@C@@Ӡ&Define@!D$left;@@@A@@@@@s s *@@@@'Diffing@@A@%right;@@@A@@@@@ @@@A@A@$diff;@@@A@@@@@@@@C@A@%state;@@@A@@@@@@@@D@A@@$diff;@@@A 2$left@@@ˠ%right@@@ʠ $diff@@@@@@@@@@u 2 4u 2 b@@@@F@A@$left;@@@Aؠ!$left@@@@@@@@@@ v c e v c @@@@&G@A@%right;@@@A5%right@@@@@@@@@@ w  !w  @@@@:H@A@0composite_change;@@@AI$left@@@ӠO%right@@@ҠU$diff@@@@@@@@@@@z  Az  @@@@ZI@A@%patch;@@@A/,@@@@@@@@@@T{  U{  &@@@@nJ@A@&change;@@@A'Diffing&changel@@@ڠ]@@@٠$unitF@@@ؠ@@@@@@@@@@}~ @ B~~ @ u@@@@K@A@*Parameters&weight@:@@@@@@@@@@@A  A  @@L@@$test@%state@@@@@@H@@@@@@J@@@@@&Stdlib&resultP@@@N@@@@@@@@@@@@@B  B  @@M@@&update@F@@@@@@%state@@@@@%state@@@@@@@@C  C  @@N@@(key_left@$left@@@@@@@@@@@E  $E  B@@O@@)key_right@&%right@@@@@@@@@@@F C GF C g@@.P@@@@@ w yG h m@2Q@@Ӡ&Simple@@$diff@J%state@@@@@@W$left@@@@@@@@@*e%right@@@@@@@@ @@@@@@@@@@TJ  UJ  @@nR@@@@XI o qYK  @rS@@@@@\s]M  @vT@@@@_e1Diffing_with_keys0.*Wɠ.Stdlib__String0 w_OA4D"Q~~+Stdlib__Set0ܔ@Z8XWaa2+Stdlib__Seq0?72#[O.Stdlib__Result0p~ !ԥ//+Stdlib__Map0*4ɇ2.Stdlib__Domain0'Ϳo\0m.K.Stdlib__Digest0#z25I*.Stdlib__Buffer0,I[?z&Stdlib0t0VoS%{<F:$Misc0Kvor#2D*Format_doc0uy@GmWUࠠ'Diffing0?>pp=3+8CamlinternalFormatBasics0|.e1R$|o5Build_path_prefix_map0zd,J4z@@@Caml1999T037Q \8B5C1Diffing_with_keys*ocaml.text&_none_@@A ? When diffing lists where each element has a distinct key, we can refine the diffing patch by introducing two composite edit moves: swaps and moves. [Swap]s exchange the position of two elements. [Swap] cost is set to [2 * change - epsilon]. [Move]s change the position of one element. [Move] cost is set to [delete + addition - epsilon]. When the cost [delete + addition] is greater than [change] and with those specific weights, the optimal patch with [Swap]s and [Move]s can be computed directly and cheaply from the original optimal patch. ;utils/diffing_with_keys.mliP77^y{@@@@@@3@@@@@@#intA;@@#intA@@@@@;@A@$charB;@@$charA@@@@@A@A@&stringQ;@@&stringA@@@@@G@@@%bytesC;@@%bytesA@@@@@M@@@%floatD;@@%floatA@@@@@S@@@$boolE;@@%falsec@@]@$trued@@c@@@A@@@@@d@A@$unitF;@@"()e@@n@@@A@@@@@o@A@ #exnG;@@@A@@@@@s@@@#effH;@@O@A@A@@@@@@|@@@,continuationI;@@Q@@P@B,continuationA@nY@@@@@@@@@%arrayJ;@@R@A%arrayA@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@)nativeintA@@@@@@@@%int32N;@@%int32A@@@@@@@@%int64O;@@%int64A@@@@@@@@&lazy_tP;@@X@A&lazy_tA@Y@@@@@@@@ 5extension_constructorR;@@5extension_constructorA@@@@@@@@*floatarrayS;@@*floatarrayA@@@@@@@@&iarrayT;@@Y@A&iarrayA@Y@@@@@@@@ *atomic_locU;@@Z@A*atomic_locA@@@@@@ @@@ .Assert_failure`#@@@@@J@@@@@@@@[@@A!=ocaml.warn_on_literal_pattern%@&@0Division_by_zero]#@@@A+ . .@+End_of_file\#$@@@A366@'FailureY#,@'@@A<??@0Invalid_argumentX#5@0@@AE$H#H@-Match_failureV#>@@=@9@;@@a@@AV5Y4Y@)Not_foundZ#O@@@A^=a<a@-Out_of_memoryW#W@@@AfEiDi@.Stack_overflow^#_@@@AnMqLq@.Sys_blocked_io_#g@@@AvUyTy@)Sys_error[#o@j@@A^]@:Undefined_recursive_modulea#x@@w@s@u@@h@@Aon@:Continuation_already_takenb#@@@Awv@&Stdlib@AA+(with_posA`}`}@А!a@|3@;@@{@A@A@G@B@@@`}}`}@@@@@@@A`}`}@@BA@;@A#pos@@@@@}`}`}@@A@$data@@)B@`}`}@@B@@@A@Y@@@@@#@@@ @#`}@@@Ш@г#int`}`}@@$<@@'@@~?@#@#`}@@@Ш@А!a%I`}#@@)@@M@'@@A@D@@DC@(with_posaa@б@гw$listaa@А!a@B@3  @ |]@Aaa@@@ @@@ @@г$list"a#a@г(with_pos,a-a@А!a&!3a4a@@@,@@@( @@@@@@- @@@-@@ @@20!@@@Fa$@@^C@@&@@8A+(mismatchBRcSc@А!l@3YXXYYYYY@Mh;@@@@@@@C@A@GGG@BBB@@@qcre2j@@@@D@@Aucvc@@ А!r@#cc@@͠А$diff@.cc@@@;6 @C$Name#pos@@u@@@dd@@E@#got@@u@@@dd@@F@(expected@@@@@dd@@G@+types_match@@{@@@d d0@@H@@@dd1@@I@$Type#pos@@@@@e2?e2G@@J@#got@@C@e2He2O@@K@(expected@@pC@e2Pe2\@@L@&reason @@oC@e2]e2i@@M@@@e24@@N@@@A@YYY@@@@@@@@@@@#rrd d@@@#ttod@n@@Ш@гw#intdd@@@@@@@~@#zzu!d@t@@Ш@г}&string*d+d @@а@@@@@@#{3d@z@@Ш@г&stringjj@@8@;F @C&Change"UD@%D@D@@@@@@kk@@\@$Swap##pos$@@@@@@@@@@@@!l"l-@@:]@%first%@@@@@-l..l<@@F^@$last&@@@@@9l=:lI@@R_@@@=l>lK@@V`@$Move'$name(@@@@@NmLYOmLe@@ga@#got)@@/@@@ZmLf[mLn@@sb@(expected*@@;@@@ fmLogmL{@@c@@@jmLNkmL|@@d@&Insert+#pos,@@P@@@ {n}|n}@@e@&insert-@@D@n}n}@@f@@@n}n}@@g@&Delete.#pos/@@o@@@oo@@h@&delete0@@D@oo@@i@@@o@@j@@@A@YYY@@@@@@@@@@#kk@@г(mismatchk@А!lkk@@А!rkk@@А$diff&kk@@@)k@@@@@#Πΰll@@#Раl!@@@Ш@В@гӠ#intl#l&@@E@@@гؠ#intl)l,@@P@@@Q@@@@T@@#ܠܰl3@@@Ш@гߠ&string l5l;@@c@@@@f@@#lA@@@Ш@г堐&stringlC@@t@@@@w@@@@@#'mLP(mLT@@#.mL]@@@Ш@г蠐&string7mL^8mLd@@@@@@@@#@mLi@@@Ш@г#intImLjJmLm@@@@@@@@#RmLw@@@Ш@г#int[mLx@@@@@@ @@@@@#cn}dn}@@#jn}@@@Ш@г#intsn}tn}@@ɰ@@@@ @@#|n}@@@Ш@А!rְn}@@@@@@@@@#oo@@#o@@@Ш@г#intoo@@@@ @@@@#o@@@Ш@А!lo@@ @@@ @@@@@A@@@@@@@@3@ @A@&prefixnqq@г*Format_doc'printer*Format_docqq@ qq@@г>&changeqq@А!l@ fD@ Z3@?O@Aqq@@А!r@ hD@ [qq@@А$diff@ dD@ \qq@@@/% @@@ `#q/@@@L @@@ b)?@@@qB@@/C@@D@@/&DefineD$s %s @=T@@Т!DF0s 1s @УР'Diffing$Defs'DiffingAs Bs @ Es Fs @@3FEEFFFFF@_6@A @@"eqz@"eqUs Vs "@+ @;@@@A@@@ @@@@bs cs *@@A@{D@@@Aг $unitls & @@$ @@ @@$leftE;@@@A@@@@@5@@@@'Diffing@@A@%rightE;@@@A@@@@@ @@@A@A@$diffE;@@@A@@@@@@@@C@A@%stateE;@@@A@@@@@@@@D@A@@D@БA+$diffGu 2 9u 2 =@@;@@@AS{$left@@@ %right@@@ $diff@@@ @@@ @@@@u 2 4u 2 b@@@@F@@@Aг(mismatchu 2 Z @г"!Du 2 Au 2 B@)u 2 Cu 2 G@@@13@@jhA@caA@^\A@YWA@@@E@M;@@@AU@@@ @ @@@@4@@@1@A @@гD!Du 2 Iu 2 J@Ku 2 Ku 2 P@@@S)@@гN!Du 2 Ru 2 S@U u 2 T u 2 X@@@]:@@@p;u 2 @W@@Y@@3        @<@AZY@A+$leftHv c jv c n@@;@@A$left@@@ @@@ @@@@+v c e,v c @@@@DG@@@Aг(with_pos5v c x @г!D?v c q@v c r@Cv c sDv c w@@@#3CBBCCCCC@t2;@@@A:@@@ @ @@@@(@@@%@A@@@4 (@@*@@3QPPQQQQQ@ @A+*@A+%rightI_w  `w  @@;@@AϠ@%right@@@ @@@ @@@@ow  pw  @@@@H@@@Aг(with_posyw   @г!Dw  w  @w  w  @@@#3@Evp2;@@@A:@@@ @ @@@@(@@@%@A@@@4 (@@*@@3@ @A+*@A+0composite_changeJz  z  @@;@@ A $left@@@ Ơ%right@@@ Ǡ$diff@@@ @@@ @@@@z  z  @? Composite changes and patches y  y  @@@@@@@@@I@@@Aг,&changez  @г0!Dz  z  @7z  z  @@@?3@aN;@@@AV@@@ @ @@@@63@@%@A@@гF!Dz  z  @Mz  z  @@@U@@гP!Dz  z  @Wz  z  @@@_.@@@r/z  Y@@[X+YX@XX@@@X@X@@3#""#####@;@Agf@A+%patchK1{  2{  @@;@@A@@@ @@@ @@@@?{  @{  &@@@@XJ@@@Aг$listI{  " @г0composite_changeQ{  R{  !@@3POOPPPPP@j);@@@A1@@@ @ @@@@!@@@@A@@@+ !@@#@@3^]]^^^^^@ @A$#@A+&changeLl~ @ Gm~ @ M@@;@@A<&changeb@@@ #@@@ +@@@ @@@ @@@ @@@@~ @ B~ @ u@ʐ0 Atomic changes } ( *} ( ?@@@@@@@@@K@@@Aг-'Diffing~ @ g~ @ n@4~ @ o@@г6$left~ @ Q~ @ U@@>3@bO;@@@AW@@@ #@ @@@@63@@%@A@@гG%right~ @ V~ @ [@@O@@гL$unit~ @ \~ @ `@@T @@гQ$diff~ @ a~ @ e@@Y*@@@o+~ @ PU@@W񐠠UT@TT@@@T@T@@3@7@Acb@*ParametersM@ w @ w @ Q@Б&weight A   A  @б@г&change A   A  @@ @@@ -3        @a@A@@г#int A   A  @@ @@@ .@@@@@ /@@ 0 @@@ ,A   @@ DL@@@@$test 7B   8B  @б@г%state!D FB   GB  @  JB   KB  @@@@@@ 13 M L L M M M M M@<Q(@A @@б@гA$left \B   ]B  @@ @@@ 2@@б@г %right kB   lB  @@ @@@ 3 @@г&result xB   yB  @г &$unit B   B  @@ @@@ 47@@г$diff B   B  @@ @@@ 5E@@@%@@@ 8K B  $@@@4@@ 9 @@ :Q7)@@@H@@ ; @@ <VK.@@@^@@ = @@ >[f3@@@ B  6@@ M@@8@@a&update C   C  @б@гX&change C   C  @@ @@@ ?3        @z@A@@б@г%state!D C   C  @  C   C  @@@@@@ @ @@г%state!D C   C  @  C   C  @@@@@@ A0 @@@@@ B@@ C5& @@@=@@ D @@ E:@@@@ C  @@ N@@@@@(key_left E  ( E  0@б@г$left!D E  2 !E  3@  $E  4 %E  8@@@@@@ F3 ' & & ' ' ' ' '@bw(@A @@г &string 4E  < 5E  B@@ @@@ G@@@@@ H@@ I @@@ AE  $ @@ YO@@@@)key_right LF C K MF C T@б@г)%right!D [F C V \F C W@  _F C X `F C ]@@@@@@ J3 b a a b b b b b@<Z(@A @@г 6&string oF C a pF C g@@ @@@ K@@@@@ L@@ M @@@ |F C G @@ P@@@@@W@P@@zH@A@@3        @%C@A 3        @w@A @ w  G h m@@@ @ w y@3        @}@A@&SimpleN I o x I o ~@ S@@Т@@ Р*Parameters I o  I o @3        @@ @@}@vD@@@.@A@@Б$diff J   J  @б@г%state!D J   J  @  J   J  @@@@@@ N3        @4@A @@б@г _$list J   J  @г$left!D J   J  @  J   J  @@@@@@ O# @@@ @@@ Q(@@б@г $list J   J  @г%right!D #J   $J  @  'J   (J  @@@@@@ RJ @@@ @@@ TO@@г %patch :J   ;J  @@ @@@ U\@@@@@ V@@ Wa" @@@B@@ X @@ YfN@@@n@@ Z @@ [kv@@@ QJ  @@ iR@@@@q@@@3 S R R S S S S S@ @A3 V U U V V V V V@@A [I o  \K  @@@@@@ aI o q@ @@A@PJA@A@A@@:A@A@@{@@@@@@3 s r r s s s s s@@@Ց0@@@@A3 } | | } } } } }@@A s - M  @@\3        @=@Ac@@@ s@@@  A@  K@ C A@A@@x@@r@@@3        @P{@s/-A@(&A@#!A@A@@A@A@RLA@ A@~A@KEA@@@ @@zH@@@2@+@@!|@@@k+@@@@C@A@ H************************************************************************ A@@ A@L@ H  BMM BM@ H OCaml  C C@ H  D D3@ H Florian Angeletti, projet Cambium, Inria Paris  E44 E4@ H  F F@ H Copyright 2021 Institut National de Recherche en Informatique et  G G@ H en Automatique.  H Hg@ H  Ihh Ih@ H All rights reserved. This file is distributed under the terms of  J J@ H the GNU Lesser General Public License version 2.1, with the  K KN@ H special exception on linking described in the file LICENSE.  LOO LO@ H  M M@ H************************************************************************ N N5@ @* When diffing lists where each element has a distinct key, we can refine the diffing patch by introducing two composite edit moves: swaps and moves. [Swap]s exchange the position of two elements. [Swap] cost is set to [2 * change - epsilon]. [Move]s change the position of one element. [Move] cost is set to [delete + addition - epsilon]. When the cost [delete + addition] is greater than [change] and with those specific weights, the optimal patch with [Swap]s and [Move]s can be computed directly and cheaply from the original optimal patch.  # ^* This specialized version of changes introduces two composite changes: [Move] and [Swap] U * Composite changes and patches Z1* Atomic changes @-./boot/ocamlc)-nostdlib"-I&./boot*-use-prims2runtime/primitives"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I%utils"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-c f g S/home/teraram/ci/builds/workspace/parallel-build/flambda/true/label/ocaml-manycores >10/.-,+*)('&%$#"! @@0ֲ+LýAk|3        @ @@5Build_path_prefix_map0zd,J4z8CamlinternalFormatBasics0|.e1R$|oR0?>pp=3+ 0.*W.Stdlib__Format00FClW/Stdlib__Hashtbl0(L%bԠ+Stdlib__Map0*4ɇ2@0.*We@@ە @ R @ ג@`g  @ < &@ߐ T X  ͐ @v = @@@ i @  T @@@  @@ذ / @@ j \@@@ n @/g@v ғ@ [ @ D@@P@@