Skip to content

Upgrade instructions

Axel Bocciarelli edited this page Aug 30, 2021 · 34 revisions

This page includes instructions on how to upgrade from specific versions of the deck. If your upgrade scenario is not listed below, please refer to the instructions in the README.

Unless otherwise mentioned, the version of the deck is given on the deck description page.

From v4.1 to v5.0

English versions

If you have the English versions of the deck (standard or extended), you can follow the normal installation/upgrade procedures.

All other language versions

Due to a mishap with GUIDs (which are about as annoying as they sound :)), the original v4.1 release was buggy. The v4.1 release was quickly taken down and the issue fixed in the v4.1.1 release, but you might have installed the buggy version in the meantime.

You'll have the buggy version if you installed between 1 February and 6 February 2021. If you don't remember when you installed the deck (I wouldn't, after several months!), you can check whether you have the buggy version of v4.1 ("v4.1.0") with this debug console snippet:

Debug console snippet to determine if you have the buggy v4.1
# Scotland chosen because its name is different in all our languages.
guid_scotland = "h~5xz+=ke~"
en_scotland = "Scotland"
scotland_fields_arr = mw.col.db.execute("SELECT flds FROM notes WHERE GUID = ?", guid_scotland)
if len(scotland_fields_arr) == 1:
    scotland_country_name = scotland_fields_arr[0][0].split('\x1f')[0]
    if scotland_country_name == en_scotland:
        print("You have the English version of the deck.")
        print("v4.1.1 and v4.1 are identical for you, so you don't have to worry!")
    else:
        # In principle, it's also possible you have the English version,
        # but changed the name of Scotland.  However, it's unlikely.
        print("You have the buggy version of v4.1 (v4.1.0)!")
else:
    print("You DO NOT have the buggy version of v4.1!")

If you're not familiar with the debug console, you can access it with Ctrl+Shift+;. After pasting the snippet into the top box, you can execute it with Ctrl+Enter.

From v4.1.1

Any language except French and Norwegian

If you have the Czech, German, Spanish, Dutch, Russian or Swedish version of the deck (standard or extended), you can upgrade using the normal installation/upgrade procedures.

French or Norwegian (Bokmål)

If you have the French or Norwegian (Bokmål) versions of the deck, you need to first run the corresponding debug console script below. Note that if you use AnkiWeb, a full upload will be necessary the next time you sync.

Debug console snippet to migrate the French GUIDs
guid_mapping = \
[('6=u<D5pin$', 'p);vRzMs+W'),
 ('9hd8!!ycm1', 'Ive-9<)?/'),
 ('-*s*/9Bs5]', 'o6puwHE{j4'),
 ('4X<I%j50vO', 'ua?z9KS@^h'),
 ('&<jl3wt=@N', 'o.l+o.aIv#'),
 ('9V(hJ,wI/J', 'i+%_VY]7bt'),
 ('#VI;#M=9p0', 'vwLrgavleL'),
 ('#f!B=ER`FI', 'umk_Ql/M`8'),
 ('(=4za=v)XL', 'F*@Hxe1UYX'),
 ('!t*473y]Ab', 'oTmq$Cq1H`'),
 ('&kNm}C1;F^', 'fe<{h`wWIF'),
 ('8HhkHhJ{zG', 'dTNjd[5|Ge'),
 ('56heGus|:W', 'e?6[KX^Js+'),
 (',{L,s4k?Ei', 'CJb&~c&tZv'),
 ('$*(t0;xm-I', '0/,+rSKt6'),
 ('%-!:KaSHN^', 'qTFGENa@Y3'),
 ('#1;Z.gJtCH', 'AtMq%)YA4~'),
 ('&HCzzs8Azt', 'O0NI(S,j2o'),
 ('/$EW+%8{uu', 'm]_=p1zwik'),
 ('3sa$9R,{2H', 'uuu#3&G{(R'),
 ('.E2S!BCc]o', 'qMOzrk<+(:'),
 ('$0oS&elogg', 'zXq}ul(8_E'),
 ('sMhU>3vg+', 'i_0H+>}|<.'),
 ('$~oj/Wt/Ds', 'G6=c,ll^]`'),
 ('$g#hDGvSF;', 'jk_(_rr<<!'),
 ('#(P(|c!kKo', 'IJG[L,X;A3'),
 ('-_F_/K$VQL', 'vaSXyU,d,a'),
 ('46.6)30lNw', 'L[=I7EcROn'),
 ('&;_]4B@=PD', 'L&#(>5c7a*'),
 ('%-a<I17=N1', 'Q}6:Ng``xM'),
 ('$7da!Nj/Q:', 'upq|kJ[Qi$'),
 ('!!D6Ivb.]#', 'w1FM?@j-tk'),
 (',%%ecY+9=G', 'gPWIY|dqgC'),
 ('(QQ?Y*LQ]c', 'hBl;b1akKo'),
 ('X0E7(l<s4', 'kbJZsU]Tm~'),
 ('&|Jl^Y30aG', 'x)ZvHsvNcz'),
 ('/ZZE730XJ6', 'nlky<K>nXE'),
 (')`rlSMmq5C', 'B)M|?v5vl3'),
 ('%yG[ER$x!n', 'DUa%sQ;0;@'),
 ('7{Nf8U(:Yv', 'IkP885[1L6'),
 ('+~@cG#)SLP', 'h0~.:5}&Q8'),
 ('#KODG$yc>M', 'INr2(vFB[p'),
 (':no*A/F-X7', 'Q=UkoGw%47'),
 ('#*v.r[&I!:', 'HsOJP(RQoY'),
 ('/qbzM$A]}&', 'J#u?@$XnR$'),
 ('+3Tw45u=NZ', 'iB7LW}8*Ii'),
 ('8?DMM6C%Mz', 'vbEn[U)2cf'),
 ('7!~yssKO^1', 'n65[nUZiZc'),
 ('-1dy+?BC2Z', 'K6g6$oK|jN'),
 ('%2B%b*%04$', 'O}c<W!@%aZ'),
 ('#L#s^-u~3#', 'g[tAvcrR3^'),
 ('9chyXc|PI{', 'Ft$h3i.|l.'),
 ('&s~^Wl-d_U', 'y8u|!Om27i'),
 ('4:raHq`A,^', 'lo1wB^!`h,'),
 ('$sM{>P7XjN', 'y`v(^%tvG3'),
 ('!igL313u6Z', 'uO%6i;{0PZ'),
 ('#.pgRFoi{5', 'Ddu%%IIGo*'),
 ('3lK*SldlTg', 'rl:ZBh8sp^'),
 (')v:.,va`^]', 'cHz7UCnS&i'),
 ('+)Q)kWr_&W', 'wAQL>iJ/-]'),
 ('/xT`}}~iCg', 'cM;m6U=Dg5'),
 ('(]fmzQ[XIP', 'FFMu>hPw;u'),
 ('#!,>y|yo#S', 'I_Q-5hX|5;'),
 ('w4mckxRd8', '[#-i4q4Hz'),
 ('8N<ZUI<7U{', 'z7[5xEgcrA'),
 ('8m=%vP4<vl', 'Ay%EM@L0b~'),
 (':VT&estn,-', 'bsVR4>6gl0'),
 ('-vzFkuSyI', 'QykP%i/vKj'),
 ('86,Z?=IsFl', 'bP:bhgKryC'),
 ('#_PR1yB8Ma', 'G@(d+tSaA^'),
 ('.dNLR]_sx)', 'm$gS*RQqQ1'),
 ('#VE^N5hGYu', 'O#$FD?t_j)'),
 (')#^@iC_^[S', 'o#s^(c`}.G'),
 ('!Zw]xBvuR}', 'w[%X~D#R,7'),
 ('!b-gm4nTaZ', 'CY~?X/vp+j'),
 ('*0z&2xS`./', 'Cu].QU#a&l'),
 ('.fSbI)(WoY', 'hX`.aRn$&{'),
 ('*@96zt>W(p', 'IThTxqnu;|'),
 ('7,cs//Xh%G', 'lW;xJ;HJv/'),
 (')V0#0Kxsw}', 'c(A-(Xa1)x'),
 ('(A@dh_GNTI', 'hv3J+WS`/,'),
 ('&eYZ1wa1.|', 'y;mRF(PX>0'),
 ('-0_uAO:q9w', 'q1DvZ4Qkh,'),
 ('5?1c-[%F4W', 'k{y?<`|#63'),
 ('#S<rhq}E^A', 'ny_8#ZQA/?'),
 ('-s<:n-Y4O`', 'svVKQZTWFU'),
 ('&qqVQS/L4K', 't,2AZ>_CA/'),
 (':oOUjPA0l@', 'n,~jhT?[]W'),
 ('&sRN]ZC^IC', ']#3u-c%5X'),
 ('#k5iRD7&/,', 'Qw(O&Fnkul'),
 ('-Jf2|I3J_%', 'Hk9k3U@-DA'),
 ('/f,JZwW]PF', 'LG(/,IHQi@'),
 ('#;To0tpzRI', 'xwNS`|r~1x'),
 ('.?}z):Mm{e', 'qJP9,I/X;?'),
 ('9z,F5a_,MU', 'H38F4o,>An'),
 ('/ke~[g[5o.', 'xc)G{&Ta22'),
 ('6@4k^ad#{7', 'DS~l]pq.y<'),
 ('$[5~vtlvR{', 'uNyx=*R.$~'),
 ('6%=p&3,>uY', 'E2g&j~V_+i'),
 ('*]@=|(P&<T', 'umTKoLZSfc'),
 ('.=6hM$s#y-', 'hZ-27c=iA5'),
 ('73Gm00~5lE', 'H(5ar5kY/Y'),
 ('8A@HUJr:ff', 'oi2j6zc,T]'),
 ('4IW9N[*%GC', 'bDx}p^DSVL'),
 ('7F#;o#)skB', 'hN=Lly0+D{'),
 (',_;c/s#fv@', 'w#;7*w+/l+'),
 ('6|`1h}9+}T', 'wt?Q|)Y7F1'),
 ('&%UrM&9*M^', 'i_cTqW/(1E'),
 ('-B?LuKnS-_', 'q@wPIm/;#)'),
 ('%=z.T2U3DH', 'DN*^.Q~HcI'),
 ('$Yv;,~-qh^', 'x2E6#%E!/p'),
 ('-6zBhoKab*', 'r{g3sXk]Cm'),
 ('&R+cVo=x@J', 'Jcx)35]`H]'),
 ('34oNS(6k9e', 'bp+p&^O&Nz'),
 ('-FIWqaZ=JS', 'HPt<x)x%Jh'),
 ('+!j{6/<S]Z', 'p`7>hfkNfW'),
 ('%xM&}K46Wj', 'C^p96b?pgu'),
 ('&j!yffCSDy', 'g^hxtS_)Ja'),
 ('!r=zLB$L+y', 'N@X:<s:Osr'),
 ('#Qh=s|ej#b', 'Kc0|/i[KY@'),
 ('9|Lp]CQLcb', 'm`:zwx?UCO'),
 (',&$^l?t%<u', 'kfOOt3pPdZ'),
 ('!;Dq}1-MZD', 'G]3ZD2G$ww'),
 ('%gC$*1tfYh', 'rHNPZJUEFp'),
 ('&BOwzZ[?oQ', 'f;],oZor+L'),
 ('!4zXnDu[kP', 'CW+/?p:?BO'),
 ('*sUb?H$Mz_', 'FHqW?gqMKx'),
 ('6C_}Ueyong', 'HQ$_4*oGf3'),
 ('%<Up(wv26R', 'pcYb[d%n,O'),
 ('5#NGm&~Qb]', 'g8.ti_%`5'),
 ('95;[^xx(0{', 'hE&?:>xB0v'),
 ('&sa}G#;+dP', 'MV[vr/8+{>'),
 ('6I/|P;+uP+', 'HrZ~>9NjBH'),
 ('%#/9gH$pBE', 'A_Vjy~^@?}'),
 ('8_CQg1KM;?', 'DDzO/+_}ww'),
 ('!Q@j;oDlzU', 'x7GO_2-WY$'),
 ('&eZ:rb2,KA', 'i3#3D+l`w$'),
 ('%vEb08UVjK', 'f0b;Rq1k!_'),
 ('4TAgip=34#', 'twkWz3eS+-'),
 ('6`t^+Ihw=b', 'j8XG#DTPjL'),
 ('&~heQ]qzLh', 'AmEQ/?7Q#x'),
 ('8*6K9&w+HE', 'Iq@M;2CIzf'),
 ('8hl0)=npe/', 'uhYJm4N/!$'),
 ('9MdUp{rI|T', 'oCa[}6b]{J'),
 ('7Z@:HCq)~;', 'ymuYBM5)ux'),
 (')hJ.^svNj|', 'u9/j`LQwrv'),
 ('/?GN3hOh;]', 'B|v&Z,u=T'),
 ('6$a$0NrHg[', 'bTrCSD^W4m'),
 ('*Lx=O4#}}}', 'xQK`2V6wDX'),
 ('&j*`NS9VX6', 'r7L@;3f5Y^'),
 ('8JI.v!2-9k', 'vy}j#{dVU,'),
 ('%p_,w4-u*E', 'M4#3n[]D/T'),
 ('$8H<CYW:j{', 'p(t;=_z4`='),
 (',{RxI#)OqC', 'Gh36nI3h)B'),
 ('(/zPGU)G[h', 'A%emXRt~a]'),
 ('$p$KneE.7u', 's9?zpnq?/g'),
 ('-x.Z)J:Wq7', 'Osy[q7a%UV'),
 ('+)DCoJT@`+', 'iyxxWaZ8Wb'),
 ('9w+LY`MQI=', 'fRSFWQK>W('),
 ('%u?5Uvi7Iw', 'lcC48!,,{,'),
 ('+]`9*|j,48', 'ja9thWdG~?'),
 ('-,vL,Ck1b<', 'Cdm[YJ2i`t'),
 ('#JOB#-z}f0', 'BxD0*Nx8HN'),
 ('$w,nJG9B]S', 'mK?UY]$UVp'),
 ('6|R,LHN4W<', 'e-#MW&-!m7'),
 ('),m?:sFJM)', 'O_HGdfn7R7'),
 ('-$(A|xCw_Q', 'rnHajUXn]|'),
 ('$9D)+!30rS', 'ns:xfr`B.`'),
 ('54#chhJxe$', 'JXC>bWd>&Z'),
 ('C<30_,bn[', 'BNN4wvUA&P'),
 ('6|Sy`~3!SD', 'sOd2&00m?K'),
 ('3}:C`LN-gu', 'q382+6kQ}}'),
 ('-F<:3!Mw)S', 'sgq|,rEUT>'),
 ('.#L|`l0FG!', 'Mmy:MH3p-5'),
 (',XPV8.Y1]a', 'bb1Lx^zyVu'),
 ('%I8+tuQBJS', 'mSo]}$<EpU'),
 ('97u^uvmjWX', 'OXH#q-u9XF'),
 ('9/GzY1g[3q', 'P[t`X50n$K'),
 ('.%}9u/#wp_', 'CaSU3w{HJO'),
 ('8J%?A2<9^^', 'b(JUWzefV^'),
 ('.1Y%ZGu9B$', ':?*,_d`iM'),
 ('O%RvG>|&U', 'N$AR]vQR?L'),
 ('6ePg6aB;Xn', 'jFv`AX2j9Z'),
 ('.kYP5Cfn.X', 'w{[+/hi?P7'),
 ('/Pp>neNJBu', 'C}D/)CbE1E'),
 ('$-~F9])-*A', 'r]by!Z{bH3'),
 ('52|EyK(XJ`', '5H}uoT?x9'),
 ('.cSpQ^;3]E', 'd_{5}`KOeV'),
 ('+`7CxeatsD', 'b=!Fr*y_C!'),
 (':x<[.Y4EzS', 'P[nc3.TLD`'),
 ('&!)INMVCp:', 'G~@ufSz/a;'),
 ('$gcuZbj4h-', 'J32gf}o<MD'),
 (':iuV9+QXx~', 'dnCkHdCc(#'),
 ('4>dnXM*r6i', 'M$iq^Ddz$z'),
 ('8xCSB:9T#%', 'cH+7jy4I,m'),
 ('8Fvw!]i-Ky', 'uQ-6g&t&/t'),
 (',ap,Z]l4j~', 'ltf#^eLgH='),
 ('860fGtb*C', 'cYWtxb5I.n'),
 ('%PEa&:7)~{', 's&%k)X]^%+'),
 ('+FlzQtk`=B', 'b-3J|=Nm69'),
 ('%qMWTh4cJt', 'G;f97RI^i|'),
 ('#z:ag9+^G`', 'Lng7&qhm~G'),
 (',|(kc|s`8L', 'L~g[-Y5a.V'),
 ('%mSEQe2l<A', 'uEmYu^%Cdm'),
 ('Gh*ms#MOV', 'dW]ePHn0<E'),
 ('7</<K,iSXc', 'xj/*Nw.FyN'),
 ('+~JfScn!`6', 'I5l?zw=g2W'),
 ('+(OZso/p.^', 'HF8bKY!Wia'),
 (':ENbJ%yR,D', 'PcUr6zy#ql'),
 ('6_`wCn#u5[', 'uTx.c_gB-g'),
 ('#`/r{t6kJ$', 'M=(.zK+i8]'),
 (')igfmH$6J&', 'w?},I|jwcN'),
 ('3b[296X{9?', 'wU6oi[(~g5'),
 (')dGvASz&G>', 'rJf@3vMORX'),
 ('*Hn*p*)1#L', 't)7YT?VSxY'),
 ('43cTOGEj)l', 'm*zfj4hJj+'),
 ('&<={(+jozV', 'z#:5{OdBN]'),
 ('-5!6[%RV9*', '`ePFuGBDX'),
 ('&yogG~T>p3', 'co2;shq(5S'),
 ('9gWY@FF|-W', 'z>%tQDyw7D'),
 ('61xR!}Ai>,', 'yc9tc)O|D)'),
 (':MC[k=Y11F', 'CmEf8|#B?{'),
 ('.rmM.@lH+_', 'QG_m`Y6OnU'),
 ('$5DS;+F%kJ', 'H~PFXc^2.|'),
 (',[$I2]lD>K', 'CuDj}XI),:'),
 ('3~naGW46|}', 'j]:U,18j(c'),
 ('+D,[UF8cTc', 'c+Zk;oa>e/'),
 ('#5yj*07m,E', 'dy>%OTh=dS'),
 ('%/jf,8#~[^', 'j_Sf!`8fUy'),
 ('5myhN(r.ry', 'ET[Oa;OLaK'),
 ('$MiT.z/Fc8', 'wt]m$(ynIk'),
 ('5dG$pYv{K<', 'dC[x.]4VGu'),
 ('*a4gvLV](+', 'w?1B]|VvAn'),
 ('(q-])R)46M', 'N?ze.ZE4@K'),
 ('*g>LI2fHxg', 'DRS!iJyvJG'),
 ('/D~Q*P+F}F', 'L5qdsn2.Vt'),
 ('-Z7sTcvA-:', 'u:[~?k7{9`'),
 ('3v(.j8C)yi', 'ct@4i2c5]R'),
 ('6Gv>I942T8', 'Pki<F_#mJ$'),
 ('4brK(ueHjr', 'v&W7WvlFQH'),
 ('.U:4$M0^-D', 'JS/Mu$zWXF'),
 ('#S,&1?JB/4', 'd*RV!D6_/z'),
 ('5KvPdycB[*', 'r6u%*kzI$i'),
 ('/^I6?3XNUl', 'L{DDezoz^'),
 ('8L3/=bn10A', 'wao7Vn!%<:'),
 ('pjDe<0+nI', 'B,.i%oyEc%'),
 ('@A!3Lr}AC)', 'k9gbGeqVQp'),
 ('}W[v]WLqpS', 'N;|zJ3r1U0'),
 ('`[EFj3Q_Xc', 'x!47n<n_@M'),
 ('aX)c#|LzSg', 'ilFuAD^xhq'),
 (',0YP]2b@j(', 'KfB$YBpp#='),
 ('4Dq;11v]_e', 'oPx5Bq1z_~'),
 ('7<aB1a+~cq', 'xs+r,A:Ybh'),
 ('(C]g#<ka!b', 'l:S1L#&(=-'),
 ('71i7gJj,l8', 'vV<w5Z&41M'),
 ('8Oe@_|:,Pp', 'l?;mPU|Vu$'),
 ('-U}*=l~z0q', 'g&y>f[SfCo'),
 ('5t]f^yIVO5', 'mC$X9cRfF4'),
 ('4M<E98:`~`', 'CJHNGvTT1-'),
 ('6VjEVH*n<a', 'c.@-5vbYSr'),
 ('%xBPj3X%+H', 'Bvr#2W*V4O'),
 ('6x64b,+z|j', 'HY(==0nL/5'),
 ('^#5pa%x1,X', 'x9m098F78O'),
 ('+9>b&ggK{8', 'QGDo{u)NuE'),
 ('=5v4XjOX^U', 'j7FyQaW,n{'),
 ('{<NC:Dq=AP', 'QwwgN[<duR'),
 ('6cwO!PU0l6', 'gb>Q&:;ekF'),
 ('!Jsg$jKgv+', 'dNo9L*#}F?'),
 ('>0NDs;]+8P', 'f^0aH]F%!V'),
 ('<!OcYW#vke', 'kfniDM68Fr'),
 ('`vw1aQoPmt', 'HG:Vbwri`^'),
 ('8Z^|Di-3{d', 'QplodT,RlZ'),
 ('}.rQ5q3d<D', 'b<9P_L#s6?'),
 (',:Shm37_h@', 'L}~TYYHI[l'),
 ('<a]{=Rhi4', 'Jt*Ggc<HyU'),
 ('@]8x06>+BF', 'vhs6OnHZaA'),
 ('>]pOHrn[3r', 'H1L?;^]mY]'),
 ('5g?v1zUT>w', 'IG)L^LIKi]'),
 ('a%:~pq*Zm{', 'jcw8^HL&m5'),
 ('-f.maKrMXZ', 'P}xBc:eoH6'),
 ('.-9~%U?$I:', 'yu2IoRS.M)'),
 ('6P-AoL#`1)', 'k]|`O*|sYC'),
 ('*Y0`l7(NW{', 'HnPq%JW}F9'),
 ('+q6ucl<dnP', 'BZ#71-])!<'),
 ('b-MN}/UQnp', 'hzN$`?YJ.^'),
 ('#6!CT^2j*&', 'H5FPagvP>_'),
 ('Ktd^5Q1j?', 'FIQ,YV4(u'),
 ('5%Xglve#^/', 'FE||8n;*pO'),
 (')*H8xs9sa@', 's~{9dxCHY+'),
 ('{miPy~A<!k', 'BLz2@~|QXB'),
 ('f01lKj)]XJ', 'Q&)&?}53&@'),
 ('4siewp.4[V', 'bP[|CaNP86'),
 ('(eHZaC~(l;', 'Ba#m$J?4gW'),
 ('<y2-E`C%:d', 'Mie3UMRyst'),
 (':zYlU5e>v/', 'n^,sUM_!k_'),
 ('h,gB?X*uD', 'xAxtN`17x^'),
 (')3u-*ZQo7+', 'B35In/Q=Tg'),
 ('3LA?Jag<~4', 'GRj)gtiMbo'),
 ('awWq`A6Q!q', 'l&Uv?yLL12'),
 ('ftTMc81UP$', 'bMX+]D]Ya>'),
 ('*E7|5>f|hE', 'E9Y{~}fJ|q'),
 ('+N5*Ov8;6:', 'wx)T{wK99M'),
 ('unrS^0xLD', 'vk=UoW^`zU'),
 ('.!m2T?CMvM', 'Ek~&z$tb-I')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")
    
replace_guids(mw, guid_mapping)

If you're not familiar with the debug console, you can access it with Ctrl+Shift+;. After pasting the snippet into the top box, you can execute it with Ctrl+Enter.

Debug console snippet to migrate the Norwegian GUIDs
guid_mapping = \
[('e+/O]%*qfk', 'iR~,tG{Val'),
 ('h~5xz+=ke~', 'dYU=!{y0JI'),
 ('s9-GL*@AXD', 'o+)poCG*[u'),
 ('cPO|Cru8n<', 'rymWNfd[Q['),
 ('m*#%sE.`.;', 'PgW-Gd/F7?'),
 ('hNE9}>;Q&-', 'D_u6CIg+wo'),
 ('jN|NAUP*h}', 'emhqi6m<;X'),
 ('j|z@PMgdx,', 'K-DUUlt#`y'),
 ('n+t>2`:;P/', 'dSwjDNnc7['),
 ('ilGtw#=asM', 'fWbYL=>/W&'),
 ('mcc&0Kq^xE', 'L5j),}Ge5('),
 ('gz9${p}er*', 'l$1j[S4Z_w'),
 ('dY96`C-f(_', 'AY#z1NqLE<'),
 ('r>aI-$$|wT', 'po@@>#g44W'),
 ('k9E.p^<u$,', 'ru^aT_ML-F'),
 ('l$zM~ihPFE', 'eX=4L.MZ/)'),
 ('jTNoKo}Bu+', 'j4W[{Wd$i.'),
 ('mz[>>AxIr4', 'g3SU#SH>>e'),
 ('u4^lH.xem5', 'yLv#s7(0/U'),
 ('bk2ByZIeU+', 'n`P0w@?q1u'),
 ('twrhzJ[k:Z', 'fy^;okm_1k'),
 ('kS)hDm%w}R', 'EHD^CXLh4!'),
 ('AES],s:8=', 'd55<bwWcif'),
 ('k[)#L4.[v3', 'Fwsjx3/<>H'),
 ('k}A9]O:0xw', 'n{xEq+_:c{'),
 ('j7eEZkzsCZ', 'rQ)Q-EabYy'),
 ('s<_WLSB3I/', 'oLdeL6a~[X'),
 ('cYKvF#ptF7', 'b<&&OM3fYy'),
 ('m)WUtJS`H&', 'uo7@ZxIP[$'),
 ('l$2O|9w`F~', 'dmsIj2JJlB'),
 ('kZ52zV#[Iv', 'eYu}=wB+0H'),
 ('i2]v|D3@:j', 'u[#kd&*}Yc'),
 ('r5C646H*+*', 'QKm&4[Vr$t'),
 ('nIfRn<aY:N', 'l2LUY9/|t]'),
 ('5S(f7%O-$', 'Dh89q.%Zv<'),
 ('m?}%V6s8]*', 'C[hSE1x])}'),
 ('uRo^w#p5Be', 'j~OT/nTkAt'),
 ('o=,%hU&yX%', 'eX^dJ|[uA*'),
 ('lq`T^ZBF2Y', 't9&OjLNz]p'),
 ('f>c7x2E]Q6', 'dn}H9%A|!j'),
 ('q[S4`,F0D=', 'K/#FG8!}DG'),
 ('jCd]`-=k,:', 'zU[B!jrpgl'),
 ('vf)G?[_?Pf', 'wOOaycR~z&'),
 ('j9:K,~DQ2v', 'HbTQZU8t9?'),
 ('ui3>b-?a@m', 'M7m8p!;nP0'),
 ('qVi;t%/`F|', 'p%wZ4zSjCt'),
 ('g-]bb&[.E!', 'o|SPdBlcOk'),
 ('f21=-A~W;~', 'neb-=f&6r^'),
 ('sT5=H|@KU|', 'pnd}~gw/:?'),
 ('lU@C3<C8Wk', 'bMw[aotLc)'),
 ('jDA-V?/hVj', 'wPY8.I+[Xh'),
 ('h_9=mkZXAH', 'cJ%(LRs3)q'),
 ('mk1VltJl<]', 'MnfK7af3~4'),
 ('c(,2{yXI#E', '>1ErI|!*U'),
 ('kkbYQXw5b;', 'w`{+uGys`~'),
 ('ia8as9sCY|', 'vxq=QA:/`z'),
 ('j%*8gN)q>d', 'N(,;S#&N9e'),
 ('bd~Ght5tLR', 'DO-=AqS[Lk'),
 ('onMKID2d;D', 'L1&JVH|{R,'),
 ('q8fF$4,c6_', 'b#r[:tRj+!'),
 ('upiX0g1quR', 'G4K|pWoffU'),
 ('n:7&>YT5A=', 'A|BG)32=10'),
 ('j2IQ=f=w3@', 'C18`2)zTm('),
 ('EWXNc<g5)', 'k[{=KKFtb8'),
 ('gFOojQO(MH', 'E8sr_C_vb['),
 ('gePC:Xt_nW', 'x4(t9J8nNQ'),
 ('vNiD6A.v#s', 'p~,(pas|?P'),
 ('?n!)c/h=Q', 'e7w}$Wx7yb'),
 ('gYIoR`|AxW', 'bK<b=p-Thp'),
 ('j<egqG@)EL', 'G{5yk85S92'),
 ('t`cagaWApo', 'w9bE`pR=z#'),
 ('jN^Vc%9OQ5', 'or<mz7dcH6'),
 ('o3VS!KWb/@', 'yRZn!>(_#b'),
 ('iR;U<J:CJJ', 'k+4CLKx35g'),
 ('i^J8&$(1]|', 'q%;R^5+|lP'),
 ('pS>DrFhd%u', 'Q]0R7JuJ6g'),
 ('t|h3|;E4g{', 'NSVN;H$s)m'),
 ('p.yv>BQ470', 'P*4KZ6]?rf'),
 ('f#4-L[mp5*', 'M}OReg^Eem'),
 ('oNpApS<AoJ', 'pRN@`OrOhv'),
 ('nsS59c`VL,', 'cIOEmhU5Nt'),
 ('m{noqE29%I', 'oK)C745Je~'),
 ('sSW/?WMy17', 'B5/<2!_D3h'),
 ('d-q4J~CNW_', 'n,VX3H7IE:'),
 ('jKO,9y0M;#', 'P>,2#H.@>i'),
 ('skOM(?n$GG', 'ELkg0G|C?W'),
 ('mi+kf0LTW.', 'b[oi-M:re$'),
 ('vgdj#X?8dB', 'qD4Ir3_WvI'),
 ('mkgcU7[bA%', 'AoE=M5R+:x'),
 ('jcu!gLw/&r', 'vlABC@3)lD'),
 ('sB7rZQsR<l', 'lalXr{5>N~'),
 ('u|I}oElaH)', 'i$+!}pvHZ('),
 ('j)i)pB*HJ,', 'l[H_#9Xj.5'),
 ('t-0>F]bu>P', 'x1I5QDSZdm'),
 ('hrI_uiW>E]', 'p]3f+<QuK['),
 ('uc61ToT%gt', 'z,yR__YX6x'),
 ('e.t$Vi5,>f', 'i3+,TcHF,N'),
 ('k/u1:B%DJH', 'G$NEO(W.(v'),
 ('e5P*D#I{m{', 'ml7O4E=o<>'),
 ('p:SPZ:e/*[', 'dryK>>pO;}'),
 ('t+v9b--,qs', 's^sd#Qsi,{'),
 ('fV`&p81%d(', 'h<BBS_PmX6'),
 ('gsS{jR,]|Q', 'p-Q-4>W#GK'),
 ('cAlyc~G.y%', 'kQssZ~b%|u'),
 ('fxAN),FAc$', 'vwR_K?gn6&'),
 ('r<N4LAAnnB', 'yV;KtlAuQ?'),
 ('e?Xq9gy=@[', 'J$+%7z?.y*'),
 ('m5j,b/y<EE', 'm=n=4WFqE3'),
 ('stRa/S(0$F', 'fFI@z-#q(E'),
 ('l+>Ki!j#v+', 'fLs!R5^k7e'),
 ('kQ:NIhJy~E', 'I%N^RyEm:/'),
 ('sY>@9w~i^p', 'ILj+.~~7_X'),
 ('mJH4kwPF.-', 'ci5EzZT?lp'),
 ('bW)ch:vs1P', 'tt:.S?c/]j'),
 ('sx|l+io`B@', 'L&YSIviD+L'),
 ('q2#Yv[O0:|', 'Kx5=:O[u*^'),
 ('lpbD0St&OU', 'f[U(U6e5OW'),
 ('mbz=7n[0v9', 'I[^T<Hq,U}'),
 ('ijP>aJBT!9', 'dV#R#|}uZH'),
 ('jI9P-f6r3M', 'B,]AC/PAz1'),
 ('h?a*UKfT_M', 'BqW}>:ZSdW'),
 ('r6BV%|..*5', 'J4zOBxF6Lw'),
 ('i)]+09JUR&', 'oM$V=]IFjW'),
 ('l}[BG9.nQS', 'bw=b(wfRVC'),
 ('mtd;>7T|g>', 'ya?+!BD<rP'),
 ('iW>m(L/~c=', 'jKTnJ!T6lc'),
 ('pkj3RPBUrF', 'Cw^_3<[mGM'),
 ('euW0jm=wfR', 'H9A(m7f1)9'),
 ('l*j*EE:!Y?', 'n%Pw}}<GAT'),
 ('d3c`&/1Y^D', 'Rb7MD6j!0|'),
 ('hXNTVF<:SH', 'fxvMT{|_3M'),
 ('mk20`,N=`=', 'Re+G*@uJCl'),
 ('eALZe^HCHq', 'vy^=B$6h^Y'),
 ('l3Ly8PBxt(', 'm<$SD/W~so'),
 ('g<[f89~U)A', 'Q7W^uZrI_<'),
 ('iIS#Nw]tr]', 'l.HYqQ_/Rf'),
 ('m{oM,jr>C#', 'zJ%%Hz#s9&'),
 ('ln^3p)j3b.', 'MWm=94b?vO'),
 ('cL?8!xP#Wj', 'm>7j+&89xI'),
 ('e=.VHQ9E+M', 'Ng%@)K)[c{'),
 ('m[96fa+HDS', 'dctSh&<iaU'),
 ('g9v~y/;=z(', 'iYAK36Cua{'),
 ('g~%pF`(x{u', 'PQ6$bI??y6'),
 ('hE5j*e,Q?[', 'Bq5H0+i]XW'),
 ('fRSM{K+;[w', 'z7wQ8s_Si['),
 ('o~}KVA:VbI', 'qqJpIWfqFB'),
 ('u-`cspdp)D', 'Ce096-Qwie'),
 ('e42BpV,P}C', 'D+L%7xa1|K'),
 ('pD<Pd$Ag@J', 'Dn/EH3[r{9'),
 ('mbGXc0y3Pe', 'g?)zvSS|6#'),
 ('gB|K:+r?1V', 'mh=!E~}0-Q'),
 ('lhWI;$JC9(', 'BGwA6-2[o8'),
 ('k0{O[6l]bH', 'xL^i{$Dd?}'),
 ('r>g<|,FWi%', 'O86#Kfnj]4'),
 ('n&>e`2FO/S', 'svzWf$x!8;'),
 ('khB~(m^@Z5', 'M,j]%f~qLY'),
 ('spKoFRM4if', 'QyNb5MKVnQ'),
 ('q8][)Ri}=q', 'hqnhi=ysa:'),
 ('hoHandbYAy', 'B4sHDjU:Pl'),
 ('lmRujD!(A7', 'GDX20ZK?Xx'),
 ('q:XyGf#>Wg', 'do3`,9Ol!H'),
 ('s#:aIK$9^x', 'Gs*[8}bP33'),
 ('jBd@A?>g|}', 'cnUAu<NuSS'),
 ('koI(}OyJ:@', 'zH)c,C{V#j'),
 ('e?gIaPc$Ox', 'yC]*G[N>gv'),
 ('o#&RMA_REo', 'u!WO.fcw8<'),
 ('s4E?ZF[E<>', 'b|Gr(/*-kx'),
 ('k1]FH+s8j@', 'k4o56u=}jw'),
 ('dWA49p}F{k', 'sk!p1OhX-1'),
 ('K*b}<I3(~', 'ipKjLUOh4Q'),
 ('e?h=Xhs+K&', 'P}MIWKA{Xz'),
 ('b@M[XTc?}5', 'k,Tmj~Pw.i'),
 ('sxOMs+bE8@', 'cep8BP*Eja'),
 ('t3aZXtpNyi', 'C00t,nt-~8'),
 ('rPekx@n9:L', 'ueNqs:h=(z'),
 ('lAxH.CfJB@', 'DNXY<9~9OH'),
 ('hZ/V/D&rO`', 'l!=SCi?>l?'),
 ('h&`>n98~V1', 'G5wA};7d`m'),
 ('t50y/[AEhF', 'la.c2n+A7e'),
 ('gBCR?!O*;E', 'sZ</&q1)tK'),
 ('tTnCoO/*tk', 'd.lZ`^MKjl'),
 ('W5?6yQZD2', 'u#*HO9?|?]'),
 ('e{e8vi@^PY', 'c^iV73&0V('),
 ('tcneuK7v%`', 'gBJKTCx_/6'),
 ('uH*Q(mcRt5', 'w0Je-<6ym_'),
 ('k$1_yaF?9#', 'o[GR>HoXjp'),
 ('dUZ^=SE5BG', 'NGD}XK^mX}'),
 ('t_h*fbN#:(', 'y[:PO%mkg('),
 ('q=w[<m2Bk&', 'z?M@Me}UrK'),
 ('vpOTK6tMr@', 'y8o-zQb(8j'),
 ('m2F|cUkKhv', 'B{LJC|+^D.'),
 ('k}4/oj#$~s', 'efA[V?^$DO'),
 ('va/ky=f5pK', 'CTw3Yd}Sx4'),
 ('c,5(mUGzYT', 'G#LLy[.iS2'),
 ('gp[h@]y13l', 'Cko(o5/eN6'),
 ('gx:;za!?C9', 'K>Dfm{ad5K'),
 ('r]*Ioa%$bK', 't@-V_iMKbK'),
 (')Y}Qy.3GK', 'G8%+Eg:Na<'),
 ('lH^2D]w;[H', 'qpx1j<_-l5'),
 ('qx%>fB$d+$', 'z|A6R3H)3B'),
 ('libliptkB4', 'J,3]AhU%0c'),
 ('jrM28*HbyG', 'jWy+dd+,ta'),
 ('r?E$4f-d0/', 'c}m%T+N!Gz'),
 ('leh^fmrt*#', 'xzc~#RzbI@'),
 ('O~pXkAbd3', 'FCE{oF+@St'),
 ('f*LO~>!0PN', 'I{.D^{85=#'),
 ('q[}7hk(+=e', 'uu)_`Q0++C'),
 ('q7do-wLx%E', 'c$J,,={OZd'),
 ('vwc3}.=Z#&', 'qhlz<GNM_8'),
 ('e<X;[vACXC', 'emq?3*tP9W'),
 ('j=L,YBvsBk', 'f2L&U-(v+/'),
 ('oa87&PB&Bm', 'Gc>|URJcg|'),
 ('b^Try&me1A', 'Dd.ED,HOi&'),
 ('o``:?0>/yz', 'J3)Ty17a?Q'),
 ('pz(G*<F93/', 'xWD+oGZ~vY'),
 ('cV4idO^r8W', 'G+c6-zDX5@'),
 ('m*PYE=#wr^', 'g;I=8p!(]b'),
 ('sXzvT.g31p', 'b_#ie@t!%Q'),
 ('mq)8`hi{hb', 'AGUPi8s%aF'),
 ('h}lnSN_f$_', 'CwGQYVm2&`'),
 ('eT<gzg?q,r', 'Hh[ZfFwkH,'),
 ('vE[T$`n9T)', 'PFcyiTRKq='),
 ('tj&bK}%P!F', 'Ql.8m|u}H!'),
 ('kX]hN=_.c-', 'k}E2,sF7^}'),
 ('r/B|ra%L,.', 'FGrbm!9:Cd'),
 ('b[(2`4t&?J', 'FMj}H;knqq'),
 ('qvITjNxkLN', 'd9@W=6sKJ-'),
 ('jX=#G8wu#(', 'F)s+:]$(EA'),
 ('l&#7I)Ah/E', 'zv#Fyq9;?1'),
 ('de=9c:,@j9', 'AJ/nnIR/[0'),
 ('kE!iKHLN_g', 'rB6=j&@4e&'),
 ('d``B*6:eCx', 'uL7#}Qw}D9'),
 ('p]t8:Tka7q', 'OawZ7gbEjw'),
 ('niJUFZF$Y:', 'D=!L6rg_pr'),
 ('p}Qa|!7PpR', 'qOB6Gi<G='),
 ('uv1fGXHN@)', 'l(DiRV,GPj'),
 ('sRw-ik:I$v', 'NH:[}beT-z'),
 ('bnEK#)[;qT', 'r8MKfCfg2E'),
 ('ey:Q|*t!Lg', 'b2PYE2BvAR'),
 ('c^,~EC6Pb2', 'nJdfBSsZq='),
 ('tMMtBUpb$&', 'ox5y>?yriv'),
 ('jKIDq|}J&c', 'P%!7{$,zCG'),
 ('dC:e5G4J/p', 't;/rK0Elxw'),
 ('u;|vR#mVMW', 's9/>8RT~Sr'),
 ('gDsLPj(9S#', 'raobJ?,rJ['),
 ('xb&P*pH(Q', 'OB:w%H&-Al'),
 ('Bszsaz0Iuo', 'IozRi;br@?'),
 ('JOT:U4ayh@', 'BidEZ1j?sA'),
 ('G/^_##fcPN', 'Q0Hf<s|zmU'),
 ('LPF4AfaHKR', 'eyVn,2@529'),
 ('rSneU!3}bn', 's>VRzs_ra_'),
 ('cv+Nq9:a<P', 'nK_Xe;yw*A'),
 ('f*2@qiHh_1', 'Fe.owPPLXj'),
 ('nuU8A_$i2M', 'v#9&oC&^gU'),
 ('fT!w8R#>dg', 'zv;#VKpiyA'),
 ('gG6SWfM>H0', 'msi&z%jb~L'),
 ('sM0GPt1HS1', 'wt&@Z9Ke*y'),
 ('dlU7VG|3Gd', 'i?3Cq]Y=6@'),
 ('cEO^y)Md[G', 'IHD#^9>(oF'),
 ('eN#^kPGv*L', 'Bc^_k/M|{V'),
 ('lp@e##m.!+', 'ePFlYQsRPh'),
 ('epvt3>HH?U', 'lQbPlI/gwj'),
 ('E3u*2.<9#`', 'c*=o}p_W/X'),
 ('q1Q3Do8S>g', 'b~m$wS)FZZ'),
 ('yX:tmrd5;]', 'x)A]S|GN_G'),
 ('H*c[ML+`s=', 'Aal{|%850}'),
 ('e_;dzXj8de', 'uge7s($h<X'),
 ('iB-8Br~onq', 'H)ax6=5vNG'),
 ('zSc]-^U=0=', 'td+]W)8y3S'),
 ('x2d4n4ADcP', 'B)~SL?|&BX'),
 ('Gn;q2Y)Xe4', 'qoQ,f:/adY'),
 ('gRVZ]qJ#>O', 'GkU[4wRj6;'),
 ('J%,fuysl*&', 'JffL}$<;]['),
 ('r(h9&#wc~B', 'nnM01DlaVX'),
 ('_]DH+g9!$', 'jH=<{Pcl+D'),
 ('B:x<p&Q=t)', 'J|aJY+vge3'),
 ('z:*d{z(~V2', 'vJUDdBqkkp'),
 ('d}R:qHj1,7', 'v/?czq&41s'),
 ('L5M1*yG7eH', 'F/|qA9Xb`f'),
 ('s|K&2S,UP|', 'f)MSa#ZHdL'),
 ('t$y1C2R-Av', 'r%;LR/o1J0'),
 ('eHJ?)TAdTo', 'w[pneW3d#g'),
 ('pQpX%(EVOH', 'lzpJ#A4I81'),
 ('qiv/4tOlf=', 'pAb@53Gk?Y'),
 ('M$bc0[jYf0', 'ufv>~I-Znw'),
 ('jYz[ibrr9m', 'u1C2Jtm-p^'),
 ('SlOEXfq#|', 'F[7BR94HX^'),
 ('d5m8%D6,;u', 'c.$2jl~n2_'),
 ('o9{x<AyA]B', 'NbC3xEVGZ}'),
 ('He!e=h?_2V', 'Iu#Jjq4.-;'),
 ('QSq%~rFaP-', 'yLhZzEnGK&'),
 ('ck!6;xK$/^', 'E2:8?ZCW`='),
 ('n{{o2K1:dw', 'zBa]c`I@&q'),
 ('xqrJ^d[.(O', 'cE|I9C6tDG'),
 ('vrn%j%6{nu', 't1~2K{sjcs'),
 ('p#R$-mG/L', 'C+sW!v-+p]'),
 ('oV/JG7fwZq', 'x-wPy%*F%3'),
 ('bD?R}i8_[c', 'J[Z3=;n.`R'),
 ('Lol+XIvY21', 'OGgh6NLJ_1'),
 ('Qlib4)q2Hk', 'Cay~/DU6[Y'),
 ('pwwZu{7f~(', 'q>RaVbPB3|'),
 ('qFuGdDx^Yv', 'A.lC&CUT?S'),
 ('Cf2@;p<aL', 'Q)zp&X@y?g'),
 ('t2&ri|[Un:', 'Hg&j8uJWA$')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")
    
replace_guids(mw, guid_mapping)

If you're not familiar with the debug console, you can access it with Ctrl+Shift+;. After pasting the snippet into the top box, you can execute it with Ctrl+Enter.

After running the debug console script (and after or before the full sync — it doesn't matter), you can upgrade to v5.0 by following the normal installation/upgrade procedures.

Rationale for migrating the GUIDs, if you're interested in why this is necessary

Every note in Anki has a GUID (globally unique id). This allows two notes to be recognised as the same, irrespective of what deck, whose collection or what device they're in.

Due to design choices in the previous Deck Manager we used (anki-dm), the GUIDs in the English and Norwegian versions of the deck were the same, and so were the GUIDs in the French and Spanish versions of the deck.

This meant that while it was possible for somebody to have, say, the English, German and Spanish decks, in parallel, in the same Anki collection, they could not have both the English and Norwegian decks or both the French and Spanish decks, together. For instance, if you had the French version of the deck and tried to install the Spanish version, then due to the clashing GUIDs, Anki would think that the notes in the Spanish deck were updates to the notes in the French deck, and would overwrite your French deck, instead of adding the Spanish deck in parallel.

This limitation wasn't catastrophic, but it was annoying and confusing to explain, so we decided to migrate the French and Norwegian GUIDs, in order to remove it.

From v4.1 ("v4.1.0")

Before upgrading to v5.0, you need to first run the debug console script below that corresponds to the language of your deck. If you use AnkiWeb, a full upload will be necessary the next time you sync. After running the relevant script, you can follow the normal installation/upgrade procedures. (If you have the French or Norwegian decks, you DO NOT need to run the 4.1.1 debug console script — you can directly upgrade to v5.0.)

Note that if you use the English version of the deck you do not need to and SHOULD NOT run any of these scripts! If you have a non-English version of the deck that is not precisely v4.1 (e.g. v4.1.1 or v4.0 or earlier — see above for how to check whether you have the buggy v4.1), you also DO NOT need to run any of these scripts.

If you're not familiar with the debug console, you can access it with Ctrl+Shift+;. After pasting the script into the top box, you can execute it with Ctrl+Enter. If you have any doubts please ask in Discussions (for instance, in the thread dedicated to the release) or open an issue!

Czech
guid_mapping = \
[('e+/O]%*qfk', 'C{]JF%%mr*'),
 ('h~5xz+=ke~', 'CzhyKE{%zy'),
 ('s9-GL*@AXD', 'uMj[iKx*FT'),
 ('cPO|Cru8n<', 't2Q}Uw:@3V'),
 ('m*#%sE.`.;', 'qd!suvo&1v'),
 ('hNE9}>;Q&-', 'zT0L2L~T>H'),
 ('jN|NAUP*h}', 'rNr_y>Sm<E'),
 ('j|z@PMgdx,', 'vt!WOLxZl$'),
 ('n+t>2`:;P/', 'nG#=Zxp5Qn'),
 ('ilGtw#=asM', 'l]+1ZOhWt<'),
 ('mcc&0Kq^xE', 'u3}~&(A[aZ'),
 ('gz9${p}er*', 'noQ|9=PqcG'),
 ('dY96`C-f(_', 'A7Cj*hqC7['),
 ('r>aI-$$|wT', 'pbX.~.6OJO'),
 ('k9E.p^<u$,', 'AQZNs:<Ihn'),
 ('l$zM~ihPFE', 'D8N9aGT(YL'),
 ('jTNoKo}Bu+', 'gM5c_bst5A'),
 ('mz[>>AxIr4', 'Pqi/=VQrpE'),
 ('u4^lH.xem5', 'e%6%K/Fo7O'),
 ('bk2ByZIeU+', 'B&Pa`TK.W@'),
 ('twrhzJ[k:Z', 'gMpU6QZpk{'),
 ('kS)hDm%w}R', 'xT>UY=~g;v'),
 ('AES],s:8=', 'y29//}tZ9$'),
 ('k[)#L4.[v3', 'LKI5~A(OZ!'),
 ('k}A9]O:0xw', 'Q`OBBA(IqJ'),
 ('j7eEZkzsCZ', 'BCT|*-aN8t'),
 ('s<_WLSB3I/', 'l]B_A,?ph!'),
 ('cYKvF#ptF7', 'p2-()%uZj7'),
 ('m)WUtJS`H&', 'It2!t/-o?>'),
 ('l$2O|9w`F~', 'M*;rH]4K.>'),
 ('kZ52zV#[Iv', 'HqC57O<OYN'),
 ('i2]v|D3@:j', 'wO[~:de]T'),
 ('r5C646H*+*', 'B*Me@Zh_[S'),
 ('nIfRn<aY:N', 'f=(W,pEE)M'),
 ('5S(f7%O-$', 'mn{KoGN.?b'),
 ('m?}%V6s8]*', 'pL;e7uiX=l'),
 ('uRo^w#p5Be', 'D!-|+!*eBX'),
 ('o=,%hU&yX%', 'F-eGLxAZDt'),
 ('lq`T^ZBF2Y', 'xaacSwZi[n'),
 ('f>c7x2E]Q6', 'PSEKL{AHnb'),
 ('q[S4`,F0D=', 'Hx}kMe>iu~'),
 ('jCd]`-=k,:', 'uv?Z2p<%;s'),
 ('vf)G?[_?Pf', 'M%Zo)4Ex%5'),
 ('j9:K,~DQ2v', 'MY>?+-m40S'),
 ('ui3>b-?a@m', 'KM9;RF<Oa9'),
 ('qVi;t%/`F|', 'jpd^m*aK7%'),
 ('g-]bb&[.E!', 'hRH,A7qwWn'),
 ('f21=-A~W;~', 'k[^`V_WQ^I'),
 ('sT5=H|@KU|', 'AhCfC]V,BF'),
 ('lU@C3<C8Wk', 'JD*D+bih|F'),
 ('jDA-V?/hVj', 'wM29>6E7w2'),
 ('h_9=mkZXAH', 'Lh8)I$R;q>'),
 ('mk1VltJl<]', 'c@Ms0SL)sn'),
 ('c(,2{yXI#E', 'G4t&;Hch6N'),
 ('kkbYQXw5b;', 'iP!?$Z_Ki5'),
 ('ia8as9sCY|', 'p|~)@{)+S*'),
 ('j%*8gN)q>d', 'JJzRb!:b#h'),
 ('bd~Ght5tLR', 'z^#eqWYO-D'),
 ('onMKID2d;D', 'm.mLjg-{lM'),
 ('q8fF$4,c6_', 'Qt7ILf!6y2'),
 ('upiX0g1quR', 'naB8r`cM^+'),
 ('n:7&>YT5A=', 'xMDjNS>?hL'),
 ('j2IQ=f=w3@', 'DBo3+cT-[:'),
 ('EWXNc<g5)', 'v/ymm:8cf7'),
 ('gFOojQO(MH', 'vI7@NGK_Rr'),
 ('gePC:Xt_nW', 'dt/qfm,mMR'),
 ('vNiD6A.v#s', 'I/zO]{Q@(q'),
 ('?n!)c/h=Q', 'InSmtkntKP'),
 ('gYIoR`|AxW', 'm-W32Cjt+v'),
 ('j<egqG@)EL', 'u?7-e.O&if'),
 ('t`cagaWApo', 'bu.JnK@qu%'),
 ('jN^Vc%9OQ5', 'L!)340&$>j'),
 ('o3VS!KWb/@', 'IEVE(R=UT_'),
 ('iR;U<J:CJJ', 'f;ryKmL?JH'),
 ('i^J8&$(1]|', 'vg&(+g]]yT'),
 ('pS>DrFhd%u', 'G4?YxB/<HP'),
 ('t|h3|;E4g{', 'q<##9ET8w4'),
 ('p.yv>BQ470', 'Nz_#ah$j&d'),
 ('f#4-L[mp5*', 'IoHWaA78;3'),
 ('oNpApS<AoJ', 't(:iXC>cS>'),
 ('nsS59c`VL,', 'w~5sD@C~%!'),
 ('m{noqE29%I', 'p;&<%/w5b|'),
 ('sSW/?WMy17', 'jV+V-M0[9X'),
 ('d-q4J~CNW_', 'J>b>D;vQoW'),
 ('jKO,9y0M;#', 'AnTl}_8m=/'),
 ('skOM(?n$GG', 'kC{ALA>P%a'),
 ('mi+kf0LTW.', 'Fx4sZh>`:m'),
 ('vgdj#X?8dB', 'AX#-0[v2j?'),
 ('mkgcU7[bA%', 'dr(`ZC<V%p'),
 ('jcu!gLw/&r', 'bND)UmT$s;'),
 ('sB7rZQsR<l', 'g[l><1FFUo'),
 ('u|I}oElaH)', 'sH*CmlNZ<I'),
 ('j)i)pB*HJ,', 'Kx0E[9ibDy'),
 ('t-0>F]bu>P', 'P*^/<)(KjW'),
 ('hrI_uiW>E]', 'o-iAF(Oe;d'),
 ('uc61ToT%gt', 'oBc!CE4|t8'),
 ('e.t$Vi5,>f', 'BA4?dToa9]'),
 ('k/u1:B%DJH', 'tcsX~cQjI2'),
 ('e5P*D#I{m{', 'Qe#D4C[<+m'),
 ('p:SPZ:e/*[', 'C]<t^C)#CC'),
 ('t+v9b--,qs', 'O1bKEd;`i]'),
 ('fV`&p81%d(', 'Fx%kVt2%kj'),
 ('gsS{jR,]|Q', 'v8pkKiW5;U'),
 ('cAlyc~G.y%', 'MfwiBI+|=9'),
 ('fxAN),FAc$', 'zWj%QH!y<q'),
 ('r<N4LAAnnB', 'E]~7Dc-XV@'),
 ('e?Xq9gy=@[', 'iV*VDI/knn'),
 ('m5j,b/y<EE', 'K+Rf&9RCYP'),
 ('stRa/S(0$F', 'wC(@I#Qj=_'),
 ('l+>Ki!j#v+', 'C%r3!}*o9-'),
 ('kQ:NIhJy~E', 'd}n!kX+/ph'),
 ('sY>@9w~i^p', 'iR6^@_]dvR'),
 ('mJH4kwPF.-', 'Did1{bE2yj'),
 ('bW)ch:vs1P', 'k5Zby(Llz+'),
 ('sx|l+io`B@', 'z.;^Kjw?w-'),
 ('q2#Yv[O0:|', 'uq)KM}CVsF'),
 ('lpbD0St&OU', 'l_bSqy)=W%'),
 ('mbz=7n[0v9', 'P{?pBbVc*#'),
 ('ijP>aJBT!9', 'Hb~5J(.Fg~'),
 ('jI9P-f6r3M', 'DE`CrM74%0'),
 ('h?a*UKfT_M', 'Hfw[5^1FXT'),
 ('r6BV%|..*5', 'Cob1W^QJ3F'),
 ('i)]+09JUR&', 'tOc]hT~n}*'),
 ('l}[BG9.nQS', 'Gg8=;ywiMF'),
 ('mtd;>7T|g>', 'bhv8b|]kY9'),
 ('iW>m(L/~c=', 'juCeYT&eX9'),
 ('pkj3RPBUrF', 'bTd6E)qj]$'),
 ('euW0jm=wfR', 'Pmp+_CoZ`T'),
 ('l*j*EE:!Y?', 'dET^[R~4O3'),
 ('d3c`&/1Y^D', 'wOmUda6!>t'),
 ('hXNTVF<:SH', 'y*>>K_Rv{P'),
 ('mk20`,N=`=', 'Byv;->|tVn'),
 ('eALZe^HCHq', 'MQbYhy*8W1'),
 ('l3Ly8PBxt(', 'j^9KkW@1V^'),
 ('g<[f89~U)A', 'HxK!=[v%7I'),
 ('iIS#Nw]tr]', 'j}.YHgP+1)'),
 ('m{oM,jr>C#', 'h~hx$TrJ9L'),
 ('ln^3p)j3b.', 'N/[L&}q{Ro'),
 ('cL?8!xP#Wj', 's|EEBYpJ*s'),
 ('e=.VHQ9E+M', 'cm97y|}K9@'),
 ('m[96fa+HDS', 'uwH,{ZS,Hs'),
 ('g9v~y/;=z(', 't/Q9G`l<(*'),
 ('g~%pF`(x{u', 'v0.(wt0=5,'),
 ('hE5j*e,Q?[', 'lJGFm$U&>?'),
 ('fRSM{K+;[w', 'uWjhG1h]m'),
 ('o~}KVA:VbI', 'BAz%}9{UE'),
 ('u-`cspdp)D', 'hM~h4Ec9ZW'),
 ('e42BpV,P}C', 'x(aw,hH&Y['),
 ('pD<Pd$Ag@J', 'zybU=+SV=e'),
 ('mbGXc0y3Pe', 'jD9{n{|+PU'),
 ('gB|K:+r?1V', 's|eW&jr[=w'),
 ('lhWI;$JC9(', 'CQy8.z2s`v'),
 ('k0{O[6l]bH', 'LYe,4PfG4a'),
 ('r>g<|,FWi%', 'Rh_*(xz;/]'),
 ('n&>e`2FO/S', 'jDvPRSN7UT'),
 ('khB~(m^@Z5', 'hnq?l@KUUT'),
 ('spKoFRM4if', 'sLc+1O/t|!'),
 ('q8][)Ri}=q', 'm|F4][J.!m'),
 ('hoHandbYAy', 'L>tNacmJP#'),
 ('lmRujD!(A7', 'wX.mVG|9{n'),
 ('q:XyGf#>Wg', 'c#$?0jnW0K'),
 ('s#:aIK$9^x', 'g-3%G(QyEf'),
 ('jBd@A?>g|}', 'za4sz~iaR*'),
 ('koI(}OyJ:@', 'A}fIE>Pq[I'),
 ('e?gIaPc$Ox', 'FqClN*Uskm'),
 ('o#&RMA_REo', 'vqczM!*!WR'),
 ('s4E?ZF[E<>', 'dL;ASbD>B}'),
 ('k1]FH+s8j@', 'B>y*UU741f'),
 ('dWA49p}F{k', 'b<l<9Sv>;o'),
 ('K*b}<I3(~', 'MfdunrN!.('),
 ('e?h=Xhs+K&', 'C@Qb!4TM+Y'),
 ('b@M[XTc?}5', 'hV^z0k.t6x'),
 ('sxOMs+bE8@', 'vFrU{gPXOA'),
 ('t3aZXtpNyi', '^@~8x/eFp'),
 ('rPekx@n9:L', 'K4#|XaqO:g'),
 ('lAxH.CfJB@', 'stl,m~cAO&'),
 ('hZ/V/D&rO`', 'j1e,tg|Z&b'),
 ('h&`>n98~V1', 'qjIBt_WC^1'),
 ('t50y/[AEhF', 'FQm}Y9aG^*'),
 ('gBCR?!O*;E', 'h:@GWL?4y1'),
 ('tTnCoO/*tk', 'KI?g-vLTJ8'),
 ('W5?6yQZD2', 'd`,;^d_nt5'),
 ('e{e8vi@^PY', 'b:(mUH@(`.'),
 ('tcneuK7v%`', 'c0H>DK:hY.'),
 ('uH*Q(mcRt5', 'CPWU&xD,31'),
 ('k$1_yaF?9#', 'Aq@4iLUo[t'),
 ('dUZ^=SE5BG', 'u2@(1}y4a{'),
 ('t_h*fbN#:(', 'u2YZ8>C2[I'),
 ('q=w[<m2Bk&', 'B1cUA{Hro^'),
 ('vpOTK6tMr@', 'b~C@$BV@fk'),
 ('m2F|cUkKhv', 'ddf7bzEG~m'),
 ('k}4/oj#$~s', 'P,t][$~Axv'),
 ('va/ky=f5pK', 'xN@x`d<BS1'),
 ('c,5(mUGzYT', 'j.J_!d]H{c'),
 ('gp[h@]y13l', 'nLS!c^B.u5'),
 ('gx:;za!?C9', 'uJWy?`0JRW'),
 ('r]*Ioa%$bK', 'I[3;:2u9!5'),
 (')Y}Qy.3GK', 'Qt?NY}jsN;'),
 ('lH^2D]w;[H', 'm~5*]PDD9k'),
 ('qx%>fB$d+$', 'vlkjlV^U~T'),
 ('libliptkB4', 'bwsw8$TgX1'),
 ('jrM28*HbyG', 'd[tm>aNv-o'),
 ('r?E$4f-d0/', 'fPO>]fFure'),
 ('leh^fmrt*#', 'oBs%LSd4B;'),
 ('O~pXkAbd3', 'IxLAH)+-_V'),
 ('f*LO~>!0PN', 'l[/(,BJdiJ'),
 ('q[}7hk(+=e', 'k`{m~8Eb`.'),
 ('q7do-wLx%E', 'GJT]wWpqv6'),
 ('vwc3}.=Z#&', 'OL?i,z)TP#'),
 ('e<X;[vACXC', 'rsxD)TXKC#'),
 ('j=L,YBvsBk', 'tKD)*8S3TN'),
 ('oa87&PB&Bm', 'y9[[$e%qC`'),
 ('b^Try&me1A', 't6K(T;};3}'),
 ('o``:?0>/yz', 'sg,bj=%n1w'),
 ('pz(G*<F93/', 'onvgK4ynAq'),
 ('cV4idO^r8W', 'r]11B;H~[z'),
 ('m*PYE=#wr^', 'CO+b,zPO_I'),
 ('sXzvT.g31p', 'NwEo@VHs_d'),
 ('mq)8`hi{hb', 'vwc}tXrF=w'),
 ('h}lnSN_f$_', 'H,;72`%LJX'),
 ('eT<gzg?q,r', 'hO~G0Ujd_$'),
 ('vE[T$`n9T)', 'D|=[nt0eT&'),
 ('tj&bK}%P!F', 'vLL9vrH]jE'),
 ('kX]hN=_.c-', 'G5M^3c_/X|'),
 ('r/B|ra%L,.', 'bbW|f)4_>u'),
 ('b[(2`4t&?J', 'QP7}%SW/px'),
 ('qvITjNxkLN', 'h70gtJ%&xI'),
 ('jX=#G8wu#(', 'sOvum<h.&0'),
 ('l&#7I)Ah/E', 'p2,K;bOB~T'),
 ('de=9c:,@j9', 'e_%R[08+Z'),
 ('kE!iKHLN_g', 'pSK9uw6xC?'),
 ('d``B*6:eCx', 's{g7@QD$qr'),
 ('p]t8:Tka7q', 'jhuwlGqRkR'),
 ('niJUFZF$Y:', 'cfXokA*89x'),
 ('p}Qa|!7PpR', 't0QR1Q:HMY'),
 ('uv1fGXHN@)', 'e[{g,ks$!I'),
 ('sRw-ik:I$v', 'v6t>$<ADP['),
 ('bnEK#)[;qT', 'i:L[HB&@F['),
 ('ey:Q|*t!Lg', 'x]o%O2Wi4u'),
 ('c^,~EC6Pb2', 'ebha1T}R8+'),
 ('tMMtBUpb$&', 'CP|Bi<B+3('),
 ('jKIDq|}J&c', 'i9-RjgM[_,'),
 ('dC:e5G4J/p', 'x`*~=TA+FK'),
 ('u;|vR#mVMW', 'bmb^QU~Z*k'),
 ('gDsLPj(9S#', 'P&j>MnZjBl'),
 ('xb&P*pH(Q', 'FUCfa4kb<y'),
 ('Bszsaz0Iuo', 'q9GttqBN(j'),
 ('JOT:U4ayh@', 'ujWW0n-WqL'),
 ('G/^_##fcPN', 'u}sPj7cerL'),
 ('LPF4AfaHKR', 'Fs>y5(sRng'),
 ('rSneU!3}bn', 'c!B%9S]zNK'),
 ('cv+Nq9:a<P', 'gH(-5bzcUq'),
 ('f*2@qiHh_1', 'g.N+uMm,{6'),
 ('nuU8A_$i2M', 'IS`eM7]t)I'),
 ('fT!w8R#>dg', 'Ja&@${-ll#'),
 ('gG6SWfM>H0', 'f#ZCPMD62V'),
 ('sM0GPt1HS1', 'I_$^q=J15;'),
 ('dlU7VG|3Gd', 'O_++P3q,lg'),
 ('cEO^y)Md[G', 'yKo`$PaHGg'),
 ('eN#^kPGv*L', 'J9k3i5aRzz'),
 ('lp@e##m.!+', 'F9A3Lkp?+N'),
 ('epvt3>HH?U', 'v]C@D/(-+g'),
 ('E3u*2.<9#`', 'kn6vhJtt!Y'),
 ('q1Q3Do8S>g', 'nlr&VdfBJA'),
 ('yX:tmrd5;]', 'BLvM|PE:rh'),
 ('H*c[ML+`s=', 'f.Z<UFi.{x'),
 ('e_;dzXj8de', 'wsM3JR2Xv?'),
 ('iB-8Br~onq', 'G4|N9mDxa&'),
 ('zSc]-^U=0=', 'l1uc5E8j;X'),
 ('x2d4n4ADcP', 'Rf#Y$PY2hD'),
 ('Gn;q2Y)Xe4', 'x18Y%w8iOt'),
 ('gRVZ]qJ#>O', 'pvm.S00zT/'),
 ('J%,fuysl*&', 'AnHKmxdHRZ'),
 ('r(h9&#wc~B', 'h:!&t0Lvqc'),
 ('_]DH+g9!$', 'urEGY*T)mW'),
 ('B:x<p&Q=t)', 'd9jaR(A9o('),
 ('z:*d{z(~V2', 'c2(xx0>{|K'),
 ('d}R:qHj1,7', 'nsv]+(L(N^'),
 ('L5M1*yG7eH', 'bQ*]^-KLDC'),
 ('s|K&2S,UP|', 'mH(F;!A-^i'),
 ('t$y1C2R-Av', 'gs<Y_*zj#^'),
 ('eHJ?)TAdTo', 'fL<HB36|&)'),
 ('pQpX%(EVOH', 'kI#F9[@KH|'),
 ('qiv/4tOlf=', 'k~[RV@<s7/'),
 ('M$bc0[jYf0', 'Ngx+p%Tn$u'),
 ('jYz[ibrr9m', 'iq(<JF$S6/'),
 ('SlOEXfq#|', 'BU*(=#&k=b'),
 ('d5m8%D6,;u', 'LXl!1P9Nfp'),
 ('o9{x<AyA]B', 'HiMLHEOc_m'),
 ('He!e=h?_2V', 'M(|D;@jB#D'),
 ('QSq%~rFaP-', 'pi]:s4:9TG'),
 ('ck!6;xK$/^', 'D!9j=Ss[H)'),
 ('n{{o2K1:dw', 's)}(&(C~qe'),
 ('xqrJ^d[.(O', 'Gp?#Ik&V&F'),
 ('vrn%j%6{nu', 'IJ6D7S}LvU'),
 ('p#R$-mG/L', 'f[E%u}3F%e'),
 ('oV/JG7fwZq', 'Hm4bJ<Y`aA'),
 ('bD?R}i8_[c', 'wsH3aZT9(O'),
 ('Lol+XIvY21', 'P4d|2~&E#h'),
 ('Qlib4)q2Hk', 'x;/B{evQ?m'),
 ('pwwZu{7f~(', 'b~j)uKz$/r'),
 ('qFuGdDx^Yv', 'lz;Aa8Mc)h'),
 ('Cf2@;p<aL', 'M%RATtq>65'),
 ('t2&ri|[Un:', 'o!L7Ln:)+/'),
 ('dbP/Cj}sB+', 'IToJAz{P9K'),
 ('wa>{k!2cXc', 'wsB.ZRe68:'),
 ('5JJ2]i)p4', 'Oh:F{^dxzr'),
 ('s>f40rn,O]', 'HXMK8^/pUt'),
 ('ssbyA9}]QP', 'Jf_>OgL@4?'),
 ('vKx<0Qa!aP', 'kddhH#ut%s'),
 ('fkq7lhLkdH', 'Pv4nPI$/4$')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
German
guid_mapping = \
[('e+/O]%*qfk', '7rv=E6qjR%'),
 ('h~5xz+=ke~', '!Le9##zdQ2'),
 ('s9-GL*@AXD', '.it+:!Ct{^'),
 ('cPO|Cru8n<', '5>=J&k61ZP'),
 ('m*#%sE.`.;', '(qkm4xu>uO'),
 ('hNE9}>;Q&-', '!<)iK-xJnK'),
 ('jN|NAUP*h}', '$<J<$N>!T1'),
 ('j|z@PMgdx,', '$J#C>FS{9J'),
 ('n+t>2`:;P/', ')r5Ab>w*>M'),
 ('ilGtw#=asM', '#X+584z^4c'),
 ('mcc&0Kq^xE', '(OOn~D2<9_'),
 ('gz9${p}er*', '9#ilIiK|3H'),
 ('dY96`C-f(_', '6|ifHvt}oX'),
 ('r>aI-$$|wT', '-AM-t5l@8j'),
 ('k9E.p^<u$,', '%i)u1<ynlJ'),
 ('l$zM~ihPFE', '&l#;LbTI*_'),
 ('jTNoKo}Bu+', '$]<0/hKu6I'),
 ('mz[>>AxIr4', '(#DAAt9B3u'),
 ('u4^lH.xem5', ':dFX,&9|Yv'),
 ('bk2ByZIeU+', '4Wb%!S-|^I'),
 ('twrhzJ[k:Z', '/83T#CDdwp'),
 ('kS)hDm%w}R', '%[pT(fmpKh'),
 ('AES],s:8=', 't)iVs4wh,'),
 ('k[)#L4.[v3', '%Dpk:Xu:7t'),
 ('k}A9]O:0xw', '%K$iEHwT9<'),
 ('j7eEZkzsCZ', '$gQ)}d#l&p'),
 ('s<_WLSB3I/', '.yG`:L%W-M'),
 ('cYKvF#ptF7', '5|/7*41m*x'),
 ('m)WUtJS`H&', '(p`^5C[>,E'),
 ('l$2O|9w`F~', '&lb=J28>*2'),
 ('kZ52zV#[Iv', '%}eb#Ok:-;'),
 ('i2]v|D3@:j', '#bE7Jwc/w$'),
 ('r5C646H*+*', '-e&fdZ,!rH'),
 ('nIfRn<aY:N', ')-R@Z+MRwd'),
 ('5S(f7%O-$', 'Y[F8gm=t5'),
 ('m?}%V6s8]*', '(BKm_Z41EH'),
 ('uRo^w#p5Be', ':@0F841Y%7'),
 ('o=,%hU&yX%', '*zsmTNnr{D'),
 ('lq`T^ZBF2Y', '&2H]FS%ybo'),
 ('f>c7x2E]Q6', '8AOg9V);?w'),
 ('q[S4`,F0D=', ',D[dH$*T(Q'),
 ('jCd]`-=k,:', '$&PEH%zdsN'),
 ('vf)G?[_?Pf', ';Rp+B:G.>8'),
 ('j9:K,~DQ2v', '$iw/s](Jb;'),
 ('ui3>b-?a@m', ':UcAN%B^C('),
 ('qVi;t%/`F|', ',_Ux56v>*0'),
 ('g-]bb&[.E!', '9tENN7D&)A'),
 ('f21=-A~W;~', '8bazttLPx2'),
 ('sT5=H|@KU|', '.]ez,@CD^0'),
 ('lU@C3<C8Wk', '&^C&c+&1`%'),
 ('jDA-V?/hVj', '$($t_.va_$'),
 ('h_9=mkZXAH', '!GizYd}Q$|'),
 ('mk1VltJl<]', '(Wa_Xm.eyV'),
 ('c(,2{yXI#E', '5osbIr{Bk_'),
 ('kkbYQXw5b;', '%WN|?Q8YNO'),
 ('ia8as9sCY|', '#MhM424v|0'),
 ('j%*8gN)q>d', '$mqhSGpjA6'),
 ('bd~Ght5tLR', '4PL+Tmem:h'),
 ('onMKID2d;D', '*Z;/-wb{x^'),
 ('q8fF$4,c6_', ',hR*lXs`fX'),
 ('upiX0g1quR', ':1U{~~aj6h'),
 ('n:7&>YT5A=', ')wgnAR]Y$Q'),
 ('j2IQ=f=w3@', '$b-?z}zpcT'),
 ('EWXNc<g5)', 'x`ndOySe9'),
 ('gFOojQO(MH', '9*=0VJ=8;|'),
 ('gePC:Xt_nW', '9Q>&wQ5=Zm'),
 ('vNiD6A.v#s', ';<U(ftuok.'),
 ('?n!)c/h=Q', '.ZAGOvTzJ'),
 ('gYIoR`|AxW', '9|-0@>Jt9m'),
 ('j<egqG@)EL', '$yQS2zC9)b'),
 ('t`cagaWApo', '/HOMS^`t1*'),
 ('jN^Vc%9OQ5', '$<F_O6iH?v'),
 ('o3VS!KWb/@', '*c_[jD`_vT'),
 ('iR;U<J:CJJ', '#@x^yCwv.~'),
 ('i^J8&$(1]|', '#F.hn5oUE0'),
 ('pS>DrFhd%u', '+[A(3yT{m:'),
 ('t|h3|;E4g{', '/JTcJ*)XSZ'),
 ('p.yv>BQ470', '+u!7Au?Xgq'),
 ('f#4-L[mp5*', '8kdt::YieH'),
 ('oNpApS<AoJ', '*<1$1Lyt0~'),
 ('nsS59c`VL,', ')4[ei`HO:J'),
 ('m{noqE29%I', '(IZ02xb2m}'),
 ('sSW/?WMy17', '.[`vBP;rax'),
 ('d-q4J~CNW_', '6t2d.]&G`X'),
 ('jKO,9y0M;#', '$/=sir~FxB'),
 ('skOM(?n$GG', '.W=;o.Z5+{'),
 ('mi+kf0LTW.', '(UrWRT:M`L'),
 ('vgdj#X?8dB', ';SPVkQB1P['),
 ('mkgcU7[bA%', '(WSO^0D_$D'),
 ('jcu!gLw/&r', '$O6jSE8(n-'),
 ('sB7rZQsR<l', '.%g3}J4Ky&'),
 ('u|I}oElaH)', ':J-K0xX^,G'),
 ('j)i)pB*HJ,', '$pUp1uqA.J'),
 ('t-0>F]bu>P', '/t~A*;NnAf'),
 ('hrI_uiW>E]', '!3-G6b`-)V'),
 ('uc61ToT%gt', ':Ofa]h]6S/'),
 ('e.t$Vi5,>f', '7u5l_be$A8'),
 ('k/u1:B%DJH', '%v6awumw.|'),
 ('e5P*D#I{m{', '7e>q(4-?YZ'),
 ('p:SPZ:e/*[', '+w[>})Q(qU'),
 ('t+v9b--,qs', '/r7iN%t$2.'),
 ('fV`&p81%d(', '8_Hn11a6PF'),
 ('gsS{jR,]|Q', '94[IVKs;Jg'),
 ('cAlyc~G.y%', '5$X!O]+&!D'),
 ('fxAN),FAc$', '89$<p$*tOC'),
 ('r<N4LAAnnB', '-y<d:t$gZ['),
 ('e?Xq9gy=@[', '7B{2i~!,CU'),
 ('m5j,b/y<EE', '(eVsN(!+)_'),
 ('stRa/S(0$F', '.5@MvLoTl`'),
 ('l+>Ki!j#v+', '&rA/U3V47I'),
 ('kQ:NIhJy~E', '%?w<-a.rL_'),
 ('sY>@9w~i^p', '.|ACipLbF+'),
 ('mJH4kwPF.-', '(.,dWp>yuK'),
 ('bW)ch:vs1P', '4`pOT)7laf'),
 ('sx|l+io`B@', '.9JXrb0>%T'),
 ('q2#Yv[O0:|', ',bk|7:=Tw0'),
 ('lpbD0St&OU', '&1N(~L57=k'),
 ('mbz=7n[0v9', '(N#zggDT7z'),
 ('ijP>aJBT!9', '#V>AMC%Mjz'),
 ('jI9P-f6r3M', '$-i>t}fkcc'),
 ('h?a*UKfT_M', '!BMq^DRMGc'),
 ('r6BV%|..*5', '-f%_m@u&qv'),
 ('i)]+09JUR&', '#pEr~2.N@E'),
 ('l}[BG9.nQS', '&KD%+2ug?i'),
 ('mtd;>7T|g>', '(5PxA0]@SR'),
 ('iW>m(L/~c=', '#`AYoEv]OQ'),
 ('pkj3RPBUrF', '+WVc@I%N3`'),
 ('euW0jm=wfR', '76`~VfzpRh'),
 ('l*j*EE:!Y?', '&qVq)xw3|S'),
 ('d3c`&/1Y^D', '6cOHn(aRF^'),
 ('hXNTVF<:SH', '!{<]_yy)[|'),
 ('mk20`,N=`=', '(Wb~H$<,HQ'),
 ('eALZe^HCHq', '7$:}Q<,v,,'),
 ('l3Ly8PBxt(', '&c:!hI%q5F'),
 ('g<[f89~U)A', '9yDRh2LNp@'),
 ('iIS#Nw]tr]', '#-[k<pEm3V'),
 ('m{oM,jr>C#', '(I0;sc3-&B'),
 ('ln^3p)j3b.', '&ZFc19VWNL'),
 ('cL?8!xP#Wj', '5:Bhjq>4`$'),
 ('e=.VHQ9E+M', '7zu_,Jixrc'),
 ('m[96fa+HDS', '(DifR^rA(i'),
 ('g9v~y/;=z(', '9i7L!(x,#F'),
 ('g~%pF`(x{u', '9Lm1*>oqI:'),
 ('hE5j*e,Q?[', '!)eVq|sJBU'),
 ('fRSM{K+;[w', '8@[;IDr*D<'),
 ('o~}KVA:VbI', '*LK/_twON}'),
 ('u-`cspdp)D', ':tHO4iPip^'),
 ('e42BpV,P}C', '7db%1OsIK]'),
 ('pD<Pd$Ag@J', '+(y>P5$~C~'),
 ('mbGXc0y3Pe', '(N+{OT!W>7'),
 ('gB|K:+r?1V', '9%J/w#3.al'),
 ('lhWI;$JC9(', '&T`-x5.viF'),
 ('k0{O[6l]bH', '%~I=DZX;N|'),
 ('r>g<|,FWi%', '-ASyJ$*PUD'),
 ('n&>e`2FO/S', ')nAQHV*Hvi'),
 ('khB~(m^@Z5', '%T%LofF/}v'),
 ('spKoFRM4if', '.1/0*K;XU8'),
 ('q8][)Ri}=q', ',hEDpKU[z,'),
 ('hoHandbYAy', '!0,MZ{NR$>'),
 ('lmRujD!(A7', '&Y@6Vwj8$x'),
 ('q:XyGf#>Wg', ',w{!+}k-`9'),
 ('s#:aIK$9^x', '.kwM-Dl2F='),
 ('jBd@A?>g|}', '$%PC$.A~J1'),
 ('koI(}OyJ:@', '%0-oKH!CwT'),
 ('e?gIaPc$Ox', '7BS-MIO5=='),
 ('o#&RMA_REo', '*kn@;tGK)*'),
 ('s4E?ZF[E<>', '.d)B}yDxyR'),
 ('k1]FH+s8j@', '%aE*,#41VT'),
 ('dWA49p}F{k', '6`$diiKyI%'),
 ('K*b}<I3(~', 'Dq41y-co]'),
 ('e?h=Xhs+K&', '7BTz{a4#/E'),
 ('b@M[XTc?}5', '4C;D{MO.Kv'),
 ('sxOMs+bE8@', '.9=;4#NxhT'),
 ('t3aZXtpNyi', '/cM}{m1G!#'),
 ('rPekx@n9:L', '->QW9/Z2wb'),
 ('lAxH.CfJB@', '&$9,uvRC%T'),
 ('hZ/V/D&rO`', '!}v_vwnk=Y'),
 ('h&`>n98~V1', '!nHAZ2h]_r'),
 ('t50y/[AEhF', '/e~!v:$xT`'),
 ('gBCR?!O*;E', '9%&@B3=!x_'),
 ('tTnCoO/*tk', '/]Z&0Hv!5%'),
 ('W5?6yQZD2', 'PeSw!?}(V'),
 ('e{e8vi@^PY', '7IQh7bC<>o'),
 ('tcneuK7v%`', '/OZQ6DgomY'),
 ('uH*Q(mcRt5', ':,q?ofOK5v'),
 ('k$1_yaF?9#', '%laG!^*.iB'),
 ('dUZ^=SE5BG', '6^}FzL)Y%{'),
 ('t_h*fbN#:(', '/GTqR_<4wF'),
 ('q=w[<m2Bk&', ',z8DyfbuWE'),
 ('vpOTK6tMr@', ';1=]/Z5F3T'),
 ('m2F|cUkKhv', '(b*JONWDT;'),
 ('k}4/oj#$~s', '%Kdv0ck5L.'),
 ('va/ky=f5pK', ';MvW!,RY1a'),
 ('c,5(mUGzYT', '5seoYN+s|j'),
 ('gp[h@]y13l', '91DTC;!Uc&'),
 ('gx:;za!?C9', '99wx#^j.&z'),
 ('r]*Ioa%$bK', '-Eq-0^m5Na'),
 (')Y}Qy.3GK', '9|1g!uc+D'),
 ('lH^2D]w;[H', '&,Fb(;8*D|'),
 ('qx%>fB$d+$', ',9mARul{rC'),
 ('libliptkB4', '&UNXUi5d%u'),
 ('jrM28*HbyG', '$3;bh!,_!{'),
 ('r?E$4f-d0/', '-B)ld}t{~M'),
 ('leh^fmrt*#', '&QTFRf3mqB'),
 ('O~pXkAbd3', 'HL+nW$NPW'),
 ('f*LO~>!0PN', '8q:=L-jT>d'),
 ('q[}7hk(+=e', ',DKgTdo#z7'),
 ('q7do-wLx%E', ',gP0tp:qm_'),
 ('vwc3}.=Z#&', ';8OcK&zSkE'),
 ('e<X;[vACXC', '7y{xDo$v{]'),
 ('j=L,YBvsBk', '$z:s|u7l%%'),
 ('oa87&PB&Bm', '*MhgnI%7%('),
 ('b^Try&me1A', '4F]3!7Y|a@'),
 ('o``:?0>/yz', '*HHwBTA(!?'),
 ('pz(G*<F93/', '+#o+q+*2cM'),
 ('cV4idO^r8W', '5_dUPHFkhm'),
 ('m*PYE=#wr^', '(q>|),kp3W'),
 ('sXzvT.g31p', '.{#7]&SWa+'),
 ('mq)8`hi{hb', '(2phHaU?T4'),
 ('h}lnSN_f$_', '!KXZ[GG}lX'),
 ('eT<gzg?q,r', '7]yS#~Bjs-'),
 ('vE[T$`n9T)', ';)D]l>Z2]G'),
 ('tj&bK}%P!F', '/VnN/[mIj`'),
 ('kX]hN=_.c-', '%{ET<,G&OK'),
 ('r/B|ra%L,.', '-v%J3^mEsL'),
 ('b[(2`4t&?J', '4DobHX57B~'),
 ('qvITjNxkLN', ',7-]VG9d:d'),
 ('jX=#G8wu#(', '${zk+18nkF'),
 ('l&#7I)Ah/E', '&nkg-9$av_'),
 ('de=9c:,@j9', '6QziO)s/Vz'),
 ('kE!iKHLN_g', '%)jU/A:GG9'),
 ('d``B*6:eCx', '6HH%qZw|&='),
 ('p]t8:Tka7q', '+E5hwMW^g,'),
 ('niJUFZF$Y:', ')U.^*S*5|N'),
 ('p}Qa|!7PpR', '+K?MJ3gI1h'),
 ('uv1fGXHN@)', ':7aR+Q,GCG'),
 ('sRw-ik:I$v', '.@8tUdwBl;'),
 ('bnEK#)[;qT', '4Z)/k9D*2j'),
 ('ey:Q|*t!Lg', '7!w?J!53:9'),
 ('c^,~EC6Pb2', '5FsL)vfINs'),
 ('tMMtBUpb$&', '/;;5%N1_lE'),
 ('jKIDq|}J&c', '$/-(2@KCn5'),
 ('dC:e5G4J/p', '6&wQezdCv+'),
 ('u;|vR#mVMW', ':xJ7@4YO;m'),
 ('gDsLPj(9S#', '9(4:>co2[B'),
 ('xb&P*pH(Q', 'qNEfq1,oJ'),
 ('Bszsaz0Iuo', '[4#4Ms~B6*'),
 ('JOT:U4ayh@', '~=]w^XMrTT'),
 ('G/^_##fcPN', '{vFGk4R`>d'),
 ('LPF4AfaHKR', 'b>*d$}MA/h'),
 ('rSneU!3}bn', '-[ZQ^3c[N)'),
 ('cv+Nq9:a<P', '57r<22w^yf'),
 ('f*2@qiHh_1', '8qbC2b,aGr'),
 ('nuU8A_$i2M', ')6^h$=lbbc'),
 ('fT!w8R#>dg', '8]j8hKk-P9'),
 ('gG6SWfM>H0', '9+f[`};-,q'),
 ('sM0GPt1HS1', '.;~+>maA[r'),
 ('dlU7VG|3Gd', '6X^g_zJW+6'),
 ('cEO^y)Md[G', '5)=F!9;{D{'),
 ('eN#^kPGv*L', '7<kFWI+oqb'),
 ('lp@e##m.!+', '&1CQk4Y&jI'),
 ('epvt3>HH?U', '7175c-,ABk'),
 ('E3u*2.<9#`', '_c6qb&y2kY'),
 ('q1Q3Do8S>g', ',a?c(hhLA9'),
 ('yX:tmrd5;]', '>{w5YkPYxV'),
 ('H*c[ML+`s=', '|qOD;Er>4Q'),
 ('e_;dzXj8de', '7GxP#QV1P7'),
 ('iB-8Br~onq', '#%th%kLhZ,'),
 ('zSc]-^U=0=', '?[OEt<^,~Q'),
 ('x2d4n4ADcP', '=bPdZX$wOf'),
 ('Gn;q2Y)Xe4', '{Zx2bRpQQu'),
 ('gRVZ]qJ#>O', '9@_}Ej.4Ae'),
 ('J%,fuysl*&', '~msR6r4eqE'),
 ('r(h9&#wc~B', '-oTin48`L['),
 ('_]DH+g9!$', '=E^|rSij5'),
 ('B:x<p&Q=t)', '[w9y17?,5G'),
 ('z:*d{z(~V2', '?wqPIso]_s'),
 ('d}R:qHj1,7', '6K@w2AVUsx'),
 ('L5M1*yG7eH', 'be;aqr+0Q|'),
 ('s|K&2S,UP|', '.J/nbLsN>0'),
 ('t$y1C2R-Av', '/l!a&V@%$;'),
 ('eHJ?)TAdTo', '7,.BpM${]*'),
 ('pQpX%(EVOH', '+?1{m8)O=|'),
 ('qiv/4tOlf=', ',U7vdm=eRQ'),
 ('M$bc0[jYf0', 'clNO~:VRRq'),
 ('jYz[ibrr9m', '$|#DU_3ki('),
 ('SlOEXfq#|', 'LXe_{R2k@'),
 ('d5m8%D6,;u', '6eYhmwf$x:'),
 ('o9{x<AyA]B', '*iI9yt!tE['),
 ('He!e=h?_2V', '|QjQzaB=bl'),
 ('QSq%~rFaP-', 'g[2mLk*^>K'),
 ('ck!6;xK$/^', '5Wjfxq/5vW'),
 ('n{{o2K1:dw', ')II0bDa)P<'),
 ('xqrJ^d[.(O', '=23.F{D&oe'),
 ('vrn%j%6{nu', ';3ZmV6f?Z:'),
 ('p#R$-mG/L', 'ikhCtY+vE'),
 ('oV/JG7fwZq', '*_v.+0Rp},'),
 ('bD?R}i8_[c', '4(B@Kbh=D5'),
 ('Lol+XIvY21', 'b0Xr{B7Rbr'),
 ('Qlib4)q2Hk', 'gXUNd92V,%'),
 ('pwwZu{7f~(', '+88}6?g}LF'),
 ('qFuGdDx^Yv', ',*6+Pw9<|;'),
 ('Cf2@;p<aL', 'vRsTx1yME'),
 ('t2&ri|[Un:', '/bn3U@DNZN'),
 ('dbP/Cj}sB+', 'OjlKz@2/j+'),
 ('wa>{k!2cXc', 'NnxZS,Tdmh'),
 ('5JJ2]i)p4', 'cYp<xlh&6.'),
 ('s>f40rn,O]', 'x<|U~!Rw@;'),
 ('ssbyA9}]QP', 'wTi<lH6s=X'),
 ('vKx<0Qa!aP', 'o*$5]rH:r['),
 ('fkq7lhLkdH', 'b,nf]GF[[?')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
Spanish
guid_mapping = \
[('e+/O]%*qfk', '6=u<D5pin$'),
 ('h~5xz+=ke~', '9hd8!!ycm1'),
 ('s9-GL*@AXD', '-*s*/9Bs5]'),
 ('cPO|Cru8n<', '4X<I%j50vO'),
 ('m*#%sE.`.;', '&<jl3wt=@N'),
 ('hNE9}>;Q&-', '9V(hJ,wI/J'),
 ('jN|NAUP*h}', '#VI;#M=9p0'),
 ('j|z@PMgdx,', '#f!B=ER`FI'),
 ('n+t>2`:;P/', '(=4za=v)XL'),
 ('ilGtw#=asM', '!t*473y]Ab'),
 ('mcc&0Kq^xE', '&kNm}C1;F^'),
 ('gz9${p}er*', '8HhkHhJ{zG'),
 ('dY96`C-f(_', '56heGus|:W'),
 ('r>aI-$$|wT', ',{L,s4k?Ei'),
 ('k9E.p^<u$,', '$*(t0;xm-I'),
 ('l$zM~ihPFE', '%-!:KaSHN^'),
 ('jTNoKo}Bu+', '#1;Z.gJtCH'),
 ('mz[>>AxIr4', '&HCzzs8Azt'),
 ('u4^lH.xem5', '/$EW+%8{uu'),
 ('bk2ByZIeU+', '3sa$9R,{2H'),
 ('twrhzJ[k:Z', '.E2S!BCc]o'),
 ('kS)hDm%w}R', '$0oS&elogg'),
 ('AES],s:8=', 'sMhU>3vg+'),
 ('k[)#L4.[v3', '$~oj/Wt/Ds'),
 ('k}A9]O:0xw', '$g#hDGvSF;'),
 ('j7eEZkzsCZ', '#(P(|c!kKo'),
 ('s<_WLSB3I/', '-_F_/K$VQL'),
 ('cYKvF#ptF7', '46.6)30lNw'),
 ('m)WUtJS`H&', '&;_]4B@=PD'),
 ('l$2O|9w`F~', '%-a<I17=N1'),
 ('kZ52zV#[Iv', '$7da!Nj/Q:'),
 ('i2]v|D3@:j', '!!D6Ivb.]#'),
 ('r5C646H*+*', ',%%ecY+9=G'),
 ('nIfRn<aY:N', '(QQ?Y*LQ]c'),
 ('5S(f7%O-$', 'X0E7(l<s4'),
 ('m?}%V6s8]*', '&|Jl^Y30aG'),
 ('uRo^w#p5Be', '/ZZE730XJ6'),
 ('o=,%hU&yX%', ')`rlSMmq5C'),
 ('lq`T^ZBF2Y', '%yG[ER$x!n'),
 ('f>c7x2E]Q6', '7{Nf8U(:Yv'),
 ('q[S4`,F0D=', '+~@cG#)SLP'),
 ('jCd]`-=k,:', '#KODG$yc>M'),
 ('vf)G?[_?Pf', ':no*A/F-X7'),
 ('j9:K,~DQ2v', '#*v.r[&I!:'),
 ('ui3>b-?a@m', '/qbzM$A]}&'),
 ('qVi;t%/`F|', '+3Tw45u=NZ'),
 ('g-]bb&[.E!', '8?DMM6C%Mz'),
 ('f21=-A~W;~', '7!~yssKO^1'),
 ('sT5=H|@KU|', '-1dy+?BC2Z'),
 ('lU@C3<C8Wk', '%2B%b*%04$'),
 ('jDA-V?/hVj', '#L#s^-u~3#'),
 ('h_9=mkZXAH', '9chyXc|PI{'),
 ('mk1VltJl<]', '&s~^Wl-d_U'),
 ('c(,2{yXI#E', '4:raHq`A,^'),
 ('kkbYQXw5b;', '$sM{>P7XjN'),
 ('ia8as9sCY|', '!igL313u6Z'),
 ('j%*8gN)q>d', '#.pgRFoi{5'),
 ('bd~Ght5tLR', '3lK*SldlTg'),
 ('onMKID2d;D', ')v:.,va`^]'),
 ('q8fF$4,c6_', '+)Q)kWr_&W'),
 ('upiX0g1quR', '/xT`}}~iCg'),
 ('n:7&>YT5A=', '(]fmzQ[XIP'),
 ('j2IQ=f=w3@', '#!,>y|yo#S'),
 ('EWXNc<g5)', 'w4mckxRd8'),
 ('gFOojQO(MH', '8N<ZUI<7U{'),
 ('gePC:Xt_nW', '8m=%vP4<vl'),
 ('vNiD6A.v#s', ':VT&estn,-'),
 ('?n!)c/h=Q', '-vzFkuSyI'),
 ('gYIoR`|AxW', '86,Z?=IsFl'),
 ('j<egqG@)EL', '#_PR1yB8Ma'),
 ('t`cagaWApo', '.dNLR]_sx)'),
 ('jN^Vc%9OQ5', '#VE^N5hGYu'),
 ('o3VS!KWb/@', ')#^@iC_^[S'),
 ('iR;U<J:CJJ', '!Zw]xBvuR}'),
 ('i^J8&$(1]|', '!b-gm4nTaZ'),
 ('pS>DrFhd%u', '*0z&2xS`./'),
 ('t|h3|;E4g{', '.fSbI)(WoY'),
 ('p.yv>BQ470', '*@96zt>W(p'),
 ('f#4-L[mp5*', '7,cs//Xh%G'),
 ('oNpApS<AoJ', ')V0#0Kxsw}'),
 ('nsS59c`VL,', '(A@dh_GNTI'),
 ('m{noqE29%I', '&eYZ1wa1.|'),
 ('sSW/?WMy17', '-0_uAO:q9w'),
 ('d-q4J~CNW_', '5?1c-[%F4W'),
 ('jKO,9y0M;#', '#S<rhq}E^A'),
 ('skOM(?n$GG', '-s<:n-Y4O`'),
 ('mi+kf0LTW.', '&qqVQS/L4K'),
 ('vgdj#X?8dB', ':oOUjPA0l@'),
 ('mkgcU7[bA%', '&sRN]ZC^IC'),
 ('jcu!gLw/&r', '#k5iRD7&/,'),
 ('sB7rZQsR<l', '-Jf2|I3J_%'),
 ('u|I}oElaH)', '/f,JZwW]PF'),
 ('j)i)pB*HJ,', '#;To0tpzRI'),
 ('t-0>F]bu>P', '.?}z):Mm{e'),
 ('hrI_uiW>E]', '9z,F5a_,MU'),
 ('uc61ToT%gt', '/ke~[g[5o.'),
 ('e.t$Vi5,>f', '6@4k^ad#{7'),
 ('k/u1:B%DJH', '$[5~vtlvR{'),
 ('e5P*D#I{m{', '6%=p&3,>uY'),
 ('p:SPZ:e/*[', '*]@=|(P&<T'),
 ('t+v9b--,qs', '.=6hM$s#y-'),
 ('fV`&p81%d(', '73Gm00~5lE'),
 ('gsS{jR,]|Q', '8A@HUJr:ff'),
 ('cAlyc~G.y%', '4IW9N[*%GC'),
 ('fxAN),FAc$', '7F#;o#)skB'),
 ('r<N4LAAnnB', ',_;c/s#fv@'),
 ('e?Xq9gy=@[', '6|`1h}9+}T'),
 ('m5j,b/y<EE', '&%UrM&9*M^'),
 ('stRa/S(0$F', '-B?LuKnS-_'),
 ('l+>Ki!j#v+', '%=z.T2U3DH'),
 ('kQ:NIhJy~E', '$Yv;,~-qh^'),
 ('sY>@9w~i^p', '-6zBhoKab*'),
 ('mJH4kwPF.-', '&R+cVo=x@J'),
 ('bW)ch:vs1P', '34oNS(6k9e'),
 ('sx|l+io`B@', '-FIWqaZ=JS'),
 ('q2#Yv[O0:|', '+!j{6/<S]Z'),
 ('lpbD0St&OU', '%xM&}K46Wj'),
 ('mbz=7n[0v9', '&j!yffCSDy'),
 ('ijP>aJBT!9', '!r=zLB$L+y'),
 ('jI9P-f6r3M', '#Qh=s|ej#b'),
 ('h?a*UKfT_M', '9|Lp]CQLcb'),
 ('r6BV%|..*5', ',&$^l?t%<u'),
 ('i)]+09JUR&', '!;Dq}1-MZD'),
 ('l}[BG9.nQS', '%gC$*1tfYh'),
 ('mtd;>7T|g>', '&BOwzZ[?oQ'),
 ('iW>m(L/~c=', '!4zXnDu[kP'),
 ('pkj3RPBUrF', '*sUb?H$Mz_'),
 ('euW0jm=wfR', '6C_}Ueyong'),
 ('l*j*EE:!Y?', '%<Up(wv26R'),
 ('d3c`&/1Y^D', '5#NGm&~Qb]'),
 ('hXNTVF<:SH', '95;[^xx(0{'),
 ('mk20`,N=`=', '&sa}G#;+dP'),
 ('eALZe^HCHq', '6I/|P;+uP+'),
 ('l3Ly8PBxt(', '%#/9gH$pBE'),
 ('g<[f89~U)A', '8_CQg1KM;?'),
 ('iIS#Nw]tr]', '!Q@j;oDlzU'),
 ('m{oM,jr>C#', '&eZ:rb2,KA'),
 ('ln^3p)j3b.', '%vEb08UVjK'),
 ('cL?8!xP#Wj', '4TAgip=34#'),
 ('e=.VHQ9E+M', '6`t^+Ihw=b'),
 ('m[96fa+HDS', '&~heQ]qzLh'),
 ('g9v~y/;=z(', '8*6K9&w+HE'),
 ('g~%pF`(x{u', '8hl0)=npe/'),
 ('hE5j*e,Q?[', '9MdUp{rI|T'),
 ('fRSM{K+;[w', '7Z@:HCq)~;'),
 ('o~}KVA:VbI', ')hJ.^svNj|'),
 ('u-`cspdp)D', '/?GN3hOh;]'),
 ('e42BpV,P}C', '6$a$0NrHg['),
 ('pD<Pd$Ag@J', '*Lx=O4#}}}'),
 ('mbGXc0y3Pe', '&j*`NS9VX6'),
 ('gB|K:+r?1V', '8JI.v!2-9k'),
 ('lhWI;$JC9(', '%p_,w4-u*E'),
 ('k0{O[6l]bH', '$8H<CYW:j{'),
 ('r>g<|,FWi%', ',{RxI#)OqC'),
 ('n&>e`2FO/S', '(/zPGU)G[h'),
 ('khB~(m^@Z5', '$p$KneE.7u'),
 ('spKoFRM4if', '-x.Z)J:Wq7'),
 ('q8][)Ri}=q', '+)DCoJT@`+'),
 ('hoHandbYAy', '9w+LY`MQI='),
 ('lmRujD!(A7', '%u?5Uvi7Iw'),
 ('q:XyGf#>Wg', '+]`9*|j,48'),
 ('s#:aIK$9^x', '-,vL,Ck1b<'),
 ('jBd@A?>g|}', '#JOB#-z}f0'),
 ('koI(}OyJ:@', '$w,nJG9B]S'),
 ('e?gIaPc$Ox', '6|R,LHN4W<'),
 ('o#&RMA_REo', '),m?:sFJM)'),
 ('s4E?ZF[E<>', '-$(A|xCw_Q'),
 ('k1]FH+s8j@', '$9D)+!30rS'),
 ('dWA49p}F{k', '54#chhJxe$'),
 ('K*b}<I3(~', 'C<30_,bn['),
 ('e?h=Xhs+K&', '6|Sy`~3!SD'),
 ('b@M[XTc?}5', '3}:C`LN-gu'),
 ('sxOMs+bE8@', '-F<:3!Mw)S'),
 ('t3aZXtpNyi', '.#L|`l0FG!'),
 ('rPekx@n9:L', ',XPV8.Y1]a'),
 ('lAxH.CfJB@', '%I8+tuQBJS'),
 ('hZ/V/D&rO`', '97u^uvmjWX'),
 ('h&`>n98~V1', '9/GzY1g[3q'),
 ('t50y/[AEhF', '.%}9u/#wp_'),
 ('gBCR?!O*;E', '8J%?A2<9^^'),
 ('tTnCoO/*tk', '.1Y%ZGu9B$'),
 ('W5?6yQZD2', 'O%RvG>|&U'),
 ('e{e8vi@^PY', '6ePg6aB;Xn'),
 ('tcneuK7v%`', '.kYP5Cfn.X'),
 ('uH*Q(mcRt5', '/Pp>neNJBu'),
 ('k$1_yaF?9#', '$-~F9])-*A'),
 ('dUZ^=SE5BG', '52|EyK(XJ`'),
 ('t_h*fbN#:(', '.cSpQ^;3]E'),
 ('q=w[<m2Bk&', '+`7CxeatsD'),
 ('vpOTK6tMr@', ':x<[.Y4EzS'),
 ('m2F|cUkKhv', '&!)INMVCp:'),
 ('k}4/oj#$~s', '$gcuZbj4h-'),
 ('va/ky=f5pK', ':iuV9+QXx~'),
 ('c,5(mUGzYT', '4>dnXM*r6i'),
 ('gp[h@]y13l', '8xCSB:9T#%'),
 ('gx:;za!?C9', '8Fvw!]i-Ky'),
 ('r]*Ioa%$bK', ',ap,Z]l4j~'),
 (')Y}Qy.3GK', '860fGtb*C'),
 ('lH^2D]w;[H', '%PEa&:7)~{'),
 ('qx%>fB$d+$', '+FlzQtk`=B'),
 ('libliptkB4', '%qMWTh4cJt'),
 ('jrM28*HbyG', '#z:ag9+^G`'),
 ('r?E$4f-d0/', ',|(kc|s`8L'),
 ('leh^fmrt*#', '%mSEQe2l<A'),
 ('O~pXkAbd3', 'Gh*ms#MOV'),
 ('f*LO~>!0PN', '7</<K,iSXc'),
 ('q[}7hk(+=e', '+~JfScn!`6'),
 ('q7do-wLx%E', '+(OZso/p.^'),
 ('vwc3}.=Z#&', ':ENbJ%yR,D'),
 ('e<X;[vACXC', '6_`wCn#u5['),
 ('j=L,YBvsBk', '#`/r{t6kJ$'),
 ('oa87&PB&Bm', ')igfmH$6J&'),
 ('b^Try&me1A', '3b[296X{9?'),
 ('o``:?0>/yz', ')dGvASz&G>'),
 ('pz(G*<F93/', '*Hn*p*)1#L'),
 ('cV4idO^r8W', '43cTOGEj)l'),
 ('m*PYE=#wr^', '&<={(+jozV'),
 ('sXzvT.g31p', '-5!6[%RV9*'),
 ('mq)8`hi{hb', '&yogG~T>p3'),
 ('h}lnSN_f$_', '9gWY@FF|-W'),
 ('eT<gzg?q,r', '61xR!}Ai>,'),
 ('vE[T$`n9T)', ':MC[k=Y11F'),
 ('tj&bK}%P!F', '.rmM.@lH+_'),
 ('kX]hN=_.c-', '$5DS;+F%kJ'),
 ('r/B|ra%L,.', ',[$I2]lD>K'),
 ('b[(2`4t&?J', '3~naGW46|}'),
 ('qvITjNxkLN', '+D,[UF8cTc'),
 ('jX=#G8wu#(', '#5yj*07m,E'),
 ('l&#7I)Ah/E', '%/jf,8#~[^'),
 ('de=9c:,@j9', '5myhN(r.ry'),
 ('kE!iKHLN_g', '$MiT.z/Fc8'),
 ('d``B*6:eCx', '5dG$pYv{K<'),
 ('p]t8:Tka7q', '*a4gvLV](+'),
 ('niJUFZF$Y:', '(q-])R)46M'),
 ('p}Qa|!7PpR', '*g>LI2fHxg'),
 ('uv1fGXHN@)', '/D~Q*P+F}F'),
 ('sRw-ik:I$v', '-Z7sTcvA-:'),
 ('bnEK#)[;qT', '3v(.j8C)yi'),
 ('ey:Q|*t!Lg', '6Gv>I942T8'),
 ('c^,~EC6Pb2', '4brK(ueHjr'),
 ('tMMtBUpb$&', '.U:4$M0^-D'),
 ('jKIDq|}J&c', '#S,&1?JB/4'),
 ('dC:e5G4J/p', '5KvPdycB[*'),
 ('u;|vR#mVMW', '/^I6?3XNUl'),
 ('gDsLPj(9S#', '8L3/=bn10A'),
 ('xb&P*pH(Q', 'pjDe<0+nI'),
 ('Bszsaz0Iuo', '@A!3Lr}AC)'),
 ('JOT:U4ayh@', '}W[v]WLqpS'),
 ('G/^_##fcPN', '`[EFj3Q_Xc'),
 ('LPF4AfaHKR', 'aX)c#|LzSg'),
 ('rSneU!3}bn', ',0YP]2b@j('),
 ('cv+Nq9:a<P', '4Dq;11v]_e'),
 ('f*2@qiHh_1', '7<aB1a+~cq'),
 ('nuU8A_$i2M', '(C]g#<ka!b'),
 ('fT!w8R#>dg', '71i7gJj,l8'),
 ('gG6SWfM>H0', '8Oe@_|:,Pp'),
 ('sM0GPt1HS1', '-U}*=l~z0q'),
 ('dlU7VG|3Gd', '5t]f^yIVO5'),
 ('cEO^y)Md[G', '4M<E98:`~`'),
 ('eN#^kPGv*L', '6VjEVH*n<a'),
 ('lp@e##m.!+', '%xBPj3X%+H'),
 ('epvt3>HH?U', '6x64b,+z|j'),
 ('E3u*2.<9#`', '^#5pa%x1,X'),
 ('q1Q3Do8S>g', '+9>b&ggK{8'),
 ('yX:tmrd5;]', '=5v4XjOX^U'),
 ('H*c[ML+`s=', '{<NC:Dq=AP'),
 ('e_;dzXj8de', '6cwO!PU0l6'),
 ('iB-8Br~onq', '!Jsg$jKgv+'),
 ('zSc]-^U=0=', '>0NDs;]+8P'),
 ('x2d4n4ADcP', '<!OcYW#vke'),
 ('Gn;q2Y)Xe4', '`vw1aQoPmt'),
 ('gRVZ]qJ#>O', '8Z^|Di-3{d'),
 ('J%,fuysl*&', '}.rQ5q3d<D'),
 ('r(h9&#wc~B', ',:Shm37_h@'),
 ('_]DH+g9!$', '<a]{=Rhi4'),
 ('B:x<p&Q=t)', '@]8x06>+BF'),
 ('z:*d{z(~V2', '>]pOHrn[3r'),
 ('d}R:qHj1,7', '5g?v1zUT>w'),
 ('L5M1*yG7eH', 'a%:~pq*Zm{'),
 ('s|K&2S,UP|', '-f.maKrMXZ'),
 ('t$y1C2R-Av', '.-9~%U?$I:'),
 ('eHJ?)TAdTo', '6P-AoL#`1)'),
 ('pQpX%(EVOH', '*Y0`l7(NW{'),
 ('qiv/4tOlf=', '+q6ucl<dnP'),
 ('M$bc0[jYf0', 'b-MN}/UQnp'),
 ('jYz[ibrr9m', '#6!CT^2j*&'),
 ('SlOEXfq#|', 'Ktd^5Q1j?'),
 ('d5m8%D6,;u', '5%Xglve#^/'),
 ('o9{x<AyA]B', ')*H8xs9sa@'),
 ('He!e=h?_2V', '{miPy~A<!k'),
 ('QSq%~rFaP-', 'f01lKj)]XJ'),
 ('ck!6;xK$/^', '4siewp.4[V'),
 ('n{{o2K1:dw', '(eHZaC~(l;'),
 ('xqrJ^d[.(O', '<y2-E`C%:d'),
 ('vrn%j%6{nu', ':zYlU5e>v/'),
 ('p#R$-mG/L', 'h,gB?X*uD'),
 ('oV/JG7fwZq', ')3u-*ZQo7+'),
 ('bD?R}i8_[c', '3LA?Jag<~4'),
 ('Lol+XIvY21', 'awWq`A6Q!q'),
 ('Qlib4)q2Hk', 'ftTMc81UP$'),
 ('pwwZu{7f~(', '*E7|5>f|hE'),
 ('qFuGdDx^Yv', '+N5*Ov8;6:'),
 ('Cf2@;p<aL', 'unrS^0xLD'),
 ('t2&ri|[Un:', '.!m2T?CMvM'),
 ('dbP/Cj}sB+', 'B8+FHyt^E'),
 ('wa>{k!2cXc', 'cv-,SC1HIr'),
 ('5JJ2]i)p4', 'f=r^TR.L0,'),
 ('s>f40rn,O]', 'yK@HKIZR,h'),
 ('ssbyA9}]QP', 'izUG=]G]=<'),
 ('vKx<0Qa!aP', 'k=,7DzSs>p'),
 ('fkq7lhLkdH', 'r[gU./Cvk`')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
French
guid_mapping = \
[('e+/O]%*qfk', 'p);vRzMs+W'),
 ('h~5xz+=ke~', 'Ive-9<)?/'),
 ('s9-GL*@AXD', 'o6puwHE{j4'),
 ('cPO|Cru8n<', 'ua?z9KS@^h'),
 ('m*#%sE.`.;', 'o.l+o.aIv#'),
 ('hNE9}>;Q&-', 'i+%_VY]7bt'),
 ('jN|NAUP*h}', 'vwLrgavleL'),
 ('j|z@PMgdx,', 'umk_Ql/M`8'),
 ('n+t>2`:;P/', 'F*@Hxe1UYX'),
 ('ilGtw#=asM', 'oTmq$Cq1H`'),
 ('mcc&0Kq^xE', 'fe<{h`wWIF'),
 ('gz9${p}er*', 'dTNjd[5|Ge'),
 ('dY96`C-f(_', 'e?6[KX^Js+'),
 ('r>aI-$$|wT', 'CJb&~c&tZv'),
 ('k9E.p^<u$,', '0/,+rSKt6'),
 ('l$zM~ihPFE', 'qTFGENa@Y3'),
 ('jTNoKo}Bu+', 'AtMq%)YA4~'),
 ('mz[>>AxIr4', 'O0NI(S,j2o'),
 ('u4^lH.xem5', 'm]_=p1zwik'),
 ('bk2ByZIeU+', 'uuu#3&G{(R'),
 ('twrhzJ[k:Z', 'qMOzrk<+(:'),
 ('kS)hDm%w}R', 'zXq}ul(8_E'),
 ('AES],s:8=', 'i_0H+>}|<.'),
 ('k[)#L4.[v3', 'G6=c,ll^]`'),
 ('k}A9]O:0xw', 'jk_(_rr<<!'),
 ('j7eEZkzsCZ', 'IJG[L,X;A3'),
 ('s<_WLSB3I/', 'vaSXyU,d,a'),
 ('cYKvF#ptF7', 'L[=I7EcROn'),
 ('m)WUtJS`H&', 'L&#(>5c7a*'),
 ('l$2O|9w`F~', 'Q}6:Ng``xM'),
 ('kZ52zV#[Iv', 'upq|kJ[Qi$'),
 ('i2]v|D3@:j', 'w1FM?@j-tk'),
 ('r5C646H*+*', 'gPWIY|dqgC'),
 ('nIfRn<aY:N', 'hBl;b1akKo'),
 ('5S(f7%O-$', 'kbJZsU]Tm~'),
 ('m?}%V6s8]*', 'x)ZvHsvNcz'),
 ('uRo^w#p5Be', 'nlky<K>nXE'),
 ('o=,%hU&yX%', 'B)M|?v5vl3'),
 ('lq`T^ZBF2Y', 'DUa%sQ;0;@'),
 ('f>c7x2E]Q6', 'IkP885[1L6'),
 ('q[S4`,F0D=', 'h0~.:5}&Q8'),
 ('jCd]`-=k,:', 'INr2(vFB[p'),
 ('vf)G?[_?Pf', 'Q=UkoGw%47'),
 ('j9:K,~DQ2v', 'HsOJP(RQoY'),
 ('ui3>b-?a@m', 'J#u?@$XnR$'),
 ('qVi;t%/`F|', 'iB7LW}8*Ii'),
 ('g-]bb&[.E!', 'vbEn[U)2cf'),
 ('f21=-A~W;~', 'n65[nUZiZc'),
 ('sT5=H|@KU|', 'K6g6$oK|jN'),
 ('lU@C3<C8Wk', 'O}c<W!@%aZ'),
 ('jDA-V?/hVj', 'g[tAvcrR3^'),
 ('h_9=mkZXAH', 'Ft$h3i.|l.'),
 ('mk1VltJl<]', 'y8u|!Om27i'),
 ('c(,2{yXI#E', 'lo1wB^!`h,'),
 ('kkbYQXw5b;', 'y`v(^%tvG3'),
 ('ia8as9sCY|', 'uO%6i;{0PZ'),
 ('j%*8gN)q>d', 'Ddu%%IIGo*'),
 ('bd~Ght5tLR', 'rl:ZBh8sp^'),
 ('onMKID2d;D', 'cHz7UCnS&i'),
 ('q8fF$4,c6_', 'wAQL>iJ/-]'),
 ('upiX0g1quR', 'cM;m6U=Dg5'),
 ('n:7&>YT5A=', 'FFMu>hPw;u'),
 ('j2IQ=f=w3@', 'I_Q-5hX|5;'),
 ('EWXNc<g5)', '[#-i4q4Hz'),
 ('gFOojQO(MH', 'z7[5xEgcrA'),
 ('gePC:Xt_nW', 'Ay%EM@L0b~'),
 ('vNiD6A.v#s', 'bsVR4>6gl0'),
 ('?n!)c/h=Q', 'QykP%i/vKj'),
 ('gYIoR`|AxW', 'bP:bhgKryC'),
 ('j<egqG@)EL', 'G@(d+tSaA^'),
 ('t`cagaWApo', 'm$gS*RQqQ1'),
 ('jN^Vc%9OQ5', 'O#$FD?t_j)'),
 ('o3VS!KWb/@', 'o#s^(c`}.G'),
 ('iR;U<J:CJJ', 'w[%X~D#R,7'),
 ('i^J8&$(1]|', 'CY~?X/vp+j'),
 ('pS>DrFhd%u', 'Cu].QU#a&l'),
 ('t|h3|;E4g{', 'hX`.aRn$&{'),
 ('p.yv>BQ470', 'IThTxqnu;|'),
 ('f#4-L[mp5*', 'lW;xJ;HJv/'),
 ('oNpApS<AoJ', 'c(A-(Xa1)x'),
 ('nsS59c`VL,', 'hv3J+WS`/,'),
 ('m{noqE29%I', 'y;mRF(PX>0'),
 ('sSW/?WMy17', 'q1DvZ4Qkh,'),
 ('d-q4J~CNW_', 'k{y?<`|#63'),
 ('jKO,9y0M;#', 'ny_8#ZQA/?'),
 ('skOM(?n$GG', 'svVKQZTWFU'),
 ('mi+kf0LTW.', 't,2AZ>_CA/'),
 ('vgdj#X?8dB', 'n,~jhT?[]W'),
 ('mkgcU7[bA%', ']#3u-c%5X'),
 ('jcu!gLw/&r', 'Qw(O&Fnkul'),
 ('sB7rZQsR<l', 'Hk9k3U@-DA'),
 ('u|I}oElaH)', 'LG(/,IHQi@'),
 ('j)i)pB*HJ,', 'xwNS`|r~1x'),
 ('t-0>F]bu>P', 'qJP9,I/X;?'),
 ('hrI_uiW>E]', 'H38F4o,>An'),
 ('uc61ToT%gt', 'xc)G{&Ta22'),
 ('e.t$Vi5,>f', 'DS~l]pq.y<'),
 ('k/u1:B%DJH', 'uNyx=*R.$~'),
 ('e5P*D#I{m{', 'E2g&j~V_+i'),
 ('p:SPZ:e/*[', 'umTKoLZSfc'),
 ('t+v9b--,qs', 'hZ-27c=iA5'),
 ('fV`&p81%d(', 'H(5ar5kY/Y'),
 ('gsS{jR,]|Q', 'oi2j6zc,T]'),
 ('cAlyc~G.y%', 'bDx}p^DSVL'),
 ('fxAN),FAc$', 'hN=Lly0+D{'),
 ('r<N4LAAnnB', 'w#;7*w+/l+'),
 ('e?Xq9gy=@[', 'wt?Q|)Y7F1'),
 ('m5j,b/y<EE', 'i_cTqW/(1E'),
 ('stRa/S(0$F', 'q@wPIm/;#)'),
 ('l+>Ki!j#v+', 'DN*^.Q~HcI'),
 ('kQ:NIhJy~E', 'x2E6#%E!/p'),
 ('sY>@9w~i^p', 'r{g3sXk]Cm'),
 ('mJH4kwPF.-', 'Jcx)35]`H]'),
 ('bW)ch:vs1P', 'bp+p&^O&Nz'),
 ('sx|l+io`B@', 'HPt<x)x%Jh'),
 ('q2#Yv[O0:|', 'p`7>hfkNfW'),
 ('lpbD0St&OU', 'C^p96b?pgu'),
 ('mbz=7n[0v9', 'g^hxtS_)Ja'),
 ('ijP>aJBT!9', 'N@X:<s:Osr'),
 ('jI9P-f6r3M', 'Kc0|/i[KY@'),
 ('h?a*UKfT_M', 'm`:zwx?UCO'),
 ('r6BV%|..*5', 'kfOOt3pPdZ'),
 ('i)]+09JUR&', 'G]3ZD2G$ww'),
 ('l}[BG9.nQS', 'rHNPZJUEFp'),
 ('mtd;>7T|g>', 'f;],oZor+L'),
 ('iW>m(L/~c=', 'CW+/?p:?BO'),
 ('pkj3RPBUrF', 'FHqW?gqMKx'),
 ('euW0jm=wfR', 'HQ$_4*oGf3'),
 ('l*j*EE:!Y?', 'pcYb[d%n,O'),
 ('d3c`&/1Y^D', 'g8.ti_%`5'),
 ('hXNTVF<:SH', 'hE&?:>xB0v'),
 ('mk20`,N=`=', 'MV[vr/8+{>'),
 ('eALZe^HCHq', 'HrZ~>9NjBH'),
 ('l3Ly8PBxt(', 'A_Vjy~^@?}'),
 ('g<[f89~U)A', 'DDzO/+_}ww'),
 ('iIS#Nw]tr]', 'x7GO_2-WY$'),
 ('m{oM,jr>C#', 'i3#3D+l`w$'),
 ('ln^3p)j3b.', 'f0b;Rq1k!_'),
 ('cL?8!xP#Wj', 'twkWz3eS+-'),
 ('e=.VHQ9E+M', 'j8XG#DTPjL'),
 ('m[96fa+HDS', 'AmEQ/?7Q#x'),
 ('g9v~y/;=z(', 'Iq@M;2CIzf'),
 ('g~%pF`(x{u', 'uhYJm4N/!$'),
 ('hE5j*e,Q?[', 'oCa[}6b]{J'),
 ('fRSM{K+;[w', 'ymuYBM5)ux'),
 ('o~}KVA:VbI', 'u9/j`LQwrv'),
 ('u-`cspdp)D', 'B|v&Z,u=T'),
 ('e42BpV,P}C', 'bTrCSD^W4m'),
 ('pD<Pd$Ag@J', 'xQK`2V6wDX'),
 ('mbGXc0y3Pe', 'r7L@;3f5Y^'),
 ('gB|K:+r?1V', 'vy}j#{dVU,'),
 ('lhWI;$JC9(', 'M4#3n[]D/T'),
 ('k0{O[6l]bH', 'p(t;=_z4`='),
 ('r>g<|,FWi%', 'Gh36nI3h)B'),
 ('n&>e`2FO/S', 'A%emXRt~a]'),
 ('khB~(m^@Z5', 's9?zpnq?/g'),
 ('spKoFRM4if', 'Osy[q7a%UV'),
 ('q8][)Ri}=q', 'iyxxWaZ8Wb'),
 ('hoHandbYAy', 'fRSFWQK>W('),
 ('lmRujD!(A7', 'lcC48!,,{,'),
 ('q:XyGf#>Wg', 'ja9thWdG~?'),
 ('s#:aIK$9^x', 'Cdm[YJ2i`t'),
 ('jBd@A?>g|}', 'BxD0*Nx8HN'),
 ('koI(}OyJ:@', 'mK?UY]$UVp'),
 ('e?gIaPc$Ox', 'e-#MW&-!m7'),
 ('o#&RMA_REo', 'O_HGdfn7R7'),
 ('s4E?ZF[E<>', 'rnHajUXn]|'),
 ('k1]FH+s8j@', 'ns:xfr`B.`'),
 ('dWA49p}F{k', 'JXC>bWd>&Z'),
 ('K*b}<I3(~', 'BNN4wvUA&P'),
 ('e?h=Xhs+K&', 'sOd2&00m?K'),
 ('b@M[XTc?}5', 'q382+6kQ}}'),
 ('sxOMs+bE8@', 'sgq|,rEUT>'),
 ('t3aZXtpNyi', 'Mmy:MH3p-5'),
 ('rPekx@n9:L', 'bb1Lx^zyVu'),
 ('lAxH.CfJB@', 'mSo]}$<EpU'),
 ('hZ/V/D&rO`', 'OXH#q-u9XF'),
 ('h&`>n98~V1', 'P[t`X50n$K'),
 ('t50y/[AEhF', 'CaSU3w{HJO'),
 ('gBCR?!O*;E', 'b(JUWzefV^'),
 ('tTnCoO/*tk', ':?*,_d`iM'),
 ('W5?6yQZD2', 'N$AR]vQR?L'),
 ('e{e8vi@^PY', 'jFv`AX2j9Z'),
 ('tcneuK7v%`', 'w{[+/hi?P7'),
 ('uH*Q(mcRt5', 'C}D/)CbE1E'),
 ('k$1_yaF?9#', 'r]by!Z{bH3'),
 ('dUZ^=SE5BG', '5H}uoT?x9'),
 ('t_h*fbN#:(', 'd_{5}`KOeV'),
 ('q=w[<m2Bk&', 'b=!Fr*y_C!'),
 ('vpOTK6tMr@', 'P[nc3.TLD`'),
 ('m2F|cUkKhv', 'G~@ufSz/a;'),
 ('k}4/oj#$~s', 'J32gf}o<MD'),
 ('va/ky=f5pK', 'dnCkHdCc(#'),
 ('c,5(mUGzYT', 'M$iq^Ddz$z'),
 ('gp[h@]y13l', 'cH+7jy4I,m'),
 ('gx:;za!?C9', 'uQ-6g&t&/t'),
 ('r]*Ioa%$bK', 'ltf#^eLgH='),
 (')Y}Qy.3GK', 'cYWtxb5I.n'),
 ('lH^2D]w;[H', 's&%k)X]^%+'),
 ('qx%>fB$d+$', 'b-3J|=Nm69'),
 ('libliptkB4', 'G;f97RI^i|'),
 ('jrM28*HbyG', 'Lng7&qhm~G'),
 ('r?E$4f-d0/', 'L~g[-Y5a.V'),
 ('leh^fmrt*#', 'uEmYu^%Cdm'),
 ('O~pXkAbd3', 'dW]ePHn0<E'),
 ('f*LO~>!0PN', 'xj/*Nw.FyN'),
 ('q[}7hk(+=e', 'I5l?zw=g2W'),
 ('q7do-wLx%E', 'HF8bKY!Wia'),
 ('vwc3}.=Z#&', 'PcUr6zy#ql'),
 ('e<X;[vACXC', 'uTx.c_gB-g'),
 ('j=L,YBvsBk', 'M=(.zK+i8]'),
 ('oa87&PB&Bm', 'w?},I|jwcN'),
 ('b^Try&me1A', 'wU6oi[(~g5'),
 ('o``:?0>/yz', 'rJf@3vMORX'),
 ('pz(G*<F93/', 't)7YT?VSxY'),
 ('cV4idO^r8W', 'm*zfj4hJj+'),
 ('m*PYE=#wr^', 'z#:5{OdBN]'),
 ('sXzvT.g31p', '`ePFuGBDX'),
 ('mq)8`hi{hb', 'co2;shq(5S'),
 ('h}lnSN_f$_', 'z>%tQDyw7D'),
 ('eT<gzg?q,r', 'yc9tc)O|D)'),
 ('vE[T$`n9T)', 'CmEf8|#B?{'),
 ('tj&bK}%P!F', 'QG_m`Y6OnU'),
 ('kX]hN=_.c-', 'H~PFXc^2.|'),
 ('r/B|ra%L,.', 'CuDj}XI),:'),
 ('b[(2`4t&?J', 'j]:U,18j(c'),
 ('qvITjNxkLN', 'c+Zk;oa>e/'),
 ('jX=#G8wu#(', 'dy>%OTh=dS'),
 ('l&#7I)Ah/E', 'j_Sf!`8fUy'),
 ('de=9c:,@j9', 'ET[Oa;OLaK'),
 ('kE!iKHLN_g', 'wt]m$(ynIk'),
 ('d``B*6:eCx', 'dC[x.]4VGu'),
 ('p]t8:Tka7q', 'w?1B]|VvAn'),
 ('niJUFZF$Y:', 'N?ze.ZE4@K'),
 ('p}Qa|!7PpR', 'DRS!iJyvJG'),
 ('uv1fGXHN@)', 'L5qdsn2.Vt'),
 ('sRw-ik:I$v', 'u:[~?k7{9`'),
 ('bnEK#)[;qT', 'ct@4i2c5]R'),
 ('ey:Q|*t!Lg', 'Pki<F_#mJ$'),
 ('c^,~EC6Pb2', 'v&W7WvlFQH'),
 ('tMMtBUpb$&', 'JS/Mu$zWXF'),
 ('jKIDq|}J&c', 'd*RV!D6_/z'),
 ('dC:e5G4J/p', 'r6u%*kzI$i'),
 ('u;|vR#mVMW', 'L{DDezoz^'),
 ('gDsLPj(9S#', 'wao7Vn!%<:'),
 ('xb&P*pH(Q', 'B,.i%oyEc%'),
 ('Bszsaz0Iuo', 'k9gbGeqVQp'),
 ('JOT:U4ayh@', 'N;|zJ3r1U0'),
 ('G/^_##fcPN', 'x!47n<n_@M'),
 ('LPF4AfaHKR', 'ilFuAD^xhq'),
 ('rSneU!3}bn', 'KfB$YBpp#='),
 ('cv+Nq9:a<P', 'oPx5Bq1z_~'),
 ('f*2@qiHh_1', 'xs+r,A:Ybh'),
 ('nuU8A_$i2M', 'l:S1L#&(=-'),
 ('fT!w8R#>dg', 'vV<w5Z&41M'),
 ('gG6SWfM>H0', 'l?;mPU|Vu$'),
 ('sM0GPt1HS1', 'g&y>f[SfCo'),
 ('dlU7VG|3Gd', 'mC$X9cRfF4'),
 ('cEO^y)Md[G', 'CJHNGvTT1-'),
 ('eN#^kPGv*L', 'c.@-5vbYSr'),
 ('lp@e##m.!+', 'Bvr#2W*V4O'),
 ('epvt3>HH?U', 'HY(==0nL/5'),
 ('E3u*2.<9#`', 'x9m098F78O'),
 ('q1Q3Do8S>g', 'QGDo{u)NuE'),
 ('yX:tmrd5;]', 'j7FyQaW,n{'),
 ('H*c[ML+`s=', 'QwwgN[<duR'),
 ('e_;dzXj8de', 'gb>Q&:;ekF'),
 ('iB-8Br~onq', 'dNo9L*#}F?'),
 ('zSc]-^U=0=', 'f^0aH]F%!V'),
 ('x2d4n4ADcP', 'kfniDM68Fr'),
 ('Gn;q2Y)Xe4', 'HG:Vbwri`^'),
 ('gRVZ]qJ#>O', 'QplodT,RlZ'),
 ('J%,fuysl*&', 'b<9P_L#s6?'),
 ('r(h9&#wc~B', 'L}~TYYHI[l'),
 ('_]DH+g9!$', 'Jt*Ggc<HyU'),
 ('B:x<p&Q=t)', 'vhs6OnHZaA'),
 ('z:*d{z(~V2', 'H1L?;^]mY]'),
 ('d}R:qHj1,7', 'IG)L^LIKi]'),
 ('L5M1*yG7eH', 'jcw8^HL&m5'),
 ('s|K&2S,UP|', 'P}xBc:eoH6'),
 ('t$y1C2R-Av', 'yu2IoRS.M)'),
 ('eHJ?)TAdTo', 'k]|`O*|sYC'),
 ('pQpX%(EVOH', 'HnPq%JW}F9'),
 ('qiv/4tOlf=', 'BZ#71-])!<'),
 ('M$bc0[jYf0', 'hzN$`?YJ.^'),
 ('jYz[ibrr9m', 'H5FPagvP>_'),
 ('SlOEXfq#|', 'FIQ,YV4(u'),
 ('d5m8%D6,;u', 'FE||8n;*pO'),
 ('o9{x<AyA]B', 's~{9dxCHY+'),
 ('He!e=h?_2V', 'BLz2@~|QXB'),
 ('QSq%~rFaP-', 'Q&)&?}53&@'),
 ('ck!6;xK$/^', 'bP[|CaNP86'),
 ('n{{o2K1:dw', 'Ba#m$J?4gW'),
 ('xqrJ^d[.(O', 'Mie3UMRyst'),
 ('vrn%j%6{nu', 'n^,sUM_!k_'),
 ('p#R$-mG/L', 'xAxtN`17x^'),
 ('oV/JG7fwZq', 'B35In/Q=Tg'),
 ('bD?R}i8_[c', 'GRj)gtiMbo'),
 ('Lol+XIvY21', 'l&Uv?yLL12'),
 ('Qlib4)q2Hk', 'bMX+]D]Ya>'),
 ('pwwZu{7f~(', 'E9Y{~}fJ|q'),
 ('qFuGdDx^Yv', 'wx)T{wK99M'),
 ('Cf2@;p<aL', 'vk=UoW^`zU'),
 ('t2&ri|[Un:', 'Ek~&z$tb-I'),
 ('dbP/Cj}sB+', 'rVJ^|c*{=!'),
 ('wa>{k!2cXc', 'Pz{%n/nX,I'),
 ('5JJ2]i)p4', 'uE!R:a{FS{'),
 ('s>f40rn,O]', 'f4q6u$5n-L'),
 ('ssbyA9}]QP', 'dl_kl*?R;X'),
 ('vKx<0Qa!aP', 'P!2gMb,SH>'),
 ('fkq7lhLkdH', 'wr@MO]j=pc')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
Norwegian Bokmål
guid_mapping = \
[('e+/O]%*qfk', 'iR~,tG{Val'),
 ('h~5xz+=ke~', 'dYU=!{y0JI'),
 ('s9-GL*@AXD', 'o+)poCG*[u'),
 ('cPO|Cru8n<', 'rymWNfd[Q['),
 ('m*#%sE.`.;', 'PgW-Gd/F7?'),
 ('hNE9}>;Q&-', 'D_u6CIg+wo'),
 ('jN|NAUP*h}', 'emhqi6m<;X'),
 ('j|z@PMgdx,', 'K-DUUlt#`y'),
 ('n+t>2`:;P/', 'dSwjDNnc7['),
 ('ilGtw#=asM', 'fWbYL=>/W&'),
 ('mcc&0Kq^xE', 'L5j),}Ge5('),
 ('gz9${p}er*', 'l$1j[S4Z_w'),
 ('dY96`C-f(_', 'AY#z1NqLE<'),
 ('r>aI-$$|wT', 'po@@>#g44W'),
 ('k9E.p^<u$,', 'ru^aT_ML-F'),
 ('l$zM~ihPFE', 'eX=4L.MZ/)'),
 ('jTNoKo}Bu+', 'j4W[{Wd$i.'),
 ('mz[>>AxIr4', 'g3SU#SH>>e'),
 ('u4^lH.xem5', 'yLv#s7(0/U'),
 ('bk2ByZIeU+', 'n`P0w@?q1u'),
 ('twrhzJ[k:Z', 'fy^;okm_1k'),
 ('kS)hDm%w}R', 'EHD^CXLh4!'),
 ('AES],s:8=', 'd55<bwWcif'),
 ('k[)#L4.[v3', 'Fwsjx3/<>H'),
 ('k}A9]O:0xw', 'n{xEq+_:c{'),
 ('j7eEZkzsCZ', 'rQ)Q-EabYy'),
 ('s<_WLSB3I/', 'oLdeL6a~[X'),
 ('cYKvF#ptF7', 'b<&&OM3fYy'),
 ('m)WUtJS`H&', 'uo7@ZxIP[$'),
 ('l$2O|9w`F~', 'dmsIj2JJlB'),
 ('kZ52zV#[Iv', 'eYu}=wB+0H'),
 ('i2]v|D3@:j', 'u[#kd&*}Yc'),
 ('r5C646H*+*', 'QKm&4[Vr$t'),
 ('nIfRn<aY:N', 'l2LUY9/|t]'),
 ('5S(f7%O-$', 'Dh89q.%Zv<'),
 ('m?}%V6s8]*', 'C[hSE1x])}'),
 ('uRo^w#p5Be', 'j~OT/nTkAt'),
 ('o=,%hU&yX%', 'eX^dJ|[uA*'),
 ('lq`T^ZBF2Y', 't9&OjLNz]p'),
 ('f>c7x2E]Q6', 'dn}H9%A|!j'),
 ('q[S4`,F0D=', 'K/#FG8!}DG'),
 ('jCd]`-=k,:', 'zU[B!jrpgl'),
 ('vf)G?[_?Pf', 'wOOaycR~z&'),
 ('j9:K,~DQ2v', 'HbTQZU8t9?'),
 ('ui3>b-?a@m', 'M7m8p!;nP0'),
 ('qVi;t%/`F|', 'p%wZ4zSjCt'),
 ('g-]bb&[.E!', 'o|SPdBlcOk'),
 ('f21=-A~W;~', 'neb-=f&6r^'),
 ('sT5=H|@KU|', 'pnd}~gw/:?'),
 ('lU@C3<C8Wk', 'bMw[aotLc)'),
 ('jDA-V?/hVj', 'wPY8.I+[Xh'),
 ('h_9=mkZXAH', 'cJ%(LRs3)q'),
 ('mk1VltJl<]', 'MnfK7af3~4'),
 ('c(,2{yXI#E', '>1ErI|!*U'),
 ('kkbYQXw5b;', 'w`{+uGys`~'),
 ('ia8as9sCY|', 'vxq=QA:/`z'),
 ('j%*8gN)q>d', 'N(,;S#&N9e'),
 ('bd~Ght5tLR', 'DO-=AqS[Lk'),
 ('onMKID2d;D', 'L1&JVH|{R,'),
 ('q8fF$4,c6_', 'b#r[:tRj+!'),
 ('upiX0g1quR', 'G4K|pWoffU'),
 ('n:7&>YT5A=', 'A|BG)32=10'),
 ('j2IQ=f=w3@', 'C18`2)zTm('),
 ('EWXNc<g5)', 'k[{=KKFtb8'),
 ('gFOojQO(MH', 'E8sr_C_vb['),
 ('gePC:Xt_nW', 'x4(t9J8nNQ'),
 ('vNiD6A.v#s', 'p~,(pas|?P'),
 ('?n!)c/h=Q', 'e7w}$Wx7yb'),
 ('gYIoR`|AxW', 'bK<b=p-Thp'),
 ('j<egqG@)EL', 'G{5yk85S92'),
 ('t`cagaWApo', 'w9bE`pR=z#'),
 ('jN^Vc%9OQ5', 'or<mz7dcH6'),
 ('o3VS!KWb/@', 'yRZn!>(_#b'),
 ('iR;U<J:CJJ', 'k+4CLKx35g'),
 ('i^J8&$(1]|', 'q%;R^5+|lP'),
 ('pS>DrFhd%u', 'Q]0R7JuJ6g'),
 ('t|h3|;E4g{', 'NSVN;H$s)m'),
 ('p.yv>BQ470', 'P*4KZ6]?rf'),
 ('f#4-L[mp5*', 'M}OReg^Eem'),
 ('oNpApS<AoJ', 'pRN@`OrOhv'),
 ('nsS59c`VL,', 'cIOEmhU5Nt'),
 ('m{noqE29%I', 'oK)C745Je~'),
 ('sSW/?WMy17', 'B5/<2!_D3h'),
 ('d-q4J~CNW_', 'n,VX3H7IE:'),
 ('jKO,9y0M;#', 'P>,2#H.@>i'),
 ('skOM(?n$GG', 'ELkg0G|C?W'),
 ('mi+kf0LTW.', 'b[oi-M:re$'),
 ('vgdj#X?8dB', 'qD4Ir3_WvI'),
 ('mkgcU7[bA%', 'AoE=M5R+:x'),
 ('jcu!gLw/&r', 'vlABC@3)lD'),
 ('sB7rZQsR<l', 'lalXr{5>N~'),
 ('u|I}oElaH)', 'i$+!}pvHZ('),
 ('j)i)pB*HJ,', 'l[H_#9Xj.5'),
 ('t-0>F]bu>P', 'x1I5QDSZdm'),
 ('hrI_uiW>E]', 'p]3f+<QuK['),
 ('uc61ToT%gt', 'z,yR__YX6x'),
 ('e.t$Vi5,>f', 'i3+,TcHF,N'),
 ('k/u1:B%DJH', 'G$NEO(W.(v'),
 ('e5P*D#I{m{', 'ml7O4E=o<>'),
 ('p:SPZ:e/*[', 'dryK>>pO;}'),
 ('t+v9b--,qs', 's^sd#Qsi,{'),
 ('fV`&p81%d(', 'h<BBS_PmX6'),
 ('gsS{jR,]|Q', 'p-Q-4>W#GK'),
 ('cAlyc~G.y%', 'kQssZ~b%|u'),
 ('fxAN),FAc$', 'vwR_K?gn6&'),
 ('r<N4LAAnnB', 'yV;KtlAuQ?'),
 ('e?Xq9gy=@[', 'J$+%7z?.y*'),
 ('m5j,b/y<EE', 'm=n=4WFqE3'),
 ('stRa/S(0$F', 'fFI@z-#q(E'),
 ('l+>Ki!j#v+', 'fLs!R5^k7e'),
 ('kQ:NIhJy~E', 'I%N^RyEm:/'),
 ('sY>@9w~i^p', 'ILj+.~~7_X'),
 ('mJH4kwPF.-', 'ci5EzZT?lp'),
 ('bW)ch:vs1P', 'tt:.S?c/]j'),
 ('sx|l+io`B@', 'L&YSIviD+L'),
 ('q2#Yv[O0:|', 'Kx5=:O[u*^'),
 ('lpbD0St&OU', 'f[U(U6e5OW'),
 ('mbz=7n[0v9', 'I[^T<Hq,U}'),
 ('ijP>aJBT!9', 'dV#R#|}uZH'),
 ('jI9P-f6r3M', 'B,]AC/PAz1'),
 ('h?a*UKfT_M', 'BqW}>:ZSdW'),
 ('r6BV%|..*5', 'J4zOBxF6Lw'),
 ('i)]+09JUR&', 'oM$V=]IFjW'),
 ('l}[BG9.nQS', 'bw=b(wfRVC'),
 ('mtd;>7T|g>', 'ya?+!BD<rP'),
 ('iW>m(L/~c=', 'jKTnJ!T6lc'),
 ('pkj3RPBUrF', 'Cw^_3<[mGM'),
 ('euW0jm=wfR', 'H9A(m7f1)9'),
 ('l*j*EE:!Y?', 'n%Pw}}<GAT'),
 ('d3c`&/1Y^D', 'Rb7MD6j!0|'),
 ('hXNTVF<:SH', 'fxvMT{|_3M'),
 ('mk20`,N=`=', 'Re+G*@uJCl'),
 ('eALZe^HCHq', 'vy^=B$6h^Y'),
 ('l3Ly8PBxt(', 'm<$SD/W~so'),
 ('g<[f89~U)A', 'Q7W^uZrI_<'),
 ('iIS#Nw]tr]', 'l.HYqQ_/Rf'),
 ('m{oM,jr>C#', 'zJ%%Hz#s9&'),
 ('ln^3p)j3b.', 'MWm=94b?vO'),
 ('cL?8!xP#Wj', 'm>7j+&89xI'),
 ('e=.VHQ9E+M', 'Ng%@)K)[c{'),
 ('m[96fa+HDS', 'dctSh&<iaU'),
 ('g9v~y/;=z(', 'iYAK36Cua{'),
 ('g~%pF`(x{u', 'PQ6$bI??y6'),
 ('hE5j*e,Q?[', 'Bq5H0+i]XW'),
 ('fRSM{K+;[w', 'z7wQ8s_Si['),
 ('o~}KVA:VbI', 'qqJpIWfqFB'),
 ('u-`cspdp)D', 'Ce096-Qwie'),
 ('e42BpV,P}C', 'D+L%7xa1|K'),
 ('pD<Pd$Ag@J', 'Dn/EH3[r{9'),
 ('mbGXc0y3Pe', 'g?)zvSS|6#'),
 ('gB|K:+r?1V', 'mh=!E~}0-Q'),
 ('lhWI;$JC9(', 'BGwA6-2[o8'),
 ('k0{O[6l]bH', 'xL^i{$Dd?}'),
 ('r>g<|,FWi%', 'O86#Kfnj]4'),
 ('n&>e`2FO/S', 'svzWf$x!8;'),
 ('khB~(m^@Z5', 'M,j]%f~qLY'),
 ('spKoFRM4if', 'QyNb5MKVnQ'),
 ('q8][)Ri}=q', 'hqnhi=ysa:'),
 ('hoHandbYAy', 'B4sHDjU:Pl'),
 ('lmRujD!(A7', 'GDX20ZK?Xx'),
 ('q:XyGf#>Wg', 'do3`,9Ol!H'),
 ('s#:aIK$9^x', 'Gs*[8}bP33'),
 ('jBd@A?>g|}', 'cnUAu<NuSS'),
 ('koI(}OyJ:@', 'zH)c,C{V#j'),
 ('e?gIaPc$Ox', 'yC]*G[N>gv'),
 ('o#&RMA_REo', 'u!WO.fcw8<'),
 ('s4E?ZF[E<>', 'b|Gr(/*-kx'),
 ('k1]FH+s8j@', 'k4o56u=}jw'),
 ('dWA49p}F{k', 'sk!p1OhX-1'),
 ('K*b}<I3(~', 'ipKjLUOh4Q'),
 ('e?h=Xhs+K&', 'P}MIWKA{Xz'),
 ('b@M[XTc?}5', 'k,Tmj~Pw.i'),
 ('sxOMs+bE8@', 'cep8BP*Eja'),
 ('t3aZXtpNyi', 'C00t,nt-~8'),
 ('rPekx@n9:L', 'ueNqs:h=(z'),
 ('lAxH.CfJB@', 'DNXY<9~9OH'),
 ('hZ/V/D&rO`', 'l!=SCi?>l?'),
 ('h&`>n98~V1', 'G5wA};7d`m'),
 ('t50y/[AEhF', 'la.c2n+A7e'),
 ('gBCR?!O*;E', 'sZ</&q1)tK'),
 ('tTnCoO/*tk', 'd.lZ`^MKjl'),
 ('W5?6yQZD2', 'u#*HO9?|?]'),
 ('e{e8vi@^PY', 'c^iV73&0V('),
 ('tcneuK7v%`', 'gBJKTCx_/6'),
 ('uH*Q(mcRt5', 'w0Je-<6ym_'),
 ('k$1_yaF?9#', 'o[GR>HoXjp'),
 ('dUZ^=SE5BG', 'NGD}XK^mX}'),
 ('t_h*fbN#:(', 'y[:PO%mkg('),
 ('q=w[<m2Bk&', 'z?M@Me}UrK'),
 ('vpOTK6tMr@', 'y8o-zQb(8j'),
 ('m2F|cUkKhv', 'B{LJC|+^D.'),
 ('k}4/oj#$~s', 'efA[V?^$DO'),
 ('va/ky=f5pK', 'CTw3Yd}Sx4'),
 ('c,5(mUGzYT', 'G#LLy[.iS2'),
 ('gp[h@]y13l', 'Cko(o5/eN6'),
 ('gx:;za!?C9', 'K>Dfm{ad5K'),
 ('r]*Ioa%$bK', 't@-V_iMKbK'),
 (')Y}Qy.3GK', 'G8%+Eg:Na<'),
 ('lH^2D]w;[H', 'qpx1j<_-l5'),
 ('qx%>fB$d+$', 'z|A6R3H)3B'),
 ('libliptkB4', 'J,3]AhU%0c'),
 ('jrM28*HbyG', 'jWy+dd+,ta'),
 ('r?E$4f-d0/', 'c}m%T+N!Gz'),
 ('leh^fmrt*#', 'xzc~#RzbI@'),
 ('O~pXkAbd3', 'FCE{oF+@St'),
 ('f*LO~>!0PN', 'I{.D^{85=#'),
 ('q[}7hk(+=e', 'uu)_`Q0++C'),
 ('q7do-wLx%E', 'c$J,,={OZd'),
 ('vwc3}.=Z#&', 'qhlz<GNM_8'),
 ('e<X;[vACXC', 'emq?3*tP9W'),
 ('j=L,YBvsBk', 'f2L&U-(v+/'),
 ('oa87&PB&Bm', 'Gc>|URJcg|'),
 ('b^Try&me1A', 'Dd.ED,HOi&'),
 ('o``:?0>/yz', 'J3)Ty17a?Q'),
 ('pz(G*<F93/', 'xWD+oGZ~vY'),
 ('cV4idO^r8W', 'G+c6-zDX5@'),
 ('m*PYE=#wr^', 'g;I=8p!(]b'),
 ('sXzvT.g31p', 'b_#ie@t!%Q'),
 ('mq)8`hi{hb', 'AGUPi8s%aF'),
 ('h}lnSN_f$_', 'CwGQYVm2&`'),
 ('eT<gzg?q,r', 'Hh[ZfFwkH,'),
 ('vE[T$`n9T)', 'PFcyiTRKq='),
 ('tj&bK}%P!F', 'Ql.8m|u}H!'),
 ('kX]hN=_.c-', 'k}E2,sF7^}'),
 ('r/B|ra%L,.', 'FGrbm!9:Cd'),
 ('b[(2`4t&?J', 'FMj}H;knqq'),
 ('qvITjNxkLN', 'd9@W=6sKJ-'),
 ('jX=#G8wu#(', 'F)s+:]$(EA'),
 ('l&#7I)Ah/E', 'zv#Fyq9;?1'),
 ('de=9c:,@j9', 'AJ/nnIR/[0'),
 ('kE!iKHLN_g', 'rB6=j&@4e&'),
 ('d``B*6:eCx', 'uL7#}Qw}D9'),
 ('p]t8:Tka7q', 'OawZ7gbEjw'),
 ('niJUFZF$Y:', 'D=!L6rg_pr'),
 ('p}Qa|!7PpR', 'qOB6Gi<G='),
 ('uv1fGXHN@)', 'l(DiRV,GPj'),
 ('sRw-ik:I$v', 'NH:[}beT-z'),
 ('bnEK#)[;qT', 'r8MKfCfg2E'),
 ('ey:Q|*t!Lg', 'b2PYE2BvAR'),
 ('c^,~EC6Pb2', 'nJdfBSsZq='),
 ('tMMtBUpb$&', 'ox5y>?yriv'),
 ('jKIDq|}J&c', 'P%!7{$,zCG'),
 ('dC:e5G4J/p', 't;/rK0Elxw'),
 ('u;|vR#mVMW', 's9/>8RT~Sr'),
 ('gDsLPj(9S#', 'raobJ?,rJ['),
 ('xb&P*pH(Q', 'OB:w%H&-Al'),
 ('Bszsaz0Iuo', 'IozRi;br@?'),
 ('JOT:U4ayh@', 'BidEZ1j?sA'),
 ('G/^_##fcPN', 'Q0Hf<s|zmU'),
 ('LPF4AfaHKR', 'eyVn,2@529'),
 ('rSneU!3}bn', 's>VRzs_ra_'),
 ('cv+Nq9:a<P', 'nK_Xe;yw*A'),
 ('f*2@qiHh_1', 'Fe.owPPLXj'),
 ('nuU8A_$i2M', 'v#9&oC&^gU'),
 ('fT!w8R#>dg', 'zv;#VKpiyA'),
 ('gG6SWfM>H0', 'msi&z%jb~L'),
 ('sM0GPt1HS1', 'wt&@Z9Ke*y'),
 ('dlU7VG|3Gd', 'i?3Cq]Y=6@'),
 ('cEO^y)Md[G', 'IHD#^9>(oF'),
 ('eN#^kPGv*L', 'Bc^_k/M|{V'),
 ('lp@e##m.!+', 'ePFlYQsRPh'),
 ('epvt3>HH?U', 'lQbPlI/gwj'),
 ('E3u*2.<9#`', 'c*=o}p_W/X'),
 ('q1Q3Do8S>g', 'b~m$wS)FZZ'),
 ('yX:tmrd5;]', 'x)A]S|GN_G'),
 ('H*c[ML+`s=', 'Aal{|%850}'),
 ('e_;dzXj8de', 'uge7s($h<X'),
 ('iB-8Br~onq', 'H)ax6=5vNG'),
 ('zSc]-^U=0=', 'td+]W)8y3S'),
 ('x2d4n4ADcP', 'B)~SL?|&BX'),
 ('Gn;q2Y)Xe4', 'qoQ,f:/adY'),
 ('gRVZ]qJ#>O', 'GkU[4wRj6;'),
 ('J%,fuysl*&', 'JffL}$<;]['),
 ('r(h9&#wc~B', 'nnM01DlaVX'),
 ('_]DH+g9!$', 'jH=<{Pcl+D'),
 ('B:x<p&Q=t)', 'J|aJY+vge3'),
 ('z:*d{z(~V2', 'vJUDdBqkkp'),
 ('d}R:qHj1,7', 'v/?czq&41s'),
 ('L5M1*yG7eH', 'F/|qA9Xb`f'),
 ('s|K&2S,UP|', 'f)MSa#ZHdL'),
 ('t$y1C2R-Av', 'r%;LR/o1J0'),
 ('eHJ?)TAdTo', 'w[pneW3d#g'),
 ('pQpX%(EVOH', 'lzpJ#A4I81'),
 ('qiv/4tOlf=', 'pAb@53Gk?Y'),
 ('M$bc0[jYf0', 'ufv>~I-Znw'),
 ('jYz[ibrr9m', 'u1C2Jtm-p^'),
 ('SlOEXfq#|', 'F[7BR94HX^'),
 ('d5m8%D6,;u', 'c.$2jl~n2_'),
 ('o9{x<AyA]B', 'NbC3xEVGZ}'),
 ('He!e=h?_2V', 'Iu#Jjq4.-;'),
 ('QSq%~rFaP-', 'yLhZzEnGK&'),
 ('ck!6;xK$/^', 'E2:8?ZCW`='),
 ('n{{o2K1:dw', 'zBa]c`I@&q'),
 ('xqrJ^d[.(O', 'cE|I9C6tDG'),
 ('vrn%j%6{nu', 't1~2K{sjcs'),
 ('p#R$-mG/L', 'C+sW!v-+p]'),
 ('oV/JG7fwZq', 'x-wPy%*F%3'),
 ('bD?R}i8_[c', 'J[Z3=;n.`R'),
 ('Lol+XIvY21', 'OGgh6NLJ_1'),
 ('Qlib4)q2Hk', 'Cay~/DU6[Y'),
 ('pwwZu{7f~(', 'q>RaVbPB3|'),
 ('qFuGdDx^Yv', 'A.lC&CUT?S'),
 ('Cf2@;p<aL', 'Q)zp&X@y?g'),
 ('t2&ri|[Un:', 'Hg&j8uJWA$'),
 ('dbP/Cj}sB+', 'vqay>V@}^.'),
 ('wa>{k!2cXc', 'kP@udSHU#/'),
 ('5JJ2]i)p4', 'E([1*B$wFU'),
 ('s>f40rn,O]', 'HtFq_[S@sg'),
 ('ssbyA9}]QP', 'e&L!j2[3Fp'),
 ('vKx<0Qa!aP', 'E*M$FU#Mf5'),
 ('fkq7lhLkdH', 'GOD93nYZ33')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
Dutch
guid_mapping = \
[('e+/O]%*qfk', 'K`AixN?4fO'),
 ('h~5xz+=ke~', 'yM2(NER.TK'),
 ('s9-GL*@AXD', 'Ca99PA=59O'),
 ('cPO|Cru8n<', 'oTXQ,6j^=,'),
 ('m*#%sE.`.;', 'z&9OM<varw'),
 ('hNE9}>;Q&-', 'plhRl:Tz/O'),
 ('jN|NAUP*h}', 'F5Vc$<OC20'),
 ('j|z@PMgdx,', 'HM%kKM-7l.'),
 ('n+t>2`:;P/', 'O8/WkWCPZP'),
 ('ilGtw#=asM', 'e(k0BGyL4h'),
 ('mcc&0Kq^xE', 'z+,{cjN9md'),
 ('gz9${p}er*', 'Hp1dL9r:*P'),
 ('dY96`C-f(_', 'CY;OB`EDX7'),
 ('r>aI-$$|wT', 'p((H!2~3O7'),
 ('k9E.p^<u$,', 'oW=/gF6ZOL'),
 ('l$zM~ihPFE', 'Cx2EH*D>}Z'),
 ('jTNoKo}Bu+', 'LW*h#/!%&m'),
 ('mz[>>AxIr4', 'cU)|/vPi6j'),
 ('u4^lH.xem5', 'M5*2c!ENJ`'),
 ('bk2ByZIeU+', 'ed!}~imM[!'),
 ('twrhzJ[k:Z', 'pV`:gi7=r2'),
 ('kS)hDm%w}R', 'd!lJ)zdUTJ'),
 ('AES],s:8=', 'gGm>+9`k&'),
 ('k[)#L4.[v3', 'dG[-P1]Ly-'),
 ('k}A9]O:0xw', 'rd_(OgnX-P'),
 ('j7eEZkzsCZ', 'trUg0y&dqG'),
 ('s<_WLSB3I/', 'p/C10M3xxF'),
 ('cYKvF#ptF7', 'COfUkybfx]'),
 ('m)WUtJS`H&', 'lQZ,yi}j,|'),
 ('l$2O|9w`F~', 'c7Zh2xn$t_'),
 ('kZ52zV#[Iv', 'e=OVM]`Q{U'),
 ('i2]v|D3@:j', 'byp9L/7/,y'),
 ('r5C646H*+*', 'HL//^#,,5X'),
 ('nIfRn<aY:N', 'pfZC2}Oawc'),
 ('5S(f7%O-$', 's!x^ui`nhG'),
 ('m?}%V6s8]*', 'kYE~9)8V#3'),
 ('uRo^w#p5Be', 'p#WecI-Q`c'),
 ('o=,%hU&yX%', 'ca6|9M[|.3'),
 ('lq`T^ZBF2Y', 'K0`3{Z#>H&'),
 ('f>c7x2E]Q6', 'QYr^22xCo3'),
 ('q[S4`,F0D=', 'MjYBzKMsYj'),
 ('jCd]`-=k,:', 'iOD+[;vOc1'),
 ('vf)G?[_?Pf', 'i`?s5yONk<'),
 ('j9:K,~DQ2v', 'NIKs(pApAY'),
 ('ui3>b-?a@m', 'OQK^$9xbg,'),
 ('qVi;t%/`F|', 'u>]sc0f?(|'),
 ('g-]bb&[.E!', 'fQMbKoTu%<'),
 ('f21=-A~W;~', 'P+Jx`aqYih'),
 ('sT5=H|@KU|', 'b.r+%C+uUG'),
 ('lU@C3<C8Wk', 'KRSC>TBXX('),
 ('jDA-V?/hVj', 'Bo5dwc%z#M'),
 ('h_9=mkZXAH', 'C_6GTKD=fH'),
 ('mk1VltJl<]', 'msv?k9JTsv'),
 ('c(,2{yXI#E', 's3s^.)4kHT'),
 ('kkbYQXw5b;', 'e90l[|lH!I'),
 ('ia8as9sCY|', 'K[L!R^!9Z,'),
 ('j%*8gN)q>d', 'sM=)Xv_Xa-'),
 ('bd~Ght5tLR', 'v&-O]]=OEZ'),
 ('onMKID2d;D', 'sGn#POf<9-'),
 ('q8fF$4,c6_', 'Pc50gy=WZl'),
 ('upiX0g1quR', 'Mmj=@>?Sx{'),
 ('n:7&>YT5A=', 'q-&Hq~16&{'),
 ('j2IQ=f=w3@', 'e8|;;S>xQ.'),
 ('EWXNc<g5)', 'A+}@K7X|kA'),
 ('gFOojQO(MH', 'zumu&z#g.>'),
 ('gePC:Xt_nW', 'sp;kVFWNG~'),
 ('vNiD6A.v#s', 'Bapr]RwJ#?'),
 ('?n!)c/h=Q', 'IuT|OM*Nw~'),
 ('gYIoR`|AxW', 'q>9E7+;4K.'),
 ('j<egqG@)EL', 'BP[&G+`3;|'),
 ('t`cagaWApo', 'EjFv^:qmnZ'),
 ('jN^Vc%9OQ5', 'f($keyMpus'),
 ('o3VS!KWb/@', 'xLWoq0vCna'),
 ('iR;U<J:CJJ', 'i%DV(Dbx=K'),
 ('i^J8&$(1]|', 'Neqxx;S4OH'),
 ('pS>DrFhd%u', 'GmH*JA[[k`'),
 ('t|h3|;E4g{', 's5?gh*QP;:'),
 ('p.yv>BQ470', 'eCQL}h5w8Y'),
 ('f#4-L[mp5*', 'i$q|D&dUr3'),
 ('oNpApS<AoJ', 'tZgE~cq(oF'),
 ('nsS59c`VL,', 'qL:(ZnK[{b'),
 ('m{noqE29%I', 'mB&*r_Fpq%'),
 ('sSW/?WMy17', 'q4wi1(V&xq'),
 ('d-q4J~CNW_', 'P=:bxc_JC&'),
 ('jKO,9y0M;#', 'tUW+`.SQo9'),
 ('skOM(?n$GG', 'AX<o!y5NLm'),
 ('mi+kf0LTW.', 'p$AAnTq6oJ'),
 ('vgdj#X?8dB', 'o0AQQ^2)G6'),
 ('mkgcU7[bA%', 't>J`KZclA6'),
 ('jcu!gLw/&r', 'ds<d0w<UR-'),
 ('sB7rZQsR<l', 'c1(m|]%(&c'),
 ('u|I}oElaH)', 'N-%-M=n!dh'),
 ('j)i)pB*HJ,', 'n8ieJA{+lP'),
 ('t-0>F]bu>P', 'F&@Rc;dl]z'),
 ('hrI_uiW>E]', 'Q+z>Go{V83'),
 ('uc61ToT%gt', 'J[n$C~*-<~'),
 ('e.t$Vi5,>f', '.9`Zb?|4]'),
 ('k/u1:B%DJH', 'sFwd3<b,Q*'),
 ('e5P*D#I{m{', 'j!9GChs@cQ'),
 ('p:SPZ:e/*[', 'B{FDr5`ABh'),
 ('t+v9b--,qs', 'cXB4#4>X;-'),
 ('fV`&p81%d(', 'b&EqNhY[/p'),
 ('gsS{jR,]|Q', 'G;pW`r5kYU'),
 ('cAlyc~G.y%', 'QcXm!E@Yw1'),
 ('fxAN),FAc$', 'Ef]sAhH-1='),
 ('r<N4LAAnnB', 'E;nd7c[w(:'),
 ('e?Xq9gy=@[', 'd.;lCBC_WK'),
 ('m5j,b/y<EE', 'Kg*_Uu;=~F'),
 ('stRa/S(0$F', 'D/^OcViV>B'),
 ('l+>Ki!j#v+', 'dm/G5**HY~'),
 ('kQ:NIhJy~E', 'j/kD7I4;Hg'),
 ('sY>@9w~i^p', 'E/MT}kv2tI'),
 ('mJH4kwPF.-', 'q37^cz*P9W'),
 ('bW)ch:vs1P', 'ioJ7(frmya'),
 ('sx|l+io`B@', 'd8zQ]l>xmo'),
 ('q2#Yv[O0:|', 'eswlz&5_-]'),
 ('lpbD0St&OU', 'L&Wh0Oh!9*'),
 ('mbz=7n[0v9', 'M75UjrE!_q'),
 ('ijP>aJBT!9', 'vNlrE-EWLf'),
 ('jI9P-f6r3M', 'c(O@!xlX|c'),
 ('h?a*UKfT_M', 'rIn3klxCO3'),
 ('r6BV%|..*5', 'hs$=I;b%H{'),
 ('i)]+09JUR&', 'rBXL[4*?g5'),
 ('l}[BG9.nQS', 'm$4os@Y#(Y'),
 ('mtd;>7T|g>', 'l::->dQxMA'),
 ('iW>m(L/~c=', 'l57t^$S&*u'),
 ('pkj3RPBUrF', 'Oy&*?<z%kE'),
 ('euW0jm=wfR', 'g:S=I8r:O>'),
 ('l*j*EE:!Y?', 's$RMwIQGZb'),
 ('d3c`&/1Y^D', 'Q+8JVQabLR'),
 ('hXNTVF<:SH', 'QL%7i$x/c,'),
 ('mk20`,N=`=', 'Evr|0ju(D2'),
 ('eALZe^HCHq', 'F@t-f&]i?`'),
 ('l3Ly8PBxt(', 'rqH=>+|p}D'),
 ('g<[f89~U)A', 'E-hC9K}m$~'),
 ('iIS#Nw]tr]', 'epu:F7KRn!'),
 ('m{oM,jr>C#', 'N<D}v:QnwJ'),
 ('ln^3p)j3b.', 'jmR])+zhJo'),
 ('cL?8!xP#Wj', 'qS%*AW?D,f'),
 ('e=.VHQ9E+M', 'QPl3$nhmkb'),
 ('m[96fa+HDS', 'zE7(j<-d3N'),
 ('g9v~y/;=z(', 'p?N:RJ`9Qb'),
 ('g~%pF`(x{u', 'm@%Rs{o2LO'),
 ('hE5j*e,Q?[', 'O|]ivh~%v{'),
 ('fRSM{K+;[w', 'bq]dHo&Tn~'),
 ('o~}KVA:VbI', 'J)9J,MA_jm'),
 ('u-`cspdp)D', 'Iva{=NlZof'),
 ('e42BpV,P}C', 'MXc[U*Dc|y'),
 ('pD<Pd$Ag@J', 'xCFE#ual.E'),
 ('mbGXc0y3Pe', 'O.[B3&pjNc'),
 ('gB|K:+r?1V', 'w_*e?Ms1]_'),
 ('lhWI;$JC9(', 'kQ8x(01<}'),
 ('k0{O[6l]bH', 'Owoj&4yEcQ'),
 ('r>g<|,FWi%', 'A7d`$VleNv'),
 ('n&>e`2FO/S', 'sUW(K@)rpu'),
 ('khB~(m^@Z5', 'K1#2~5/6~Z'),
 ('spKoFRM4if', 'L#b;#eu1UR'),
 ('q8][)Ri}=q', 'BHe5zlq%zC'),
 ('hoHandbYAy', 'Ca[)+1M+q?'),
 ('lmRujD!(A7', 'CTD4|lJ}]5'),
 ('q:XyGf#>Wg', 'oA1,v5>^){'),
 ('s#:aIK$9^x', 'A$m)oTJ1BW'),
 ('jBd@A?>g|}', 'jxR[;SimkU'),
 ('koI(}OyJ:@', 'lR`ZpmCTOP'),
 ('e?gIaPc$Ox', 'p/fH$J091^'),
 ('o#&RMA_REo', 'OwHb{Mz|$h'),
 ('s4E?ZF[E<>', 'h<Q}<=6jye'),
 ('k1]FH+s8j@', 'r@_hV$i3&g'),
 ('dWA49p}F{k', 'vRx60WZhA6'),
 ('K*b}<I3(~', 'Q_m!=Xe)uk'),
 ('e?h=Xhs+K&', 'vp8J2mcIv`'),
 ('b@M[XTc?}5', 'K[7:%jDicU'),
 ('sxOMs+bE8@', 'qj/S4:J~Wh'),
 ('t3aZXtpNyi', 'c+d=6X;DR:'),
 ('rPekx@n9:L', 'xm[hZ@]0D2'),
 ('lAxH.CfJB@', 'cl`b5<!_&X'),
 ('hZ/V/D&rO`', 'z@fLLI>[@B'),
 ('h&`>n98~V1', 'Ob.MR2u/-&'),
 ('t50y/[AEhF', 'oO/>jPN^a5'),
 ('gBCR?!O*;E', 'JM7]2EJ[qX'),
 ('tTnCoO/*tk', 'jpDvwSb-OL'),
 ('W5?6yQZD2', 'J%7U=$j(Cr'),
 ('e{e8vi@^PY', 'q;6Wv3u)tx'),
 ('tcneuK7v%`', 'D@,Q^H)}Ln'),
 ('uH*Q(mcRt5', 'ebcMj4pw`P'),
 ('k$1_yaF?9#', 'lWXANkm_ks'),
 ('dUZ^=SE5BG', 'f.SoIgVf$q'),
 ('t_h*fbN#:(', 'sHKG^]G1Hi'),
 ('q=w[<m2Bk&', 'xPbky$#R*1'),
 ('vpOTK6tMr@', 'gw%[JT~eOZ'),
 ('m2F|cUkKhv', 'o@zxjV_qcp'),
 ('k}4/oj#$~s', 'K~OD+`QJa('),
 ('va/ky=f5pK', 'nm*l%S8r+{'),
 ('c,5(mUGzYT', 'o^IIsTJR4['),
 ('gp[h@]y13l', 'uc9G:E._YR'),
 ('gx:;za!?C9', '/zj4yGq-~'),
 ('r]*Ioa%$bK', 'zlk#[1bx]e'),
 (')Y}Qy.3GK', 'tBCiVBcuG_'),
 ('lH^2D]w;[H', 'lI<3M8p[+)'),
 ('qx%>fB$d+$', 'n58X<QI]0p'),
 ('libliptkB4', 'rs3Uv}D,)h'),
 ('jrM28*HbyG', 'jcwmr?mk}z'),
 ('r?E$4f-d0/', 'Abp+=0%|oz'),
 ('leh^fmrt*#', 'B2:MgtMw1@'),
 ('O~pXkAbd3', 'llB|P7o^Tq'),
 ('f*LO~>!0PN', 'K7t:ah)Nlf'),
 ('q[}7hk(+=e', 'n1HR1,WDIm'),
 ('q7do-wLx%E', 'cx%FD8~SUL'),
 ('vwc3}.=Z#&', 'M=3y(}U;7v'),
 ('e<X;[vACXC', 'rMX~]}XH:Z'),
 ('j=L,YBvsBk', 'tTWNp2kfJh'),
 ('oa87&PB&Bm', 'bPqp-AGH3Y'),
 ('b^Try&me1A', 'iEf6;Pr<M!'),
 ('o``:?0>/yz', 'AfMgn:9E6@'),
 ('pz(G*<F93/', 'y;=#m2VTao'),
 ('cV4idO^r8W', 'LB())=5`]S'),
 ('m*PYE=#wr^', 'J0UNSJ4UR.'),
 ('sXzvT.g31p', 'Nvp;D=X.u{'),
 ('mq)8`hi{hb', 'p{:,t++CFI'),
 ('h}lnSN_f$_', 'CpG.*qzHU5'),
 ('eT<gzg?q,r', 'fO#rmj#,Uh'),
 ('vE[T$`n9T)', 'r=<RFKhs~w'),
 ('tj&bK}%P!F', 'bit-NvK^B3'),
 ('kX]hN=_.c-', 'I>,%[aL/r)'),
 ('r/B|ra%L,.', 'q,5sUDZJ@|'),
 ('b[(2`4t&?J', 'fN1A,qu<xJ'),
 ('qvITjNxkLN', 'A16VT}*wpu'),
 ('jX=#G8wu#(', 'Ip12e4sGC?'),
 ('l&#7I)Ah/E', 'mxqXkoW;I]'),
 ('de=9c:,@j9', 'BND}O4g5Z('),
 ('kE!iKHLN_g', 'p~cba36}ll'),
 ('d``B*6:eCx', 'kZ;onU6NiN'),
 ('p]t8:Tka7q', 'oI5~{W$B0+'),
 ('niJUFZF$Y:', 'G.,g9N->(r'),
 ('p}Qa|!7PpR', 'fITQ3o(eNJ'),
 ('uv1fGXHN@)', 'vu]t,+fglW'),
 ('sRw-ik:I$v', 'MZ+&Gti2z$'),
 ('bnEK#)[;qT', 'Cr+mEZlgA:'),
 ('ey:Q|*t!Lg', 'AYOdHe0+qw'),
 ('c^,~EC6Pb2', 'J^vx<Yy&b%'),
 ('tMMtBUpb$&', 'Qm?>e]Q]ag'),
 ('jKIDq|}J&c', 'CH0T!),h9{'),
 ('dC:e5G4J/p', 'r+ehJ?q]D.'),
 ('u;|vR#mVMW', 'F[Xrq2xy>E'),
 ('gDsLPj(9S#', 'A1z!_C=d(c'),
 ('xb&P*pH(Q', 'HedPV<oAW~'),
 ('Bszsaz0Iuo', 'FlmNG3Av;e'),
 ('JOT:U4ayh@', 'zy#+XVV9S`'),
 ('G/^_##fcPN', 'DjNpq@BAMv'),
 ('LPF4AfaHKR', 'jVChM/v;]D'),
 ('rSneU!3}bn', 'u@^{[]68&M'),
 ('cv+Nq9:a<P', 'q,Yx(B^2)]'),
 ('f*2@qiHh_1', 'o2AxTxOe+;'),
 ('nuU8A_$i2M', 'e1k,rPrJXi'),
 ('fT!w8R#>dg', 'fezBXMIU#+'),
 ('gG6SWfM>H0', 'ygzZMO52<5'),
 ('sM0GPt1HS1', 'RiU6/6cNcj'),
 ('dlU7VG|3Gd', 'EV{1>IbA3.'),
 ('cEO^y)Md[G', 'Ok!(($u.|p'),
 ('eN#^kPGv*L', 'suwt).}j(N'),
 ('lp@e##m.!+', 'LoxeR.`jw@'),
 ('epvt3>HH?U', 'p}2F6mZ.QA'),
 ('E3u*2.<9#`', 'bEhl$M2clS'),
 ('q1Q3Do8S>g', 'mUci[@*L<c'),
 ('yX:tmrd5;]', 'CQTeWe?;Y/'),
 ('H*c[ML+`s=', 'Ih-lfoAUWi'),
 ('e_;dzXj8de', 'txn5MPFzv#'),
 ('iB-8Br~onq', '*/b5m[q8j'),
 ('zSc]-^U=0=', 'eY!@E#<EI8'),
 ('x2d4n4ADcP', 'cH2i]a9RGb'),
 ('Gn;q2Y)Xe4', 'McX+ixO5W@'),
 ('gRVZ]qJ#>O', 'I+N4^}Lq%;'),
 ('J%,fuysl*&', 'M#?I9kQFyj'),
 ('r(h9&#wc~B', 's$aq*|$f>s'),
 ('_]DH+g9!$', 'mJVG+OU2XO'),
 ('B:x<p&Q=t)', 'KNRlqLN%1t'),
 ('z:*d{z(~V2', 'ngbe6iK.Qu'),
 ('d}R:qHj1,7', 'q3=L7rObtd'),
 ('L5M1*yG7eH', 'J#7Tt[f!e*'),
 ('s|K&2S,UP|', 'B8UUt(OH@c'),
 ('t$y1C2R-Av', 'pediB(:-]T'),
 ('eHJ?)TAdTo', 'oQ(1eJZ%h_'),
 ('pQpX%(EVOH', 'Kroi)OhVu'),
 ('qiv/4tOlf=', 'M?CI|U:7E'),
 ('M$bc0[jYf0', 'p><!jX(|}?'),
 ('jYz[ibrr9m', 'qh#R8~1)v.'),
 ('SlOEXfq#|', 'CN1N1S@Hy['),
 ('d5m8%D6,;u', 'B!be^2p5w-'),
 ('o9{x<AyA]B', 'I}SX`lcqJ9'),
 ('He!e=h?_2V', 'AP>P}@<F6G'),
 ('QSq%~rFaP-', 'C8l&[)j7Y)'),
 ('ck!6;xK$/^', 'r)k(h&xdEF'),
 ('n{{o2K1:dw', 'jov_[O@hK6'),
 ('xqrJ^d[.(O', 'ru#Hv&<OO['),
 ('vrn%j%6{nu', 'l$|!y^BHT^'),
 ('p#R$-mG/L', 'sgfCxE,%}I'),
 ('oV/JG7fwZq', 'Dp?|DrS.=x'),
 ('bD?R}i8_[c', 'E^e,*~,>&|'),
 ('Lol+XIvY21', '%Z}v@QXG-'),
 ('Qlib4)q2Hk', 'gJpb~!c0G8'),
 ('pwwZu{7f~(', 'FyYW/{EEO`'),
 ('qFuGdDx^Yv', 'A2*i`{j|[I'),
 ('Cf2@;p<aL', ']xe(O=bdk'),
 ('t2&ri|[Un:', 'Q+I:vHQr7%'),
 ('dbP/Cj}sB+', 'ftryRYGk$7'),
 ('wa>{k!2cXc', 'o3&;VW(Hf,'),
 ('5JJ2]i)p4', 'yXSMWI1KUx'),
 ('s>f40rn,O]', 'i1Ug;$!s.p'),
 ('ssbyA9}]QP', 'x{fP[=gD9V'),
 ('vKx<0Qa!aP', 'hC)w>ab^[Q'),
 ('fkq7lhLkdH', 'w7op[fQgTo')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
Russian
guid_mapping = \
[('e+/O]%*qfk', 'Jm&ky}FZz?'),
 ('h~5xz+=ke~', 'bms0vPoZ2i'),
 ('s9-GL*@AXD', 'OIwD?Vq[H}'),
 ('cPO|Cru8n<', 'b9(smVRG!j'),
 ('m*#%sE.`.;', 'G=a}N]t`St'),
 ('hNE9}>;Q&-', 'ry#$]bo`k}'),
 ('jN|NAUP*h}', 'hE`:7lrR4P'),
 ('j|z@PMgdx,', 'Qhq[TBO5H)'),
 ('n+t>2`:;P/', 'yT?~lnZ:gX'),
 ('ilGtw#=asM', 'jI?2qf!yDb'),
 ('mcc&0Kq^xE', 'w]]>DB_&l`'),
 ('gz9${p}er*', 'PiubQg^Ss5'),
 ('dY96`C-f(_', 'I7y6V2sDdB'),
 ('r>aI-$$|wT', 'v~cPQn}Wc%'),
 ('k9E.p^<u$,', 'b}AIti8H8S'),
 ('l$zM~ihPFE', 'kOtGr;P3}k'),
 ('jTNoKo}Bu+', 'pJE)w+ZJK%'),
 ('mz[>>AxIr4', '?R^lQY*D*'),
 ('u4^lH.xem5', 'n8DMh4+UMz'),
 ('bk2ByZIeU+', 'DNb~sC&J5%'),
 ('twrhzJ[k:Z', 'if&Ipt4{R!'),
 ('kS)hDm%w}R', 'gd(%cHqsMU'),
 ('AES],s:8=', 'paYW617a]n'),
 ('k[)#L4.[v3', 'qLh1v`1iQr'),
 ('k}A9]O:0xw', 'f6}E@C#_3N'),
 ('j7eEZkzsCZ', 'x4g!MZegS}'),
 ('s<_WLSB3I/', 'Gir-4TL#W$'),
 ('cYKvF#ptF7', 'A,M2k`~Wd['),
 ('m)WUtJS`H&', 'ld2~^b3]8e'),
 ('l$2O|9w`F~', 'B}gk}F/NJD'),
 ('kZ52zV#[Iv', 'P<8J|ziSx_'),
 ('i2]v|D3@:j', 'GvL1T<pl)T'),
 ('r5C646H*+*', 'H[sth&^jGj'),
 ('nIfRn<aY:N', 'Qz/GWg%Oi'),
 ('5S(f7%O-$', 'st{N3o<qmk'),
 ('m?}%V6s8]*', 'hs,ph6r@5'),
 ('uRo^w#p5Be', 'Gn220)gYMN'),
 ('o=,%hU&yX%', 'ImiWQfE/Wg'),
 ('lq`T^ZBF2Y', 'A`|*K1}2WV'),
 ('f>c7x2E]Q6', 'wz:QAN8%&+'),
 ('q[S4`,F0D=', 'elHzZb0RD>'),
 ('jCd]`-=k,:', 'EEpm1lUrG]'),
 ('vf)G?[_?Pf', 'fmanrW{ILh'),
 ('j9:K,~DQ2v', 'drS3F@Hxm;'),
 ('ui3>b-?a@m', 'vC~!WO}1Yx'),
 ('qVi;t%/`F|', 'Cz:.t]Ga.k'),
 ('g-]bb&[.E!', 'pQlr/JYlFs'),
 ('f21=-A~W;~', 'Q-1OO^)n>C'),
 ('sT5=H|@KU|', 'erbhQg!RK]'),
 ('lU@C3<C8Wk', 'gyBy@/*]JR'),
 ('jDA-V?/hVj', 'fn`TSL4H+K'),
 ('h_9=mkZXAH', 'w,s~/*1#Rg'),
 ('mk1VltJl<]', 'E9ORP)qdh9'),
 ('c(,2{yXI#E', 'ERCyEa-V]o'),
 ('kkbYQXw5b;', 'A1fj8m}V_0'),
 ('ia8as9sCY|', 'pwG/f8TA%+'),
 ('j%*8gN)q>d', 'LN}*YP~{-L'),
 ('bd~Ght5tLR', 'hb~_{qK>D='),
 ('onMKID2d;D', 'gCZT`M|9xu'),
 ('q8fF$4,c6_', 'ssdH.@,b*<'),
 ('upiX0g1quR', 'H16eX1]VWw'),
 ('n:7&>YT5A=', 'I!PNDUSvR|'),
 ('j2IQ=f=w3@', 'Nf8Q{=WT+v'),
 ('EWXNc<g5)', 'hEB<R*c15)'),
 ('gFOojQO(MH', 'b6L`KDbdIg'),
 ('gePC:Xt_nW', 'jOH{z(39<b'),
 ('vNiD6A.v#s', 'hqBB(<N!^q'),
 ('?n!)c/h=Q', 'dozwSc3oL_'),
 ('gYIoR`|AxW', 'xD;}}nO&|5'),
 ('j<egqG@)EL', 'H^_J<Y5+Lq'),
 ('t`cagaWApo', 'taEpjjAUDi'),
 ('jN^Vc%9OQ5', 'CP<0cpy;,I'),
 ('o3VS!KWb/@', 'Q!DmMRZl:C'),
 ('iR;U<J:CJJ', 'e@]nUPgXPS'),
 ('i^J8&$(1]|', 'JumHq-w(@9'),
 ('pS>DrFhd%u', 'NgIL<U_<X{'),
 ('t|h3|;E4g{', 'g_banf#h(Q'),
 ('p.yv>BQ470', 'A4mx0mYQ.6'),
 ('f#4-L[mp5*', 'F9=}W4o(m('),
 ('oNpApS<AoJ', 'l_u,7Sl);4'),
 ('nsS59c`VL,', 'sp#%Uu{jxI'),
 ('m{noqE29%I', 'O>:Y)[/m@5'),
 ('sSW/?WMy17', 'J@?!E/?|:y'),
 ('d-q4J~CNW_', 'bt,AY},y$2'),
 ('jKO,9y0M;#', 'G:w,Y[(aW1'),
 ('skOM(?n$GG', 'OB*1GftSKF'),
 ('mi+kf0LTW.', 'q?uiYsL{dZ'),
 ('vgdj#X?8dB', 'tRCc37FI3F'),
 ('mkgcU7[bA%', 'b5~CCSrPP.'),
 ('jcu!gLw/&r', 'L@{q~To$1C'),
 ('sB7rZQsR<l', 'iT>Kc}4kE='),
 ('u|I}oElaH)', 'L_#MCSsliG'),
 ('j)i)pB*HJ,', 'M_^<HEN]5='),
 ('t-0>F]bu>P', 'uoblR~tJv{'),
 ('hrI_uiW>E]', 'A#PXVu3{OG'),
 ('uc61ToT%gt', 'J/Z,LIAPP>'),
 ('e.t$Vi5,>f', 'pcq,]2w8O['),
 ('k/u1:B%DJH', 'CAUBpe+}Rh'),
 ('e5P*D#I{m{', 'pMLZoOPY5w'),
 ('p:SPZ:e/*[', 'K9nrzyH&<X'),
 ('t+v9b--,qs', 'mBU4P!~(nj'),
 ('fV`&p81%d(', 'JqECz@.%4i'),
 ('gsS{jR,]|Q', 'QU|9z>>-i<'),
 ('cAlyc~G.y%', 'dQpb|V+vI#'),
 ('fxAN),FAc$', 'Et,iKxkLUP'),
 ('r<N4LAAnnB', 'e5i.x%JIir'),
 ('e?Xq9gy=@[', 'I6q=nh1_(R'),
 ('m5j,b/y<EE', 'L++V2zV3fB'),
 ('stRa/S(0$F', 'w<=bLWa9^e'),
 ('l+>Ki!j#v+', 'gWiiNVbwTm'),
 ('kQ:NIhJy~E', 'KR0|YigF}Y'),
 ('sY>@9w~i^p', 'N>!/r-|iKh'),
 ('mJH4kwPF.-', 'LBA=S$7TwR'),
 ('bW)ch:vs1P', 'vAR>ZSEGi/'),
 ('sx|l+io`B@', 'i>!/t@^}^?'),
 ('q2#Yv[O0:|', 'oQe#*&QQB'),
 ('lpbD0St&OU', 'e[XV}qzx6q'),
 ('mbz=7n[0v9', 'qn,8N+7Z^{'),
 ('ijP>aJBT!9', 'cdC>T>VY4t'),
 ('jI9P-f6r3M', 'F,ZHHr/u@K'),
 ('h?a*UKfT_M', 'in7S|U&pW]'),
 ('r6BV%|..*5', 'dm&o}^E:Y%'),
 ('i)]+09JUR&', 'g?oII<6[ZM'),
 ('l}[BG9.nQS', 'nDcU{JcnF/'),
 ('mtd;>7T|g>', 'eTUA#N*+_%'),
 ('iW>m(L/~c=', 'uB1!(|)h6G'),
 ('pkj3RPBUrF', 'oM2[$i]Jg{'),
 ('euW0jm=wfR', 'CeFx+%T#{9'),
 ('l*j*EE:!Y?', 'y-F:kD#HUc'),
 ('d3c`&/1Y^D', 'w`Lo,-amU6'),
 ('hXNTVF<:SH', 'pR,WF6cJZz'),
 ('mk20`,N=`=', 'Fvsev/q[3n'),
 ('eALZe^HCHq', 'OGgJtMdwEP'),
 ('l3Ly8PBxt(', 'FeM1Z:8]S-'),
 ('g<[f89~U)A', 'H4;V}Gjc$p'),
 ('iIS#Nw]tr]', 'hL96AeDkLm'),
 ('m{oM,jr>C#', 'd;7/rK:;@r'),
 ('ln^3p)j3b.', 'wt1^C^RyMj'),
 ('cL?8!xP#Wj', 'K{N|AkKxc*'),
 ('e=.VHQ9E+M', 'H)jJ?RQ{`4'),
 ('m[96fa+HDS', '|a&v3R&*G'),
 ('g9v~y/;=z(', 'p*/Yx`XElV'),
 ('g~%pF`(x{u', 'yJuwsoHp0*'),
 ('hE5j*e,Q?[', 'r[B4}qKEKl'),
 ('fRSM{K+;[w', 'de.tDgRhFi'),
 ('o~}KVA:VbI', 'AFNn,$>?6v'),
 ('u-`cspdp)D', 'QF&bT0`se)'),
 ('e42BpV,P}C', 'w_RRz<D>=p'),
 ('pD<Pd$Ag@J', 'rE0yeh1k~6'),
 ('mbGXc0y3Pe', 'ndb6k{nIX-'),
 ('gB|K:+r?1V', 'gVIrkH[g_z'),
 ('lhWI;$JC9(', 'tLN$~<D&LN'),
 ('k0{O[6l]bH', 'M$Ym*hq(lZ'),
 ('r>g<|,FWi%', 'iqg6(sCS87'),
 ('n&>e`2FO/S', 'E_Y_gka<wh'),
 ('khB~(m^@Z5', 'xBZF?3m:=u'),
 ('spKoFRM4if', 'yR{s}{|vzP'),
 ('q8][)Ri}=q', 'bD5Cj?{})5'),
 ('hoHandbYAy', 'cD]Q9Pd0ZO'),
 ('lmRujD!(A7', 'F289Jx}!aE'),
 ('q:XyGf#>Wg', 'J(!?!{vv{7'),
 ('s#:aIK$9^x', 'Ci{2x]j^h='),
 ('jBd@A?>g|}', 'I`2u4=)$rI'),
 ('koI(}OyJ:@', 'n+6|^+yndU'),
 ('e?gIaPc$Ox', 'A^v{U|AR{a'),
 ('o#&RMA_REo', 'p7}c5wf.O#'),
 ('s4E?ZF[E<>', '!lbQb6Q:w'),
 ('k1]FH+s8j@', 'jH,I*;o6vh'),
 ('dWA49p}F{k', 'G2WhVSEk&4'),
 ('K*b}<I3(~', 'y&XDZ^<U3_'),
 ('e?h=Xhs+K&', 'dMQkP!;0c='),
 ('b@M[XTc?}5', 'L?:>A,WJLB'),
 ('sxOMs+bE8@', 'nNI(>d`5|I'),
 ('t3aZXtpNyi', 'Pkxoj6=pZF'),
 ('rPekx@n9:L', 'rz5xk#1<PP'),
 ('lAxH.CfJB@', 'xxk(Bq-Z`<'),
 ('hZ/V/D&rO`', 'ewx9/IV5o%'),
 ('h&`>n98~V1', 'xddNP~dyT_'),
 ('t50y/[AEhF', 'zRmOT{Xeqm'),
 ('gBCR?!O*;E', 'H+Rb-3u-sn'),
 ('tTnCoO/*tk', 'LE9jC#sSOE'),
 ('W5?6yQZD2', 'N}PXRbob?8'),
 ('e{e8vi@^PY', 'il|4oTIh7t'),
 ('tcneuK7v%`', 'J2r:;Tb}bM'),
 ('uH*Q(mcRt5', 'iT]9Jy+|:B'),
 ('k$1_yaF?9#', 'ns9RF=A{<?'),
 ('dUZ^=SE5BG', 'oQW|#KNZR!'),
 ('t_h*fbN#:(', 'QUEZaS<.i&'),
 ('q=w[<m2Bk&', 'NgMbQSn4l{'),
 ('vpOTK6tMr@', 'v5e#_P()cc'),
 ('m2F|cUkKhv', 'J2R`q[Z2!i'),
 ('k}4/oj#$~s', 'DMfp:u>1/~'),
 ('va/ky=f5pK', 'E{q^42h($('),
 ('c,5(mUGzYT', 'N&H{fk[c3L'),
 ('gp[h@]y13l', 'yTwB:d{m;m'),
 ('gx:;za!?C9', 'j[3-~lc=uu'),
 ('r]*Ioa%$bK', 'E+q[fM~I%,'),
 (')Y}Qy.3GK', 'Fa.~5.=<;F'),
 ('lH^2D]w;[H', 'qjeAhS!PI:'),
 ('qx%>fB$d+$', 'm6|Qi!lWAQ'),
 ('libliptkB4', 'lq[V&Ro6p!'),
 ('jrM28*HbyG', 'uCA#@hm#=u'),
 ('r?E$4f-d0/', 'u~Z*V|m1JC'),
 ('leh^fmrt*#', 'Aovq2LfJ3x'),
 ('O~pXkAbd3', 'J?N4X)hLQ4'),
 ('f*LO~>!0PN', 't2BlE6w@U0'),
 ('q[}7hk(+=e', 'mmn-72S%.C'),
 ('q7do-wLx%E', 'iBkK=.H[[*'),
 ('vwc3}.=Z#&', 'yD<PlLql`:'),
 ('e<X;[vACXC', 'i4D*V-sHYX'),
 ('j=L,YBvsBk', 'NLQ8Se/(B%'),
 ('oa87&PB&Bm', 'dl?k9`s(|K'),
 ('b^Try&me1A', 'zR_=AM#e1.'),
 ('o``:?0>/yz', 'M~5K,Lq-LX'),
 ('pz(G*<F93/', 'sKVdix$DBJ'),
 ('cV4idO^r8W', 'emf@Kw7U_W'),
 ('m*PYE=#wr^', 'j{s4{ed!RV'),
 ('sXzvT.g31p', 'q|wSo|9[WL'),
 ('mq)8`hi{hb', 'o.R(%XRfF<'),
 ('h}lnSN_f$_', 'J4U9*&@eJO'),
 ('eT<gzg?q,r', 'x$e/?}ioiX'),
 ('vE[T$`n9T)', 'O,{dn7CExu'),
 ('tj&bK}%P!F', 'vqizD*x9.v'),
 ('kX]hN=_.c-', 'AE%P6;/:4z'),
 ('r/B|ra%L,.', 'i;wkVQEC8~'),
 ('b[(2`4t&?J', 'w^9U1RGI}b'),
 ('qvITjNxkLN', 'Nq3Z?3&|oE'),
 ('jX=#G8wu#(', 'Dy8wkcY4!S'),
 ('l&#7I)Ah/E', 'pHNtJdHo[e'),
 ('de=9c:,@j9', 'IBl:CrljZo'),
 ('kE!iKHLN_g', 'EwR<30)#1g'),
 ('d``B*6:eCx', 'ikT)0#7&yt'),
 ('p]t8:Tka7q', 'kAP^Ny~90T'),
 ('niJUFZF$Y:', 'u.[N1#,@y:'),
 ('p}Qa|!7PpR', 'xDK0`i2s%/'),
 ('uv1fGXHN@)', 't9Ryk}`qj2'),
 ('sRw-ik:I$v', 'PB_{Euk>>/'),
 ('bnEK#)[;qT', 'A)h(R4;N+m'),
 ('ey:Q|*t!Lg', 'vPy3m1oa#d'),
 ('c^,~EC6Pb2', 'd`zDA9y~gZ'),
 ('tMMtBUpb$&', 'C&k%h=UUn#'),
 ('jKIDq|}J&c', 'dzu,L2RTO6'),
 ('dC:e5G4J/p', 'CQXXs$n5cv'),
 ('u;|vR#mVMW', 'xBC@m/Re-7'),
 ('gDsLPj(9S#', 'u~.<cG1`ob'),
 ('xb&P*pH(Q', 'B[,~m31[Og'),
 ('Bszsaz0Iuo', 'dIUwggycz7'),
 ('JOT:U4ayh@', 'fBT#}$9v{@'),
 ('G/^_##fcPN', 'uvRyF*9Zqg'),
 ('LPF4AfaHKR', 's^4z/0k+AF'),
 ('rSneU!3}bn', 'Ej./VrJYpS'),
 ('cv+Nq9:a<P', 'Og]Pyc,dB|'),
 ('f*2@qiHh_1', 'O6aT:6ldHZ'),
 ('nuU8A_$i2M', 'xWSI:FF;%x'),
 ('fT!w8R#>dg', 'EMPCtOx;Rj'),
 ('gG6SWfM>H0', 'yXRb0bi*D.'),
 ('sM0GPt1HS1', 'c3fq*,<:~U'),
 ('dlU7VG|3Gd', 'D#f:CN7HH4'),
 ('cEO^y)Md[G', 'ym)YXCoojW'),
 ('eN#^kPGv*L', 'n!%,$ZZU.A'),
 ('lp@e##m.!+', 'ds)Lw5L_oG'),
 ('epvt3>HH?U', 'Btv`iTH0LW'),
 ('E3u*2.<9#`', 'q]o/<>5}wu'),
 ('q1Q3Do8S>g', 'M_Aq-@$=Ed'),
 ('yX:tmrd5;]', 'M0{EnlSZ[&'),
 ('H*c[ML+`s=', 'q}Pw=WLDWu'),
 ('e_;dzXj8de', 'od6cw^-E-]'),
 ('iB-8Br~onq', 'Ily]WmR8_^'),
 ('zSc]-^U=0=', 'hpvj)-!USf'),
 ('x2d4n4ADcP', 'J3~et+v|e@'),
 ('Gn;q2Y)Xe4', 'G!-:Hml<-@'),
 ('gRVZ]qJ#>O', 'f-#kZAo/ON'),
 ('J%,fuysl*&', 'etM=#0^o-o'),
 ('r(h9&#wc~B', 'i-&Ri-vDye'),
 ('_]DH+g9!$', 'JS=q2$2L3]'),
 ('B:x<p&Q=t)', 'D,@m:}o|sK'),
 ('z:*d{z(~V2', 'fs]5;0c;}B'),
 ('d}R:qHj1,7', 't$C>63YEjQ'),
 ('L5M1*yG7eH', 'EZvlR:83-^'),
 ('s|K&2S,UP|', 'MHvNbPV}Qa'),
 ('t$y1C2R-Av', 'Hmbq~BF@]H'),
 ('eHJ?)TAdTo', 'v]|R(og)1x'),
 ('pQpX%(EVOH', 'yB!Y:vm[{l'),
 ('qiv/4tOlf=', 'IW*fIQ@Vn!'),
 ('M$bc0[jYf0', 'v:EM)mKjX1'),
 ('jYz[ibrr9m', 'G:i:X<AqLs'),
 ('SlOEXfq#|', 'Aa(5k`u_H.'),
 ('d5m8%D6,;u', 'pj`8ER+@;H'),
 ('o9{x<AyA]B', 'gZA|73/rf@'),
 ('He!e=h?_2V', 'N<Zjd9rV2&'),
 ('QSq%~rFaP-', 'Iktca^NUQ'),
 ('ck!6;xK$/^', 'i2(em&ob8T'),
 ('n{{o2K1:dw', 'wj)M@s{]YR'),
 ('xqrJ^d[.(O', 'b/*Gfh]U>A'),
 ('vrn%j%6{nu', 'nq{:LP(wy='),
 ('p#R$-mG/L', 'hME8pvJ-]J'),
 ('oV/JG7fwZq', 'ofER|_J~:`'),
 ('bD?R}i8_[c', 'k.2O4>+A!V'),
 ('Lol+XIvY21', 'z~`99rF8Y^'),
 ('Qlib4)q2Hk', 'u9:IZ@Uo>l'),
 ('pwwZu{7f~(', 'NvOwi0qs57'),
 ('qFuGdDx^Yv', 'xfB@_iTV&b'),
 ('Cf2@;p<aL', 'h*-O8Wp^BE'),
 ('t2&ri|[Un:', 'cz=5m*@Fez'),
 ('dbP/Cj}sB+', 's_iv#ETD^J'),
 ('wa>{k!2cXc', 'cPg&WpVKO~'),
 ('5JJ2]i)p4', 'n!&0937~y!'),
 ('s>f40rn,O]', 'HE)H&.0Xn6'),
 ('ssbyA9}]QP', 'h46=t>$v#7'),
 ('vKx<0Qa!aP', 'D&9$.-JH&Q'),
 ('fkq7lhLkdH', 'y!Xu5N$EBT')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)
Swedish
guid_mapping = \
[('e+/O]%*qfk', 'M@9EfpNi;z'),
 ('h~5xz+=ke~', 'Gpeah<lh@u'),
 ('s9-GL*@AXD', 'nN,;(#X}Wt'),
 ('cPO|Cru8n<', 'b4O.fdq=&&'),
 ('m*#%sE.`.;', 'pk+~~g89%y'),
 ('hNE9}>;Q&-', 'Ae@YR@cdSW'),
 ('jN|NAUP*h}', 'h>OmJ~oZ~|'),
 ('j|z@PMgdx,', 'gM+}.:OZH]'),
 ('n+t>2`:;P/', 'wH[5PSfX;K'),
 ('ilGtw#=asM', 'Qi.AoC*UvT'),
 ('mcc&0Kq^xE', 'j^H$O[w*tW'),
 ('gz9${p}er*', 'O:){fAE+[h'),
 ('dY96`C-f(_', 'KUSv4_ZftC'),
 ('r>aI-$$|wT', 'f`?#zj#)DE'),
 ('k9E.p^<u$,', 'x]u},H#?K~'),
 ('l$zM~ihPFE', 'B,[GBme-:n'),
 ('jTNoKo}Bu+', 'rF%zt5M&?-'),
 ('mz[>>AxIr4', 'z9T_hmmT*f'),
 ('u4^lH.xem5', 'v3/LK?TI+'),
 ('bk2ByZIeU+', 'GO8K><b?f2'),
 ('twrhzJ[k:Z', 'wR=%k%E3:i'),
 ('kS)hDm%w}R', 'wh@G!lN$Q|'),
 ('AES],s:8=', 'w2^A.*A;0^'),
 ('k[)#L4.[v3', 'ca`<lL]SBn'),
 ('k}A9]O:0xw', 'lsc1G{vU4.'),
 ('j7eEZkzsCZ', 'C[bMs5PN|d'),
 ('s<_WLSB3I/', 'DVc[0B1#@*'),
 ('cYKvF#ptF7', 'P;wx%Rx}g%'),
 ('m)WUtJS`H&', 'i3-W.8A8pC'),
 ('l$2O|9w`F~', 'x^M8w2)s#:'),
 ('kZ52zV#[Iv', 'ODx_iYAqK('),
 ('i2]v|D3@:j', 'oU<~4jjCyP'),
 ('r5C646H*+*', 'A&@FdL>j&h'),
 ('nIfRn<aY:N', 'dnY]_1$e<W'),
 ('5S(f7%O-$', 'u<w5s|M#Ds'),
 ('m?}%V6s8]*', 'JO{1$2yxOD'),
 ('uRo^w#p5Be', 'l*S7j866t<'),
 ('o=,%hU&yX%', 'I}xtas*<<='),
 ('lq`T^ZBF2Y', 'HX#;I12-Gu'),
 ('f>c7x2E]Q6', 'O|!r8pZc_@'),
 ('q[S4`,F0D=', 'c0X`Rdpvdg'),
 ('jCd]`-=k,:', 'QO[lJt~Q]N'),
 ('vf)G?[_?Pf', 'u3u7Z|VQV`'),
 ('j9:K,~DQ2v', 't%PfM!!RPu'),
 ('ui3>b-?a@m', 'A:WhEL~x!A'),
 ('qVi;t%/`F|', 'd&Z;v4SLqS'),
 ('g-]bb&[.E!', 'H/1j+}vOwc'),
 ('f21=-A~W;~', 'qv@;*gj=VH'),
 ('sT5=H|@KU|', 'IlH%F{np<['),
 ('lU@C3<C8Wk', 's=)J}uTu.N'),
 ('jDA-V?/hVj', 'GilXrl.A_%'),
 ('h_9=mkZXAH', 'q*^h!N31k*'),
 ('mk1VltJl<]', 'xc^[E/Z[$R'),
 ('c(,2{yXI#E', '(;;{-bktU'),
 ('kkbYQXw5b;', 'FOI,VR<;HS'),
 ('ia8as9sCY|', 'b2;iz|xg^@'),
 ('j%*8gN)q>d', 'uVs:]g8l.&'),
 ('bd~Ght5tLR', 'FBWKraq$]`'),
 ('onMKID2d;D', 'F[Hq;*V/7K'),
 ('q8fF$4,c6_', '[&[K^KiK8'),
 ('upiX0g1quR', 'mSow!CwtLI'),
 ('n:7&>YT5A=', 'J.*@Nk4>0*'),
 ('j2IQ=f=w3@', 'B;S:<cu0^C'),
 ('EWXNc<g5)', 'B7hcD[}|,:'),
 ('gFOojQO(MH', 'n$t4JTV.L['),
 ('gePC:Xt_nW', 'we!,qZc~VX'),
 ('vNiD6A.v#s', 'P.ls/JP5<}'),
 ('?n!)c/h=Q', 'ljuf!A77m!'),
 ('gYIoR`|AxW', 'm9{}Vj*h)B'),
 ('j<egqG@)EL', 'hB_EsBpVEy'),
 ('t`cagaWApo', 'k$T,&qpZ_E'),
 ('jN^Vc%9OQ5', 'B`1@FnD9*.'),
 ('o3VS!KWb/@', 'Nky*kq6)GC'),
 ('iR;U<J:CJJ', 'dJX+VxBemo'),
 ('i^J8&$(1]|', 'ugyWN%[pXR'),
 ('pS>DrFhd%u', 'w5=:(t5%R6'),
 ('t|h3|;E4g{', 'E[0uav)J05'),
 ('p.yv>BQ470', 'FGu[yfPiJ7'),
 ('f#4-L[mp5*', 'nh!${YsPie'),
 ('oNpApS<AoJ', 'bkjWZ<Vg]U'),
 ('nsS59c`VL,', 'KWY%fKd5dT'),
 ('m{noqE29%I', 'w3V@j|Foq~'),
 ('sSW/?WMy17', 'pD{#)wT+1u'),
 ('d-q4J~CNW_', 'f?dUt&>$PS'),
 ('jKO,9y0M;#', 'p02Yuw`G)/'),
 ('skOM(?n$GG', 'hj]p(iMKl7'),
 ('mi+kf0LTW.', 'qjZDlzf]=l'),
 ('vgdj#X?8dB', 'b^b:}HG<(/'),
 ('mkgcU7[bA%', 'p(q*slFP*F'),
 ('jcu!gLw/&r', 'j(X|k-_Sv|'),
 ('sB7rZQsR<l', 'P~zp{JVRjt'),
 ('u|I}oElaH)', 'lNTL4T}K1)'),
 ('j)i)pB*HJ,', 'OlYF5,:|Q3'),
 ('t-0>F]bu>P', 'y=oLcr9$cQ'),
 ('hrI_uiW>E]', 'L3Z}n~/Szn'),
 ('uc61ToT%gt', 't&Ov:{KJHy'),
 ('e.t$Vi5,>f', 'eqi30~lJCU'),
 ('k/u1:B%DJH', 'yJ+?5Bb~=:'),
 ('e5P*D#I{m{', 'p;W>c.=a5.'),
 ('p:SPZ:e/*[', 'Op1]SnugtV'),
 ('t+v9b--,qs', 'z8UXM/Z23%'),
 ('fV`&p81%d(', 'N&=0FE?0K3'),
 ('gsS{jR,]|Q', 'DnUNQy>V@c'),
 ('cAlyc~G.y%', 'p){pPjR5:$'),
 ('fxAN),FAc$', 'QyZ%*OdzFY'),
 ('r<N4LAAnnB', 'Q5Si^%B~:x'),
 ('e?Xq9gy=@[', 'F+l?rc6nr?'),
 ('m5j,b/y<EE', 'ubj(k(`p0:'),
 ('stRa/S(0$F', 'KHEo&Oa7_F'),
 ('l+>Ki!j#v+', 'sj6y@z=dRP'),
 ('kQ:NIhJy~E', 'vl*,GQz^vQ'),
 ('sY>@9w~i^p', 'H_pUK6Xu]`'),
 ('mJH4kwPF.-', '8CAB|Q`3c'),
 ('bW)ch:vs1P', 'hWSXAL,1[1'),
 ('sx|l+io`B@', 'p?*+RZ<OgX'),
 ('q2#Yv[O0:|', 'tJ&;D}C]UV'),
 ('lpbD0St&OU', 'cBQpjb$FFF'),
 ('mbz=7n[0v9', 'GV|.:pW~=#'),
 ('ijP>aJBT!9', 'LH]h^.GA_i'),
 ('jI9P-f6r3M', 'z}n.If4:?)'),
 ('h?a*UKfT_M', 'uU![?ri)d_'),
 ('r6BV%|..*5', 'Qmb.+7huoY'),
 ('i)]+09JUR&', 'c#-~c^hZ8~'),
 ('l}[BG9.nQS', 'if5[hu6l7g'),
 ('mtd;>7T|g>', 'eDx9dZ&k(k'),
 ('iW>m(L/~c=', 'c=F0q+d|m#'),
 ('pkj3RPBUrF', 'o%$r]1QH{t'),
 ('euW0jm=wfR', 'F5Fbm]10e3'),
 ('l*j*EE:!Y?', 'EKcj[W^+w]'),
 ('d3c`&/1Y^D', 'y!.rR1N]Q%'),
 ('hXNTVF<:SH', 'FO/D@z0E%#'),
 ('mk20`,N=`=', 'g^MDw[q&`K'),
 ('eALZe^HCHq', 'D^z&W{[{ng'),
 ('l3Ly8PBxt(', 'n$0d;K4M?l'),
 ('g<[f89~U)A', 'eRztGZ?5gt'),
 ('iIS#Nw]tr]', 'mmXmH,@{!K'),
 ('m{oM,jr>C#', 'rVhH@X0hOr'),
 ('ln^3p)j3b.', 'dYQH;whZ9c'),
 ('cL?8!xP#Wj', 'ya#p*nPn}U'),
 ('e=.VHQ9E+M', 'i?;Nx?in:X'),
 ('m[96fa+HDS', 'hqHjJQR@ve'),
 ('g9v~y/;=z(', 'caoMw/l6Qq'),
 ('g~%pF`(x{u', 'qvU`=w(275'),
 ('hE5j*e,Q?[', 'oVtF.y]H)M'),
 ('fRSM{K+;[w', 'x2Ho#9JF2&'),
 ('o~}KVA:VbI', 'njbrSU^agd'),
 ('u-`cspdp)D', 'uRPZ]lF~NL'),
 ('e42BpV,P}C', 'o@l9/@&CEQ'),
 ('pD<Pd$Ag@J', 'I4?0i2<YxI'),
 ('mbGXc0y3Pe', 'JA;WxR7VVZ'),
 ('gB|K:+r?1V', 'ncoVNK:5c/'),
 ('lhWI;$JC9(', 'B*Q><ygyqQ'),
 ('k0{O[6l]bH', 'Pc}I71FH$K'),
 ('r>g<|,FWi%', 'Ko1^yAR.yn'),
 ('n&>e`2FO/S', 'l{J_M.Vp>X'),
 ('khB~(m^@Z5', 'LCs2:t<[-X'),
 ('spKoFRM4if', 'c@58oWbN3U'),
 ('q8][)Ri}=q', 'N@bHVDe+Kb'),
 ('hoHandbYAy', 'heo$u3%xYs'),
 ('lmRujD!(A7', 'Q8=#jf;Izu'),
 ('q:XyGf#>Wg', 'O>(c0%czoO'),
 ('s#:aIK$9^x', 'm%N$gpC+n]'),
 ('jBd@A?>g|}', 'rJG$qf|FO4'),
 ('koI(}OyJ:@', 'DOTLV^*F{H'),
 ('e?gIaPc$Ox', 'fk0sh|Ih~P'),
 ('o#&RMA_REo', 'w7J5,@!ZO`'),
 ('s4E?ZF[E<>', 'Q@3rl@WPXz'),
 ('k1]FH+s8j@', 'A`?%3b$nUX'),
 ('dWA49p}F{k', 'O%#xYWz^#M'),
 ('K*b}<I3(~', 'fwm<gn03ey'),
 ('e?h=Xhs+K&', 'HzN{~)3NGK'),
 ('b@M[XTc?}5', 'OzZ|9/zKGy'),
 ('sxOMs+bE8@', 'J+O2qUIUz|'),
 ('t3aZXtpNyi', 'OX,mUDIStL'),
 ('rPekx@n9:L', 'kjo~PAZ.,y'),
 ('lAxH.CfJB@', 'r#k4%<ieJ;'),
 ('hZ/V/D&rO`', 'k^PtQpRdLQ'),
 ('h&`>n98~V1', 'i7sQICmsKP'),
 ('t50y/[AEhF', 'I=mZ*3?!_l'),
 ('gBCR?!O*;E', 'wY{he1D;Tc'),
 ('tTnCoO/*tk', 'Qg3C+rbaa*'),
 ('W5?6yQZD2', 'Bp:8AxZIJ*'),
 ('e{e8vi@^PY', 'O8La>q*+=D'),
 ('tcneuK7v%`', 'd&bsqV:N$w'),
 ('uH*Q(mcRt5', 'ELV(4@XqZt'),
 ('k$1_yaF?9#', 'gM!|AcSE~W'),
 ('dUZ^=SE5BG', '^(x:orV#n'),
 ('t_h*fbN#:(', 'Leo~hD<WPr'),
 ('q=w[<m2Bk&', 'iKL]@oe;,B'),
 ('vpOTK6tMr@', 'QIn7X6P~>i'),
 ('m2F|cUkKhv', 'qvhov1fh!t'),
 ('k}4/oj#$~s', 'P?8;T>jkXg'),
 ('va/ky=f5pK', 'fGB0mK7OmU'),
 ('c,5(mUGzYT', 'b.K2|uT9#&'),
 ('gp[h@]y13l', 'o6Q=4QRc:P'),
 ('gx:;za!?C9', 'O6XK(yEdjN'),
 ('r]*Ioa%$bK', 'Q!&RwY_+~G'),
 (')Y}Qy.3GK', 'HU{V)h>->1'),
 ('lH^2D]w;[H', '|:r0wYpo+'),
 ('qx%>fB$d+$', 'M<c,]nB<a~'),
 ('libliptkB4', 'N={U.qMDd5'),
 ('jrM28*HbyG', 'OgRSGzP9iU'),
 ('r?E$4f-d0/', 'gux9;qM)nK'),
 ('leh^fmrt*#', 'hq?[{n24G;'),
 ('O~pXkAbd3', 'u._5@pRbGb'),
 ('f*LO~>!0PN', 't1sE<.qtO/'),
 ('q[}7hk(+=e', 't|}7%V0{4w'),
 ('q7do-wLx%E', 'v?vAk$tZAa'),
 ('vwc3}.=Z#&', 'l,[F>UJ/PN'),
 ('e<X;[vACXC', 'zz4Ej5gtx6'),
 ('j=L,YBvsBk', 'BJvzz<mQn/'),
 ('oa87&PB&Bm', 'GH~LmtD8o#'),
 ('b^Try&me1A', 'N@2CXFim}.'),
 ('o``:?0>/yz', 'jZpi[+b>`2'),
 ('pz(G*<F93/', 'LvKjC9)Jop'),
 ('cV4idO^r8W', 'f&H7U0-[5}'),
 ('m*PYE=#wr^', 'MD>R`2$IfI'),
 ('sXzvT.g31p', 'kA<Bx%0-hP'),
 ('mq)8`hi{hb', 'kp&`?`CDeL'),
 ('h}lnSN_f$_', 'yp(op%kwx]'),
 ('eT<gzg?q,r', 'gum46?fIJ@'),
 ('vE[T$`n9T)', 'nB97`B-u)'),
 ('tj&bK}%P!F', 'O-wR/1*Y6i'),
 ('kX]hN=_.c-', 'M1DF:M)y_T'),
 ('r/B|ra%L,.', 'H!Ms:!^6Ka'),
 ('b[(2`4t&?J', 'P$;>yK&Bb#'),
 ('qvITjNxkLN', 'NJhO,P|nW`'),
 ('jX=#G8wu#(', 'ki}T;HSiij'),
 ('l&#7I)Ah/E', ':+A,]QJt-'),
 ('de=9c:,@j9', 'o6f7z~ZCr6'),
 ('kE!iKHLN_g', 'jX.V=Tm<P3'),
 ('d``B*6:eCx', 'eItZ|YXm$3'),
 ('p]t8:Tka7q', 'f*vz&Ph[bR'),
 ('niJUFZF$Y:', 'fsloLaTPf8'),
 ('p}Qa|!7PpR', 'ga-I(hwLN)'),
 ('uv1fGXHN@)', 'AUgq3IkilN'),
 ('sRw-ik:I$v', 'w`;zj+qi],'),
 ('bnEK#)[;qT', 'Ar:~TK>ugF'),
 ('ey:Q|*t!Lg', 'pbJ|E`wn_~'),
 ('c^,~EC6Pb2', 'KG~t}M~,_o'),
 ('tMMtBUpb$&', '|*Z`50Bgs'),
 ('jKIDq|}J&c', 'qW1*i(&R3$'),
 ('dC:e5G4J/p', 'iZ`BoOu7TH'),
 ('u;|vR#mVMW', 'B=^Q!Oy7dx'),
 ('gDsLPj(9S#', 'EykZ%2$zVY'),
 ('xb&P*pH(Q', 'P)2eJ7Sr]e'),
 ('Bszsaz0Iuo', 'Cj.2Qz[,?;'),
 ('JOT:U4ayh@', 'mjltS8qw#I'),
 ('G/^_##fcPN', 'wN+#PV27nX'),
 ('LPF4AfaHKR', 'DMw7[z1|/f'),
 ('rSneU!3}bn', 'myDYy<t!DY'),
 ('cv+Nq9:a<P', 'e7aUv]y3NG'),
 ('f*2@qiHh_1', 'fL<u4=Axl['),
 ('nuU8A_$i2M', 'j65XMZPPCl'),
 ('fT!w8R#>dg', 'taGg_[({a>'),
 ('gG6SWfM>H0', 'c3_S$ge,H%'),
 ('sM0GPt1HS1', 'mVqJCtNO^w'),
 ('dlU7VG|3Gd', 'f*A:Z4bkRD'),
 ('cEO^y)Md[G', 'ite]=1-[IW'),
 ('eN#^kPGv*L', 'sE1}%6$3D9'),
 ('lp@e##m.!+', 'li{q-g0Ru|'),
 ('epvt3>HH?U', 'iWh/XzA:Fx'),
 ('E3u*2.<9#`', 'QQ+*SW>?NN'),
 ('q1Q3Do8S>g', 'J{(N4{^e:N'),
 ('yX:tmrd5;]', 'GZ2yh|R:fR'),
 ('H*c[ML+`s=', 'gx#n~i)Kft'),
 ('e_;dzXj8de', 'sB,_Fhn5&I'),
 ('iB-8Br~onq', 'xV<kEl1ZJ$'),
 ('zSc]-^U=0=', 'lGG8WbUQzc'),
 ('x2d4n4ADcP', 'p6lxT;d^Pq'),
 ('Gn;q2Y)Xe4', 'ngPe&f4ARW'),
 ('gRVZ]qJ#>O', 'ywSb;Oor?l'),
 ('J%,fuysl*&', 'uxU}LMXAY+'),
 ('r(h9&#wc~B', 'z;zuT%S.hs'),
 ('_]DH+g9!$', 'g*C+;[^vP9'),
 ('B:x<p&Q=t)', 'gn,]{C-kDK'),
 ('z:*d{z(~V2', 'x-s/YndH;0'),
 ('d}R:qHj1,7', 'pG~&s-.Pv='),
 ('L5M1*yG7eH', 'iw)&(><6ju'),
 ('s|K&2S,UP|', 'HeX)uooi/y'),
 ('t$y1C2R-Av', 'x*o*2(qrzU'),
 ('eHJ?)TAdTo', 'd/vX5sh?Z9'),
 ('pQpX%(EVOH', 'G&{G$z2N`]'),
 ('qiv/4tOlf=', 'cd@bD^dpRt'),
 ('M$bc0[jYf0', 'B4o4Qgpxa='),
 ('jYz[ibrr9m', 'D.R!j]):&%'),
 ('SlOEXfq#|', 'u>bFUX4,^('),
 ('d5m8%D6,;u', 't!YaMvtxM)'),
 ('o9{x<AyA]B', 'fl~nzy1ZAc'),
 ('He!e=h?_2V', 'Qqzh;Z,9&o'),
 ('QSq%~rFaP-', 'A`,,|zaW//'),
 ('ck!6;xK$/^', 'vHOU`CM:P+'),
 ('n{{o2K1:dw', 'bM>er*)`9o'),
 ('xqrJ^d[.(O', 'g67ir]U+=9'),
 ('vrn%j%6{nu', 'F%kRV:W:T$'),
 ('p#R$-mG/L', 'xA+]rlW|<7'),
 ('oV/JG7fwZq', 'dBTCh;2%Xv'),
 ('bD?R}i8_[c', 'B0j5`h}ycY'),
 ('Lol+XIvY21', 'AUQ5QqT7N~'),
 ('Qlib4)q2Hk', 'Lg|45@I{1+'),
 ('pwwZu{7f~(', 'CpZYay1jbg'),
 ('qFuGdDx^Yv', 'omFN1!]szI'),
 ('Cf2@;p<aL', 'DRY)+ITFX-'),
 ('t2&ri|[Un:', 'c7[u_eSWiy'),
 ('dbP/Cj}sB+', 'yychoEU/n9'),
 ('wa>{k!2cXc', 'x=Gm50ksY@'),
 ('5JJ2]i)p4', 'ch9]RU,k}a'),
 ('s>f40rn,O]', 'J]3b`qj!hC'),
 ('ssbyA9}]QP', 'D((j`lUo!d'),
 ('vKx<0Qa!aP', 'fyeM9@jJW0'),
 ('fkq7lhLkdH', 'x}$b4LJvm3')]

def replace_guids(mw, mapping):
    for guid_i, guid_f in mapping:
        # These should NOT be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_f)
        if not len(ids) == 0:
            print(f"GUID {guid_f} already exists as note id(s) {ids}!")
            print("You either already have the deck with the correct GUIDs or something's gone wrong.")
            print("Aborting GUID-replacement operation!")
            return 1
        # These should be present.
        ids = mw.col.db.execute("SELECT id FROM notes WHERE guid = ?", guid_i)
        if not len(ids) == 1:
            print(f"Warning: note with GUID {guid_i} does not exist!")
            # not aborting — the user might have simply deleted some notes
    for guid_i, guid_f in mapping:
        # Not doing everything in one go with `executemany` for readability.
        mw.col.db.executemany("UPDATE notes SET guid = ? WHERE guid = ?", [(guid_f, guid_i)])
    # We need to force a full sync!
    mw.col.db.execute("update col set scm=?", int(time.time() * 1000))
    print("GUID replacement was successful! "
          "If you use AnkiWeb, a full upload will be needed next time you sync!")

replace_guids(mw, guid_mapping)

From v4.0

Clone this wiki locally