
    #'j	                        % S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
JrJr  SSKJr  SSKJr  SSKJrJrJr  SSKJr  SSKJr  \R6                  R9                  S\" \" \5      R>                  5      5        \R6                  R9                  S\" \" \5      R>                  R>                  5      5        \R6                  R9                  S\" \" \5      R>                  R>                  S-  5      5         SSK r!Sr" SSK&r'SSK(r)SSK*r+SSK,r-\'R\                  " 5         \-R^                  " 5         \%" SSS9  Sr00 r2\" S5      S-  S-  r3\" S5      r4\" S5      r5\" S5      r60 r7GSS\S\S\4S jjr8SSSSSSSS S!S".S#.S$S%SS&S'S(S)S*S+S,S,S-S.S/S0.S#.S1S2SS3S4S5S6S7S8S9S:S;S<S=S>S?.S#.S@SASSBSCSDSESFSGSHSISJ.S#.SKSLSMSNSOSPSQ.0SR.SSSTSUSVSWSX.SR.SYSZSS[S\S]S^S_S`.S#.SaSbSScSdSeSfSgSh.S#.SiSjSk0SR.Sl.	r9Sm\:Sn\:So\:S\;\<\<\<\<4   4Sp jr=0 r>\?\@Sq'   \R                  " 5       rB\" \5      R>                  Sr-  rC\" \5      R>                  R>                  Ss-  St-  rD/ rE\F\@Su'   \R                  " 5       rG\R                  " 5       rISv\Sw\Sx\<Sy\<Sz\SS4S{ jrJS| rK\R                  " \KSS}9rM\MR                  5         0 rO\?\@S~'   \R                  " 5       rP\" \5      R>                  S-  rQSrRSrSSrTSS0rU\?\@S'   \R                  " 5       rVSrWSrX\" S5      rY\YS-  rZ\YS-  r[\YS-  r\\" S5      r]\" S5      r^0 r_\?\@S'   \R                  " 5       r`0 ra\?\@S'   \R                  " 5       rbSrcSSSSS.rd\?\@S'   \R                  " 5       reSSSSSS.rf\?\@S'   \R                  " 5       rg0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_E0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_ESSSSS.ErhGS \S\?4GS jriGS rjGS\:S\4GS jrkS\4GS jrlGS\S\4GS jrmGS\GS	\?S\F4GS
 jrnGSGS\GS\GS\:GS\GS\S\4GS jjroGSS\S\S\4GS jjrpGSGS\GS\GS\:S\4GS jjrqGSGS\GS\GS\:S\4GS jjrrGSGS\GS\GS\:S\4GS jjrsGS\GS\GS\:S\4GS jrtGS\?S\F\   4GS jruGS\?GS\GS\:S\?4GS jrvGS\?S\4GS jrwGS\GS	\?S\4GS  jrxGS	GS!\GS	\?GS\GS"\yS\4
GS# jjrzGS$\GS!\GS\S\4GS% jr{GS&\?S\4GS' jr|GS(\?GS	\?S\4GS) jr}GS	\?GS\?S\4GS* jr~GS	\?S\4GS+ jrGS,\4GS- jrGS\GS	\?S\4GS. jrGS
GS\GS/\?GS\?GS\?GS&\?S\4GS0 jjrGS,\GS\4GS1 jr0 r\?\@GS2'   \R                  " 5       rGS3rS\?4GS4 jrS\?4GS5 jrS\4GS6 jrGS\S\F4GS7 jrS\?4GS8 jrS\S-  4GS9 jrGS:\SS4GS; jrGS
GS<\GS=\GS/\?S-  GS:\S-  4GS> jjrGS?\S\4GS@ jrGSA\GSB\S\S-  4GSC jrS\4GSD jrGSGS\GSE\S\F4GSF jjrGSGSG\GSH\?S\?4GSI jjrGS\S\F4GSJ jrSv\GSK\GSL\yGSM\SS4
GSN jrS\F4GSO jrSv\GSP\SS4GSQ jrGSSv\GSR\GS?\GSS\SS4
GST jjr\QGR3                  5       (       a   \GR4                  " \QGR7                  5       5      rOS	r\OGR;                  5        H4  r\GR?                  GSU5      GSV;   d  M  GSW\GSU'   GSX\GSY'   GSZ\GSW'   SrM6     \(       a%  \QGRA                  \GRB                  " \OS	GS[GS\95        \" \5      R>                  GS]-  r\GRG                  SGS^9  \" \5      R>                  GS_-  r0 r\?\@GS`'   \R                  " 5       r\GRN                  " GS[5      rGSa\FSS4GSb jrS	qGSGSc jr\GRX                  " GSd\5      R                  5         \" \5      R>                  r\R>                  GSe-  r\R>                  GSf-  r\GSg-  r\GSh-  r\GSi-  r\GSj-  r\GSg-  r\GSh-  rGSk\SS4GSl jrGS/\?S\4GSm jrGS/\?GSn\S\;\y\4   4GSo jrGS/\?Sv\GSp\:GSn\S\?4
GSq jrGSn\S\;\\4   4GSr jr\R>                  GSe-  GSs-  r\R                  " 5       rGSt rGSu rGSv r\R>                  GSw-  r\GSg-  r\R>                  GSx-  GSy-  GSw-  rGS \S\4GSz jrSv\S\4GS{ jrSv\S\4GS| jrSv\S\?4GS} jrSv\Sw\S\4GS~ jrGSSv\GS\S\F\   4GS jjrGS\GS\SS4GS jrGSSv\GS\?S-  S\?4GS jjrSv\S\?4GS jrSv\GS\?GS\GS\S\?4
GS jr\" \5      R>                  R>                  GS-  r\" \5      R>                  R>                  GS-  rGSrGSrGSGS/rS\4GS jrS\y4GS jrS\;\y\:4   4GS jrGS r\" \5      R>                  R>                  GS-  r\" S5      r\" \5      R>                  R>                  GS-  r\" \5      R>                  R>                  GS-  GS-  r\" \5      R>                  R>                  GS-  r\" \5      R>                  R>                  GS-  GS-  r\" \5      R>                  R>                  GS-  r\GRG                  SGS^9  0 r\" \5      R>                  R>                  GS-  r\" \5      R>                  GS-  r\" \5      R>                  GS-  r\" \5      R>                  R>                  GS-  rGSrS\4GS jrS\4GS jrS\4GS jrGS\SS4GS jrGS\GS\GS\SS4GS jrGS\GS\GS\<4GS jrGS\GS\GS\<4GS jrGS\S\?4GS jrGSk\S\F4GS jrGSk\GS\?SS4GS jr\R>                  GS-  r\GS-  r\GS-  r\GS-  r\GS-  rGS\?S\4GS jrGS\?S\?4GS jrS\?4GS jrGSGS\:S\?4GS jjr  GSGS\GS\GS\GS\GS\GS\S\?4GS jjrGSGS\GS\GS\S\?4GS jjrGS/\?S\?4GS jrS\?4GS jrGSdGSGSGSGS.GSdGSGSGSGS.GSGSGSGSGS.GSGSGSGSGS.GSGSGSGSGS.GSGSGSGSGS.GS.rGSdGSGSGSGS.rGSrGS\GS\?S\<4GS jrGS\S\?4GS jrS\F4GS jrGS\S\y4GS jGr S\F4GS jGrGS\GS/\?4GS jGr " GS GS\5      GrGSGrGS GrGSGS jGrGSGrGS GrGSGS jGr	GS Gr
G\GS:X  Ga  \GR                  " \5        \CGRG                  SSGS9  \R                  " G\
SGSGS9R                  5          " GS GS\\5      GrG\" GS\4G\5      Gr\%" GS\ 3SS9  GSGrG\" GS \GS-  \GS-  \GS-  \GS-  4 5       S5      GrG\" GS \GS-  \GS-  \GS-  \GS-  4 5       S5      GrG\(       Ga  G\(       Ga  SSGKGrG\GR*                  " G\GR,                  5      GrG\GR1                  \" G\5      \" G\5      GS9  G\" GSG\4G\5      GrG\GR5                  G\GR6                  SGS9G\Gl        \R                  " G\GR8                  SGSGS9R                  5         \%" GSG\ 3SS9  G\GR*                  " G\GR,                  5      GrG\GR1                  \" G\5      \" G\5      GS9  \R                  " G\G\G\4SGSGS 9R                  5         G\GR*                  " G\GR,                  5      GrG\GR1                  \" G\5      \" G\5      GS9  \R                  " G\	G\G\4SGSGS 9R                  5         O\\%" GSG\ GS3SS9  \R                  " G\G\S4SGSGS 9R                  5         \R                  " G\	G\S4SGSGS 9R                  5         G\GR9                  5         gg! \# a  r$S	r"\%" S
\$ 3SS9   Sr$C$GN$Sr$C$ff = f! \# a  r1S	r0\%" S\1 3SS9   Sr1C1GNSr1C1ff = f! \# a     GNf = f(  ub   Minimal Cockpit Server — statische Dateien + Wohnung-Daten API. Port 8089 (HTTP) + 8090 (HTTPS).    N)
HTTPServerSimpleHTTPRequestHandler)ThreadingMixInPath)urlparseparse_qs	urlencodechatgpt_bridgeTFz([cockpit] song_erkennung nicht geladen: flushz9[cockpit] Cherry-Inbox-Watcher + Watson-Reaktor gestartetz&[cockpit] Cherry-Inbox nicht geladen: z;/Users/victorholland/Vibe Coding/Voice Output/watson_voicesraw_sourcesspotifyzN/Users/victorholland/Vibe Coding/dispatcher/flaneur/flaneur_public_tokens.jsonzP/Users/victorholland/Vibe Coding/dispatcher/cockpit/flaneur_latest_location.jsonzK/Users/victorholland/Vibe Coding/dispatcher/cockpit/flaneur_route_log.jsonl serviceaccountreturnc                    X4nU[         ;   a	  [         U   $  SSSU /nU(       a  USU/-  nUS/-  n[        R                  " US[        R                  S9R	                  5       nU[         U'   U$ ! [
         a    Sn Nf = f	Nsecurityfind-generic-password-s-a-wTtextstderrr   )_TILE_KEY_CACHE
subprocesscheck_outputDEVNULLstrip	Exception)r   r   	cache_keycmdvals        L/Users/victorholland/Vibe Coding/dispatcher/cockpit/sancho_cockpit_server.py_flaneur_keychainr(   5   s    "IO#y))2D'BD'?"Cv%%cZ=O=OPVVX "%OIJ  s   AA/ /A>=A>mapboxmapbox-tokenbeachorchestrazmapbox/streets-v12zmapbox/outdoors-v12zmapbox/light-v11zmapbox/dark-v11zmapbox/satellite-streets-v12zmapbox/navigation-night-v1)streetsoutdoorslightdark	satelliteznavigation-night)kindr   r   stylesthunderforestthunderforest-apicycleatlas	landscaper-   	transporttransport-dark
spinal-mapmobile-atlaspioneerneighbourhood)r5   r6   r7   r-   r8   r9   spinalr:   r;   r<   r=   maptilerzmaptiler-apizaquarelle-v4zbackdrop-v4zbase-v4z
dataviz-v4zlandscape-v4z
outdoor-v4zsatellite-v4z	hybrid-v4z
streets-v4ztoner-v2ztopo-v4z	winter-v4)	aquarellebackdropbasedatavizr7   outdoorr0   zsatellite-hybridr,   tonertopowinterstadiazstadia-maps-api)stamen_watercolorjpg)stamen_tonerpng)stamen_toner_literL   )stamen_terrainrL   )r-   rL   )alidade_smoothrL   )alidade_smooth_darkrL   )
osm_brightrL   )
watercolorrE   z
toner-liteterrainr-   zalidade-smoothzalidade-smooth-dark
osm-brightwms3857zluftbild-1928z3https://gdi.berlin.de/services/wms/luftbild_1928_04c_luftbilder_1928_04_raster	image/pngtrue)urllayersformattransparent)r1   r2   arcgis-tilez]https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}z^https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}z`https://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}zchttps://server.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServer/tile/{z}/{y}/{x})imageryrF   natgeozshaded-reliefjawgzjawg-apizjawg-streetszjawg-terrainz
jawg-sunnyz	jawg-darkz
jawg-light)r,   rS   sunnyr/   r.   geoapifyzgeoapify-apirT   	osm-cartoklokantech-basicpositrondark-matter)rT   rc   rd   re   rf   templatestandardz;https://www.openhistoricalmap.org/ohm_tiles/{z}/{x}/{y}.png)	r)   r3   r?   rH   berlinarcgisr`   rb   openhistoricalmapzxyc                 &  ^ SU -  nX-  S-  S-
  nUS-   U-  S-  S-
  n[         R                  " [         R                  " [         R                  " [         R                  SSU-  U-  -
  -  5      5      5      n[         R                  " [         R                  " [         R                  " [         R                  SSUS-   -  U-  -
  -  5      5      5      nSmS[
        S[
        S[        [
        [
        4   4U4S	 jjnU" XG5      u  pU" XV5      u  pXX4$ )
N   g     v@g     f@   g   @TXAlonlatr   c           	         > T[         R                  " U 5      -  nT[         R                  " [         R                  " [         R                  S-  [         R                  " U5      S-  -   5      5      -  nX#4$ )N   rp   )mathradianslogtanpi)rr   rs   mxmyradiuss       r'   merc$_flaneur_xyz_bbox_3857.<locals>.merc   sT    dll3''dhhtxx!dll36G!6K(KLMMv    )rv   degreesatansinhrz   floattuple)rl   rm   rn   nlon_wlon_elat_nlat_sr~   minxminymaxxmaxyr}   s                @r'   _flaneur_xyz_bbox_3857r      s    	QAEEME!EUaK%%'ELL499TWWAEAI-F#GHIELL499TWWAQK!O8K-L#MNOEF% e eUl(; 
 e#JDe#JDt!!r   RB_JOBSreiseberichtereiseberichtzreisebericht_v2.pyRB_QUEUEjob_idnamers   lngaddressc                 ^  ^  SSK nSSKn/ SQnSSSSSS	S.nS1U 4S
 jjn	U	" SSS9   SSKn
SSKn0 [	        S5      R
                  EnSUS'   SUR                  SS5      -   US'    UR                  / SQSUR                  S9R                  5       nU(       a  XS'    UR                  / SQSUR                  S9R                  5       nU(       a  XS'   U
R                  [        [        5      S[        U5      S[        U5      SS/nU(       a  USU/-  nUR                  XR                  UR                   SSU[        [        R"                  5      S 9nSnSnUR$                   H  nUR'                  5       nU(       d  M  [(           [*        T    R-                  S!/ 5      R/                  U5        SSS5        UR1                  5        H,  u  nnUR3                  UUUR4                  5      (       d  M*  Un  O   U	" UUSS" S9  UR3                  S#U5      nU(       d  M  [7        UR9                  S5      5      R:                  nM     UR=                  5         UR>                  S:w  a	  U	" S$S%US&9  gU(       dI  [@        RC                  SSS'9  [E        [@        RG                  S(5      S) SS*9nU(       a  US   R:                  nU(       a
  U	" S+S,S-US.9  gU	" S$S/S,S&9  g! [         a     GNGf = f! [         a     GN!f = f! , (       d  f       GNQ= f! [         a  nU	" S$[        U5      S09   SnAgSnAff = f)2uM   Läuft in eigenem Thread. Ruft reisebericht_v2.py auf und trackt Fortschritt.r   N)geocodepoiswetterr   ttsmixzPosition:|Hole GeozOverpass|POIzWetter|Open-MeteozGeneriere Text|Text:z!Erzeuge Sprach|Stimme gespeichertzHintergrundmusik|Mix|fertigc                 
  > [            [        T   R                  UU =(       d    [        T   R                  SS5      US.5        U(       a  U[        T   S'   U(       a  U[        T   S'   S S S 5        g ! , (       d  f       g = f)Nstepr   )statusr   detailfilenameerror)RB_LOCKr   updateget)r   r   r   r   r   r   s        r'   _set_rb_run.<locals>._set   sh    FO"" F 3 3FI F $ 
 x4u1 WWs   A#A44
Br   u	   Starte…)r   r   os1PYTHONUNBUFFEREDz%/opt/homebrew/bin:/opt/homebrew/sbin:PATHz/usr/bin:/bin:/usr/sbin:/sbinr   r   r   	anthropicr   Tr   ANTHROPIC_API_KEYr   r   r   11labsr   ELEVENLABS_API_KEYz--latz--lngz--modestaticz--namerq   )stdoutr   r   bufsizeenvcwd	debug_logx   zGespeichert: (.+\.mp3)r   zScript mit Fehler beendet)r   r   r   parentsexist_ok*.mp3c                 6    U R                  5       R                  $ Nstatst_mtimeps    r'   <lambda>_rb_run.<locals>.<lambda>+  s    QVVXEVEVr   keyreversedoner   zFertig!)r   r   r   r   zKeine MP3-Datei erzeugtr   r   )Nr   runningNN)$retimesysr   
__import__environr   r    r!   r"   r#   
executablestr	RB_SCRIPTPopenPIPESTDOUTparentr   rstripr   r   
setdefaultappenditemssearch
IGNORECASEr   groupr   wait
returncodeRB_OUTPUT_DIRmkdirsortedglob)r   r   rs   r   r   _re_timestepsstep_patternsr   _sys_spr   akekr%   proccurrent_step	last_fileliner   patmmp3sexcs   `                        r'   _rb_runr      s   #?E("'*71M= 	i,G--*D!))*"%=Po@ppF	!!"`'+CKK " AAF +-'(	!!"]'+CKK " AAF ,.()
 OOS^c#hc#hh	
 Hd##CyyXXcjj"A3 !1!12  4 !	KKD;;=D**;;BB4H  +002	c::c488#'L 3 l4:6

4d;Aq ,11	  " 			??a'BV t<-,,W5;V`deDaYU9yQ'@uMs  		  		, :  -G3s8,-s   <L $6K 6K% B2L )K6,>L .'L AL *A L L 
K"L !K""L %
K3/L 2K33L 6
L	 L 
L,L''L,c                     SSK n  [           [        (       d0  [        R	                  5         U R                  S5         SSS5        MC  [        R                  S5      nSSS5        [           [        R                  W5      nSSS5        W(       d  M  [        R                  5         [        WUS   US   US   US   5        M  ! , (       d  f       Nl= f! , (       d  f       NY= f)uI   Verarbeitet die Reisebericht-Queue sequenziell. Läuft als Daemon-Thread.r   N      ?r   rs   r   r   )r   RB_QUEUE_LOCKr   
RB_RUNNINGclearsleeppopr   r   r   setr   )r   r   jobs      r'   _rb_queue_workerr   6  s    
8  "C 	 ]
 \\!_F  ++f%C FSZUS^L ] Ws   2CC+C
C
C"targetdaemonRD_JOBSzrealdebrid_downloads.jsonz$https://api.real-debrid.com/rest/1.0zhttp://127.0.0.1:9117 5ilxo38md8ddd7mab6fm0cfo27fdtnahcookie_JACKETT_SESSIONzhttp://127.0.0.1:8080 75431768c0314f748ea42f7a25849361z3/Users/victorholland/Vibe Coding/dispatcher/stimmenaudibleytdlpaudiozJ/Users/victorholland/Vibe Coding/dispatcher/tools/audible_venv/bin/audiblezE/Users/victorholland/Vibe Coding/dispatcher/tools/nzbgeek_config.json_YTDLP_JOBS_ANTHROPIC_COSTS_CACHE  idler   r   progressr   	_SU_BUILD)r   r   r  r   option
_SU_DEEPER
ferienhaus
FerienhaushotelHotel	apartment	ApartmentoffenOffenfelsenu
   Felsküste
sandstrand
SandstrandlebendigzLebendig & buntumziehenzMehrere OrtekroatienKroatien	slowenien	Slowenien
montenegro
MontenegroitalienItaliengriechenlandGriechenlandtuerkei   Türkei	schwimmen	SchwimmenschnorchelnSchnorchelnfotografierenFotografierenandere_kidszAndere KidsgamingGamingfahrradFahrrad
entspannen
Entspannen
spielplatz
SpielplatzsandburgSandburgeisEisessenbooteBootelesenLesenkulturKulturessenz	Gut essenweinWein	nichtstun	NichtstunabendAbendpromenadensportSportshoppenShoppenselbstzSelbst kochen
supermarktu   Supermarkt in der NähekinderzKinderfreundliche RestaurantsklimaKlimaanlagewaschmaschineWaschmaschine	parkplatz	Parkplatzu   spüliu   SpülmaschinepoolPoolbalkonBalkon	meerblick	MeerblickzugZugzug_jazZug (gerne)	zug_preisu   Zug (wenn günstiger)flugFlugzeugflug_rechercheu   Flüge recherchieren
auto_eigenzEigenes AutoegalzEgal wiepreisu   Was günstiger istzAdria (offen)zAlles offenzFestgelegtes ZielzMietauto vor Ort)ja_adriaja_offenneinmietenrawc                   ^	 SS K m	U R                  5       n S nU	4S jnT	R                  SSU 5      R                  5       nSU;   a  U" U5      OUnXB" U5      4 H  n [        R                  " U5      s  $    U" U 5      nU" U5      n [        R                  " U5      $ ! [        R
                   a     M\  f = f! [        R
                   a>  n[        R
                  " SUR                   3UR                  UR                  5      eS nAff = f)Nr   c                    SnSnSnSn[        U 5       Hj  u  pVU(       a  SnM  U(       a  US:X  a  SnOUS:X  a  SnM*  US:X  a  SnM4  US:X  a  US:X  a  UnUS-  nMI  US	:X  d  MQ  US-  nUS:X  d  M^  Uc  Mc  XUS-    s  $    U $ )
zMWalk string respecting quoted strings to find the first complete {...} block.r   FN\T"{rq   })	enumerate)sdepthin_strescstartics          r'   _grab_first_object,_su_extract_json.<locals>._grab_first_object  s    aLDA9C#X"FCxcA:E
c
A:%"31q5>)' !( r   c                 T   > TR                  SSU 5      n TR                  SSU 5      n U $ )Nz [\x00-\x08\x0b\x0c\x0e-\x1f\x7f]r   z,\s*([\}\]])z\1)sub)rw  _re_js    r'   _repair!_su_extract_json.<locals>._repair  s-    II92qAIIoua0r   z```[a-zA-Z]*\n?r   rt  zJSON-Repair fehlgeschlagen: )	r   r"   r  jsonloadsJSONDecodeErrormsgdocpos)
ro  r~  r  stripped	candidateattempt
candidate2	repaired2er  s
            @r'   _su_extract_jsonr    s    
))+C8 yy+R5;;=H03x"8,XIwy12	::g&& 3 $C(J
#IYzz)$$ ## 		  Y""%A!%%#I155RSRWRWXXYs*   BB9 B65B69D9DDc                     [        U [        5      (       a  SR                  S U  5       5      $ [        R	                  [        U 5      [        U 5      5      $ )N, c              3   L   #    U  H  n[         R                  X5      v   M     g 7fr   _TAG_LABELSr   .0rm   s     r'   	<genexpr>_su_tag.<locals>.<genexpr>  s     :1..s   "$)
isinstancelistjoinr  r   r   )vs    r'   _su_tagr    s=    !Tyy::::??3q63q6**r   kwc                     SS K nUR                  R                  SU S5      nX!R                  SS9-   nSU  SUR                   SUR                  S	5       S
UR                   SUR                  S	5       S3$ )Nr     rq      daysKW  (.z%b   –))datetimedatefromisocalendar	timedeltadaystrftime)r  r  monsuns       r'   _su_week_labelr    sw    
--
'
'b!
4C
"""*
*CBswwiqd!3 4Cy#,,tBTAUUVWWr   c                       SS K n U R                  / SQSU R                  S9R                  5       $ ! [         a     gf = f)Nr   r   Tr   r   r   r    r!   r"   r#   )r   s    r'   _su_anthropic_keyr    sK     Jckk   
 %'	  s   .1 
>>queryc                 X    [         R                  " / SQS[         R                  S9R                  5       nU(       d  gSSKJn  SSKJn  UR                  U  S35      nSU S	3nUR                  US
U 3SS.S9nUR                  USS9 n[        R                  " UR                  5       5      nSSS5        WR                  S/ 5      n	U	(       a%  U	S   R                  S0 5      R                  SS5      $  g! , (       d  f       NN= f! [         a  n
[!        SU
 3SS9   Sn
A
gSn
A
ff = f)uA   Holt ein Destination-Foto von Unsplash. Gibt URL zurück oder ''.r   r   r   unsplash-apir   Tr   r   r   Nz travel landscape destination-https://api.unsplash.com/search/photos?query=z!&per_page=3&orientation=landscape
Client-ID v1AuthorizationAccept-Versionheaders   timeoutresultsurlsregularz[unsplash] r   )r   r    r!   r"   urllib.requestrequesturllib.parseparsequoteRequesturlopenr  r  readr   r#   print)r  r   _ur_upqrY   reqrespdatar  r  s              r'   _su_fetch_unsplashr    s   -%%Mj00227%' 	 299II<=>=aS@abkk#:cU9K_c'dke[[a[(D::diik*D )((9b)1:>>&"-11)R@@   )(
  -A3t,-s6   ;D AD 
%C7/AD 7
DD 
D)D$$D)option_namedc                 ^	  ^^^^^  [         R                  " / SQS[         R                  S9R                  5       mT(       d  / $  SSKJm  SSKJm  U R                  5       m[        U4S jS 5       5      (       a  SnS	nGOn[        U4S
 jS 5       5      (       a  SnSnGON[        U4S jS 5       5      (       a  SnSnGO.[        U4S jS 5       5      (       a  SnSnGO[        U4S jS 5       5      (       a  SnSnO[        U4S jS 5       5      (       a  SnSnO[        U4S jS 5       5      (       a  S nS!nO[        U4S" jS# 5       5      (       a  S$nS%nO[        U4S& jS' 5       5      (       a  S(nS)nOs[        U4S* jS+ 5       5      (       a  S,nS-nOT[        U4S. jS/ 5       5      (       a  S0nS1nO5U R                  S25      S   R                  S35      S   R                  5       o"nUR                  S4/ 5      nUR                  S5/ 5      nUR                  S6/ 5      nUR                  S7/ 5      nUR                  S8/ 5      nU S93S:U 34U S;3S<4U S=3S>U 34U S?3S@4U SA3SB4U SC3SDU 34U SE3SF4U SG3SH4/n	SIU;   a  U	R                  U SJ3SK45        O3SLU;   a  U	R                  U SM3SN45        OU	R                  U SO3SP45        SQU;   a  U	R                  U SR3SS45        O3STU;   a  U	R                  U SU3SV45        OU	R                  U SW3SX45        SYU;   a  U	R                  Sm5        OU	R                  U SZ3S[45        S\U;   a  U	R                  U S]3S^45        S_U;   d  S_U;   a  U	R                  U S`3Sa45        U Sb3ScU 34U Sd3SeU 34U Sf3Sg4/n
[        U	5      Sh:  a:  U
(       a!  U	R                  U
R                  S5      5        OO[        U	5      Sh:  a  M:  S/[        U	5      -  mUUUU4Si jn[!        U	5       VVVs/ s H  u  nu  p["        R$                  " XX4SSj9PM!     nnnnU H  nUR'                  5         M     U H  nUR)                  SkSl9  M     T Vs/ s H  nU(       d  M  UPM     sn$ ! [         a    / s $ f = fs  snnnf s  snf )nzPFetches 10+ gallery images from Unsplash tailored to destination + family prefs.r  Tr   r   Nc              3   ,   >#    U  H	  oT;   v   M     g 7fr    r  rm   dls     r'   r  $_su_fetch_gallery.<locals>.<genexpr>  s       B  Aq7  A   )
r"  	dalmatiensplit	dubrovnikistrienrovinjmakarskabrelahvaru   korčulazDalmatia Croatiau   Kroatien · Adriac              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r    s     on"Wnr  )r*  korfu	zakynthos
kephalonia
peloponneskretaionischzGreek islands Greecer+  c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r    s     FE"WEr  )r&  kotorperastbudvazMontenegro Kotor Bayr'  c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r    s     >="W=r  )albaniensarandaksamilzAlbania RivieraAlbanienc              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r    s     @?"W?r  )r$  piranu	   portorožzSlovenia Adriatic coastr%  c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r    s     IH"WHr  )portugalalgarvelagos	albufeirazAlgarve Portugalu   Portugal · Algarvec              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r    s     [Z"WZr  )spanienmallorcazcosta bravavalencia
katalonienzSpain Mediterranean coastSpanienc              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r         RQ"WQr  )
frankreichu   côtenizzaantibesprovencezFrench Rivierau   Südfrankreichc              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r    s     ^]"W]r  )r(  sizilientoskanaapulienamalfi	sardinienzItaly Mediterraneanr)  c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r    r  r  )u   türkeibodrumantalyafethiyemarmariszTurkey Aegean coastr-  c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r    s     (i"Wir  )maltazMalta islandMalta:(jannothedepinamathiasheidrunz beach turquoise wateru
   Strand · z old town historic villageu    Altstadt · historisches Zentrumz sea swimming crystal clearu   Kristallklares Wasser · z harbor port boatsu(   Hafen · Bootsausflüge & Inseltransfersz local food seafood restaurantu'   Lokale Küche · frische Meeresfrüchtez nature landscape scenicu   Landschaft & Natur · z sunset evening coastalu    Abendstimmung · Sonnenuntergangz village street local lifeu   Lokales Leben · Dorf & Gassenr0  z snorkeling underwater fishu.   Schnorcheln für Janno (14) · Unterwasserwelttauchenz scuba diving underwateru   Tauchen für Janno (14)z beach kids playingu   Strand · Spaß für Janno (14)radz cycling bike path coastalu'   Radfahren für Thede (11) · Küstenwegwandernz hiking trail scenicu#   Wandern für Thede (11) · Aussichtz water sports kayak paddleu   Wassersport für Thede (11)r[  z children family fun beachu+   Strand für Pina (7) · Sandburgen & WellenrH  z wine local wineryu,   Weinkultur für Mathias · regionale TropfenrG  z gourmet dinner outdoor terraceu0   Abendessen auf der Terrasse · Mathias & Heidrunz family vacation summeru   Familienurlaub · z aerial coast drone viewu#   Küste aus der Vogelperspektive · z market local produceu    Lokaler Markt · frische Zutaten
   c           
      4  >  TR                  U5      nSU S3nTR                  UST 3SS.S9nTR                  USS9 n[        R                  " UR                  5       5      nS S S 5        WR                  S	/ 5      nU(       a[  US
   n	U	S   n
SnU	S   S   U	S   S   U	R                  S5      =(       d    US S UU	S   S   U	S   S   S    SU 3SU
 SU 3S.TU '   g g ! , (       d  f       N= f! [         a  n[        SU SU 3SS9   S nAg S nAff = f)Nr  z5&per_page=3&orientation=landscape&content_filter=highr  r  r  r  r%  r  r  r   idz1utm_source=watson_reiseplaner&utm_medium=referralr  r  smallalt_descriptionr   userr   linkshtml?zhttps://unsplash.com/photos/)rY   thumbaltcaptioncredit_name
credit_url	photo_urlz[gallery] "z": Tr   )	r  r  r  r  r  r  r   r#   r  )r|  r  r0  r  rY   r  r  r  photosr   pidutmex_up2_ur2r   r  s                r'   _one_su_fetch_gallery.<locals>._oneB  sG   	<

5!AA!DyzC,,s
3%>Pdh,i,jCc2.$zz$))+. /XXi,F1IgIvYy1vYw/ee$56A'4CH&#$V9V#4%&vYw%7%?$@#"G$@Qse"L
	  /.   	<Kwc".d;	<s0   =C3  %C"%A;C3 "
C0,C3 3
D=DDr  argsr     r  )z!outdoor pool Mediterranean summeru-   Pool für Pina (7) · Plantschen & Entspannen)r   r    r!   r"   r#   r  r  r  r  loweranyr  r   r   lenr   rv  	threadingThreadr{  r  )r  r  placelocr  r  r  rv   heidqcextrasr:  r|  r  r}  tstrr8  r9  r  r   r  s                     @@@@@r'   _su_fetch_galleryrL    s   %%Mj00227%' 	 I 
 87 
			B
  B  A  B  B  B"*=C	ono	o	o&n	FEF	F	F&l	>=>	>	>!3	@?@	@	@)3	IHI	I	I"*?C	[Z[	[	[+9S	RQR	R	R (8#	^]^	^	^%Ys	RQR	R	R%Ys	(i(	(	(g!!#&q)//4Q7==?EE'2EEE'2EEE&"DEE)R DEE)R D 7(	)Jse2DE7,	-5UW7-	.5Nse3TU7$	%5]_70	15\^7*	+5KC53QR7)	*5UW7,	-5SU	
B 
		eW78<lmn	e	
		eW45<UVW
		eW/0<]^_~
		eW67<efg	e	
		eW01<abc
		eW67<YZ[~
		lm
		eW67<ijk~
		eW./<jkl$'T/
		eW;<=opq 7)	*4Fse2LM7*	+4WX[W\2]^7'	(2TUF
 b'B,299VZZ]+ b'B, FSW$G< <0 W``bVc	dVcFQ)

$Yt
DVcB	dR#R$w!!Aw$$c  	\ 
e %s#   <R &R#9R*R*R R api_keyprompt
max_tokensmodelprefillc                    SS K Jn  SUS./nU(       a  UR                  SUS.5        [        R                  " UUUS.5      R                  S5      nUR                  SUU SS	S
.SS9nUR                  USS9 n	[        R                  " U	R                  5       R                  S5      5      n
S S S 5        W
R                  S/ 5      nU(       a#  US   R                  SS5      R                  5       $ S$ ! , (       d  f       NL= f)Nr   r*  rolecontent	assistantrP  rO  messagesutf-8%https://api.anthropic.com/v1/messages
2023-06-01application/json	x-api-keyanthropic-versionContent-TypePOSTr  r  methodZ   r  rU  r   r   )r  r  r   r  dumpsencoder  r  r  r  decoder   r"   )rM  rN  rO  rP  rQ  r  rX  payloadr  r  r  rU  s               r'   _su_call_clauderi  `  s     F34HABjj   vg	 
 ++/ !-.

   	C 
S"	%zz$))+,,W56 
&hhy"%G1871:>>&"%++-@b@ 
&	%s   74C11
C?c           	           SS K nUR                  SSSU SUS/SUR                  S9R                  5       $ ! [         a     g	f = f)
Nr   r   r   r   r   r   Tr   r   r  )r   r   _sp2s      r'   _su_api_keyrl  y  s\    !  0$wPTUdll ! 
 %'	  s   36 
AAr   c                    SS K Jn  [        R                  " SSUS./US.5      R	                  S5      nUR                  SUSU  3S	S
.SS9nUR                  USS9 n[        R                  " UR                  5       R                  S5      5      nS S S 5        WS   S   S   S   R                  5       $ ! , (       d  f       N*= f)Nr   sonarr*  rS  rP  rX  rO  rY  z*https://api.perplexity.ai/chat/completionsBearer r\  r  r`  ra  rb  <   r  choicesmessagerU  r  r  r  re  rf  r  r  r  r  rg  r"   )r   rN  rO  r9  rh  r  r  r  s           r'   _su_call_perplexityrv    s    !jj$89   vg	 
 ,,4$+C5/CUV	  C 
c2	&$zz$))+,,W56 
'	?1i(399;; 
'	&   4B44
Cc                    SS K Jn  [        R                  " SSUS./US.5      R	                  S5      nUR                  SUSU  3S	S
.SS9nUR                  USS9 n[        R                  " UR                  5       R                  S5      5      nS S S 5        WS   S   S   S   R                  5       $ ! , (       d  f       N*= f)Nr   gpt-4o-minir*  rS  ro  rY  *https://api.openai.com/v1/chat/completionsrp  r\  rq  ra  rb  rr  r  rs  rt  rU  ru  )r   rN  rO  _ur3rh  r  r  r  s           r'   _su_call_openair|    s    !jj$89   vg	 
 ,,4$+C5/CUV	  C 
c2	&$zz$))+,,W56 
'	?1i(399;; 
'	&rw  c                    SS K Jn  [        R                  " SSU0/0/USS.S.5      R	                  S5      nSU  3nUR                  XTS	S
0SS9nUR                  USS9 n[        R                  " UR                  5       R                  S5      5      nS S S 5        WR                  S0 /5      S   R                  S0 5      R                  S0 /5      n	U	S   R                  SS5      R                  5       $ ! , (       d  f       Nh= f)Nr   partsr   皙?)maxOutputTokenstemperature)contentsgenerationConfigrY  z]https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=r`  r\  ra  rb  rr  r  
candidatesrU  r   )r  r  r  re  rf  r  r  r  r  rg  r   r"   )
r   rN  rO  _ur4rh  rY   r  r  r  r~  s
             r'   _su_call_gemini_verifyr    s    !jj 01230:3O  vg  jjmin
oC
,,s>CU2V_e,
fC	c2	&$zz$))+,,W56 
'HH\B4(+//	2>BB7RDQE8<<#))++ 
'	&s    4C66
D
facts_textr  budgetc                     SU SUS SU  S3$ )Nuw   Du bist ein unabhängiger Reise-Faktenchecker. Prüfe folgende Angaben für eine Familienreise (5 Personen, Berlin → z, 2 Wochen, ~,uR    € Gesamtbudget) auf Plausibilität (Stand Sommer 2026).

ZU PRÜFENDE ANGABEN:
u<  

Antworte AUSSCHLIESSLICH mit diesem JSON (kein Markdown, kein Text davor/danach):
{"facts":[{"claim":"Originaltext","verdict":"confirmed|plausible|uncertain|wrong","note":"Max 1 Satz Einschätzung oder Korrektur"}],"overall":"reliable|mostly_reliable|uncertain|unreliable","summary":"Ein Satz Gesamteinschätzung"}r  )r  r  r  s      r'   _su_verify_promptr    sQ     G  HN  GO  O\  ]c  de  \f f  mp pr   recsc                    / nU R                  S/ 5       HF  nUR                  S5      (       d  M  UR                  SUR                  SS5       SUS    S35        MH     U R                  S/ 5       HV  nUR                  S	5      (       d  M  UR                  S
UR                  SUR                  SS5      5       SUS	    S35        MX     U R                  S0 5      nUR                  S5      (       a  UR                  SUS    35        UR                  S5      (       a  UR                  SUS    35        UR                  S5      (       a  UR                  SUS    35        U R                  S/ 5      S S  HE  nUR                  S5      (       d  M  UR                  SUR                  SS5       SUS    35        MG     U(       a  U$ S/$ )Nflightsprice_estimatezFlug routeu   Berlin→Ziel: z pro Personaccommodationsprice_rangezUnterkunft 'r   typer   z': z
 pro Nachtbudget_summary
rental_carzMietauto 14 Tage: totalu   Gesamtbudget geschätzt: accommodation_totalu   Unterkunft gesamt 14 Nächte: 
activitiesrp   priceu   Aktivität 'z$Preisangaben aus der Tiefenrecherche)r   r   )r  factsfabdacts         r'   _su_extract_verifiable_factsr    s   EXXi$55!""LL5w!? @1EUCVBWWbcd % XX&+55LL<fQUU6"5E(F'Gs1]K[J\\fgh , 
"B	'B	vvl)"\*:);<=	vvg0G>?	vv#$$5b9N6O5PQRxxb)"1-777LL<r(:';3s7|nMN . 5G FGGr   c           
        ^^	^
 [        U 5      nSR                  S U 5       5      n[        XAU5      m	0 m
0 mUU	U
4S jn[        R                  " US[
        [        S5      4SS9[        R                  " US[        [        S	5      4SS9[        R                  " US
[        [        S5      4SS9[        R                  " US[        [        5       4SS9/nU H  nUR                  5         M     U H  nUR                  SS9  M     UT
TS.$ )N
c              3   ,   #    U  H
  nS U 3v   M     g7f)z- Nr  r  r  s     r'   r  '_su_run_verification.<locals>.<genexpr>  s     8ZRs8Zs   c                    >  U" / UQTP76 n[        U5      nUTU '   g ! [         a$  n[        U5      TU '   / SSU 3S.TU '    S nAg S nAff = f)N	uncertainzFehler: )r  overallsummary)r  r#   r   )	r   fnr=  ro  parsedr7  errorsrN  r  s	         r'   call_one&_su_run_verification.<locals>.call_one  se    	^#d#F#C%c*F"GDM 	^r7F4L&([xXZW[_]GDM	^s    
AAA
Perplexity
perplexityTr<  ChatGPTopenaiGeminigeminiClauderd  r  )facts_checkedsourcesr  )r  r  r  rB  rC  rv  rl  r|  r  ri  r  r{  )r  r  r  
facts_listr  r  threadsrJ  r  rN  r  s           @@@r'   _su_run_verificationr    s   -d3J8Z88Jz6:FGF^ 	>QS^_kSl/mvz{	?KX`La/bkop:PR]^fRg/hquv/K\K^/_hlm	G 		 	r  (GvNNr   verifyc                    U (       a  U R                  S5      (       d  gU S   nSSSSS.nSS	S
SS.nSn/ nUR                  5        HL  nUR                  S/ 5       H3  nUR                  SS5      nUR                  U5        US;   d  M.  US-  nM5     MN     UR                  5        V	s/ s H  oR                  SS5      PM     n
n	[        S U
 5       5      nUS:X  a  U(       d  [	        U5      nSU S3$ SnUR                  5        H  u  pUR                  SS5      nUR                  USU45      u  nnUR                  SS5      nSnUR                  S/ 5       Hs  nUR                  SS5      nUR                  USSU45      u  nnnUR                  SS5      nUR                  SS5      nU(       a  SU S3OSnUSU SU S U SU S!3	-  nMu     U(       a  S"U S3OSnUS#U S$U SU S%U S&U S'3-  nM     S(U S)U S*3$ s  sn	f )+Nr  r   )u   ✓#4caf82u
   Bestätigt)~#d4a843	Plausibel)r-  #888Unsicher)u   ✗#e05252
Abweichung)	confirmed	plausibler  wrongr  u   Zuverlässig)r  u   Überwiegend zuverlässigr  r  )r  u   Nicht zuverlässig)reliablemostly_reliabler  
unreliabler   r  verdictr  )r  r  rq   r  c              3   *   #    U  H	  oS ;   v   M     g7f))r  r  Nr  )r  os     r'   r  (_su_verification_html.<locals>.<genexpr>
  s     O;a99;   u%   <div class="verify-ok fade">✓ Alle u0    KIs bestätigen die Angaben als plausibel</div>r  r  r-  noteclaimz<div class="vf-note"></div>z7<div class="vf-row"><span class="vf-icon" style="color:">z"</span><div><div class="vf-claim"></div></div>z<div class="vs-summary">zI
<div class="vs-block">
  <div class="vs-head">
    <div class="vs-name">z0</div>
    <div class="vs-overall" style="color:z</div>
  </div>
  
  
</div>uX   
<div class="verify-section fade">
  <div class="s-label">⚠ Abweichungen gefunden — u    Angabe(n) prüfen</div>
  <div class="verify-note">Perplexity (Live-Web), ChatGPT, Gemini und Claude haben die Angaben unabhängig geprüft. Bitte markierte Punkte vor der Buchung selbst verifizieren.</div>
  <div class="vs-grid"></div>
</div>)r   valuesr   r@  rA  r   )r  r  VERDICT_MAPOVERALL_MAPdivergence_countall_verdictssrc_datafactr  rw  all_overallany_unreliabler   source_blockssrc_namer  coloroverall_labelr  	fact_rowsiconfcolor_r  r  	note_htmlsummary_htmls                              r'   _su_verification_htmlr    s   I..YG 62.1	K 0C)7	K LNN$LL"-DK0A"** A% 	 . % ;B..:JK:JQ55K0:JKKO;OON 1^L6qc9ijj M%mmo,,y+6*w8IJ},,y"-	LL"-DK0A)ooa#vq1ABOD&!88FB'DHHWb)E@D/vV<"IRSYRZZ\]a\b  cE  FK  EL  LR  S\  R]  ]i  j  jI . FM1'&ART  # $**/=/ B. + 
 	
 ..66F5G H% '	
 
C Ls   (Hdestinationc                 ~  ^
^ [        S5      m
T
(       d  SU  S3$ UR                  S/ 5      nU(       a  S[        U5       S[        U5       S3OSnS	U  S
U S3SU  S
U S3SU  S
U S3SU  S
U S3SU  S3SU  S3U  S3U  S3U  S3U  S3/
nS/[	        U5      -  mU
U4S jn[        U5       VVs/ s H  u  pg[        R                  " XVU4SS9PM     nnnU H  owR                  5         M     U H  owR                  SS9  M     / S Qn	S!R                  S" [        U	T5       5       5      =(       d    SU  S#3$ s  snnf )$Nr  u   Keine Perplexity-Daten für z (kein API-Key).wochenr  r  z 2026zJuli/August 2026z,Ferienwohnung Ferienhaus Familie 5 Personen  z> Preise pro Nacht konkrete Angebote buchbar booking.com airbnbu   Flüge Berlin BER uM    Rückflug Preise Direktflug Angebote aktuell 2026 konkrete Preise pro Personu(   Nachtzug ÖBB Nightjet EuroNight Berlin z. Preise Buchung Familie konkrete Fahrplaninfosz
Mietwagen zI 7-Sitzer Familienvan konkrete Preise 14 Tage Anbieter Check24 Sixt Hertzu)   Kinderfreundliche Aktivitäten Ausflüge z, 2026 konkrete Eintrittspreise Tipps FamiliezRestaurants Essen u0    günstig Familie lokal 2026 Empfehlungen PreiseuE    Strand Meer Tipps 2026 Familie Kinder beste Strände WasserqualitätuR    Fähre Fährverbindung lokale Inseln Fahrtzeiten Preise 2026 Familie TagesausflugzN aktuelles Preisniveau 2026 Kosten Lebenshaltung Tourist Supermarkt Restaurantz= Reiseinfos 2026 Einreise Sicherheit Tipps aktuell Gesundheitr   c                 d   >  [        TUSS9TU '   g ! [         a  nSU S3TU '    S nAg S nAff = f)N  rO  z	[Fehler: ])rv  r#   )r|  r   r  r   r  s      r'   _q!_su_perplexity_gather.<locals>._qD  s<    	*,S$4HGAJ 	*$QCq)GAJ	*s    
/	*/Tr<  rd  r  )
zUNTERKUNFT (Live)u   FLÜGE (Live)zZUGVERBINDUNGEN (Live)zMIETWAGEN (Live)u   AKTIVITÄTEN & AUSFLÜGEzRESTAURANTS & ESSENu   STRÄNDE & MEERu   FÄHREN & INSELNzPREISNIVEAU & KOSTENzREISEINFOS & SICHERHEIT

c              3   X   #    U  H   u  pU(       d  M  S U;  d  M  SU SU 3v   M"     g7f)z[Fehlerz=== z ===
Nr  )r  lrK  s      r'   r  (_su_perplexity_gather.<locals>.<genexpr>M  s2     h7Ktqq*U^fgUg*aSqc*7Ks   ***r  )rl  r   minmaxrA  rv  rB  rC  r{  r  zip)r  r  r  periodqueriesr  r|  rJ  rI  labelsr   r  s             @@r'   _su_perplexity_gatherr  1  s   
l
#C-k]:JKKUU8R F9?s3v;-s3v;-u5EWF
6{m1VH  MK  	L
[M6(2  	A
2;-qHvw
[M6(*st
3K=@lm
[M)YZ-\]-ij-ef-TUG dS\!G*
 MVV]L^	_L^DA)

"q6$
?L^B	_R#R oF;;hs677Khh  Z  oK  LW  KX  XY  mZ  Z	 
`s   1#D9research_briefcompactc                    UR                  SUR                  SS5      5      nUR                  SS5      nU(       a
  US SUS S3OUS S3nUR                  S	/ 5      nS
R                  S [        U5       5       5      =(       d    SnUR                  S5      (       a  SOSn	SU SU SU SU	 SU  SU SUS S3n
U(       d  U
$ SU SU SU SU  SU S3$ )N
budget_maxr  L  
budget_minr   ,.0fr      €r  r  c              3   8   #    U  H  n[        U5      v   M     g 7fr   r  r  ws     r'   r  ._su_claude_structure_prompt.<locals>.<genexpr>T  s     A.Q~a((.   flexibelkurzfristiguA   KURZFRISTIGE BUCHUNG — nur aktuell verfügbare Optionen zeigen.r   u  Du bist ein Reiseplaner. Nutze AUSSCHLIESSLICH die folgenden Live-Recherche-Daten von Perplexity — kein Trainingswissen. Nutze die Daten vollständig aus. Wenn eine konkrete Zahl fehlt, schätze auf Basis der Daten und markiere mit "(Richtwert)". Kein Feld darf leer bleiben oder "nicht recherchiert" enthalten. WICHTIG: data_gaps muss immer ein leeres Array [] bleiben — schätze statt Lücken zu melden.

REISEZIEL: z | Budget: z | Zeitraum: zG | Familie: 5P (Janno 14, Thede 11, Pina 7 + 2 Erw.) | Abfahrt: Berlin
z

PERPLEXITY LIVE-DATEN:
zb

Erstelle einen strukturierten Reiseplan. Antworte AUSSCHLIESSLICH mit JSON:
{
  "destination": "u  ",
  "city": "Hauptstadt/Hauptort für Buchungssuche (z.B. Dubrovnik, Lagos, Ljubljana)",
  "iata": "Nächster Flughafen IATA-Code (z.B. DBV, FAO, LJU) oder leer wenn kein Direktflug",
  "data_quality": "gut|mittel|lückenhaft",
  "intro": "2 Sätze Einleitung über das Reiseziel aus den Recherche-Daten",
  "best_week": "Empfohlene Woche aus den Daten oder 'nicht aus Daten ableitbar'",
  "one_concern": "Ein echter Vorbehalt oder leer",
  "accommodations": [
    {"name": "Name oder Typ", "area": "Lage", "bedrooms": 2, "price_range": "XXX–XXX €/N", "description": "Kurz aus Daten", "booking_url": "URL falls in Daten vorhanden", "humble": "Hinweis falls Preis nicht live bestätigt"}
  ],
  "flights": [
    {"airline": "Name", "route": "BER→Ziel", "price_estimate": "~XXX €/P", "price_5p_return": "~X.XXX € gesamt", "duration": "Xh", "humble": "Hinweis"}
  ],
  "trains": [
    {"type": "Nachtzug/IC", "route": "Berlin→Ziel", "price_estimate": "~XXX €/P", "price_5p_return": "~X.XXX € gesamt", "duration": "Xh", "humble": "Hinweis"}
  ],
  "activities": [
    {"title": "Name", "for": "Janno/alle/Kinder", "description": "Kurz", "approx_cost": "~XX €/P", "kid_friendly": true}
  ],
  "budget_detail": {
    "unterkunft_14n": "~X.XXX €",
    "anreise_5p": "~XXX €",
    "mietauto_14d": "~XXX €",
    "ausflüge": "~XXX €",
    "essen_täglich": "~XXX € (Ø/Tag × 14)",
    "gesamt": "~X.XXX € PFLICHTFELD — addiere alle Posten, immer ausfüllen",
    "puffer": "~XXX € (verbleibend bei Budget r  uv    €)",
    "humble": "Alle Preise Richtwerte aus Perplexity-Recherche. Vor Buchung prüfen."
  },
  "data_gaps": []
}z0Reiseplaner. Nur Perplexity-Daten nutzen. ZIEL: z	

DATEN:
u{   

Antworte NUR mit kompaktem JSON (kurze Texte, max 3 Unterkünfte, max 2 Flüge, max 4 Aktivitäten):
{
  "destination": "u8  ",
  "data_quality": "gut|mittel|lückenhaft",
  "intro": "1 Satz",
  "best_week": "KW X oder unbekannt",
  "one_concern": "Kurz oder leer",
  "accommodations": [{"name":"","area":"","price_range":"","description":"1 Satz"}],
  "flights": [{"airline":"","route":"","price_5p_return":"","duration":""}],
  "trains": [{"type":"","route":"","price_5p_return":"","duration":""}],
  "activities": [{"title":"","for":"","description":"1 Satz","approx_cost":""}],
  "budget_detail": {"unterkunft_14n":"","anreise_5p":"","gesamt":"","humble":"Richtwerte"},
  "data_gaps": []
})r   r  r   )r  r  r  r  r  r  
budget_strr  r  kurzfristig_noteprompt_fulls              r'   _su_claude_structure_promptr  O  s?   UU<x!67F|Q'J=GJt$Ct}D9PVW[}\`MaJUU8R FYYA&.AAOZF^_^c^cdq^r^rZxz8;zl-x @      ( 14 28
 ;I(KR ?x{S]R^^klrks t    (  r   plan_strc                      SU SU  SUS S  S3$ )Nu   Du bist ein kritischer Reise-Gutachter. Dein einziger Auftrag: Finde alles was an diesem Reiseplan falsch, unrealistisch, übertrieben oder gefährlich ist.

REISEPLAN FÜR z:
z

PERPLEXITY RECHERCHE-BASIS:
i	  u  

Antworte AUSSCHLIESSLICH mit JSON:
{
  "red_team_verdict": "reliable|mostly_reliable|problematic",
  "critical_issues": [
    {"severity": "high|medium|low", "claim": "Die beanstandete Aussage im Plan", "issue": "Was daran falsch oder fraglich ist", "suggestion": "Was realistischer wäre"}
  ],
  "tourist_traps": ["Konkrete Touristenfallen oder Risiken für dieses Ziel"],
  "missing_info": ["Was im Plan fehlt und vor Buchung recherchiert werden muss"],
  "positive": "Ein Satz was am Plan wirklich gut ist"
}r  )r  r  r  s      r'   _su_chatgpt_red_team_promptr    s9    x 	
     r   critiquec                    U (       a+  U R                  S5      S:X  aL  U R                  S5      (       d6  U (       a  U R                  SS5      OSnU (       a  SU(       a  SU-   OS S3$ S$ U R                  SS	5      nS
SSSS.nUR                  USU45      u  pESSSS.nSnU R                  S/ 5       H}  nUR                  UR                  SS5      S5      u  pUR                  S5      (       a	  SUS    S3OSnUSU	 SUR                  SS5       SU
 SUR                  SS5       SU S3-  nM     SnU R                  S5      (       a   SR                  S  U S    5       5      nS!U 3nSnU R                  S"5      (       a   SR                  S# U S"    5       5      nS$U 3nU R                  S5      (       a	  S%U S    S3OSnS&U SU S'U S(U S(U S(U S)3$ )*Nred_team_verdictr  critical_issuespositiver   uS   <div class="rt-ok fade">✓ Red Team (ChatGPT): Keine kritischen Probleme gefunden.r  r  r  r  )r  u   Überwiegend ok)r  zKritische Punkter  )r  r  problematicr  r  )u   🔴r  )u   🟡r  )u   ⚪z#666)highmediumlowseverityr"  
suggestionu   <div class="rt-suggestion">→ z+<div class="rt-issue"><span class="rt-sev">u%   </span><div><div class="rt-claim">„r  z/"</div><div class="rt-issue-text" style="color:r  issuer  tourist_trapsc              3   .   #    U  H  nS U S3v   M     g7f)u   <div class="rt-trap">⚠ r  Nr  r  rJ  s     r'   r  $_su_red_team_html.<locals>.<genexpr>  s     aG`!3A3f=G`   z=<div class="rt-sub-title">Touristenfallen &amp; Risiken</div>missing_infoc              3   .   #    U  H  nS U S3v   M     g7f)z<div class="rt-missing-item">? r  Nr  r  r   s     r'   r  r)    s     fMe9!FCMer*  u3   <div class="rt-sub-title">Vor Buchung klären</div>u   <div class="rt-positive">✓ u   
<div class="redteam-section fade">
  <div class="s-label">⚔ Red Team — ChatGPT prüft kritisch</div>
  <div class="rt-head">
    <span class="rt-verdict-badge" style="color:ua   </span>
    <span class="rt-note">ChatGPT hat den Plan unabhängig angegriffen</span>
  </div>
  r  r  r   r  )r  r  r  VERDICTvcvlSEVissues_htmlissr  r  sug_html
traps_htmlr   missing_htmlpos_htmls                   r'   _su_red_team_htmlr9    s   x||$67:Ehll[lNmNm.6hll:r*B JRdruehknen{}d~  E  F  	Z  XZ  	Zll-{;G6Ki  {Z  i}  ~G[[67"34FB&2Eo
^CK||-r2ggcggj7HRURYRYZfRgRg4S5F4GvNmoDTFJopspwpwx  AC  qD  pE  Et  uz  t{  {}  ~A  ~E  ~E  FM  NP  ~Q  }R  RX  Ya  Xb  bn  o  	o 3 J||O$$axP_G`aaTUZT[\
L||N##fXVdMeffLUGTOW||\fOgOg.x
/C.DFKmoH1 24Brd ; - , . * 
 
r   planc                    SSK nSSKJn  U R                  SS5      nU R                  SUR	                  S5      S   R                  5       5      nU R                  SS5      nUR                  S/ 5      nU(       a)  [        U5      nUR                  R                  S	US
5      n	OUR                  S	SS5      n	XR                  SS9-   n
U	R                  S5      nU
R                  S5      nU	R                  S5      nU
R                  S5      nU	R                  S5       SU
R                  S5       3nUR                  U5      nSSSU SU SU S3S4SSSU SU SU S3S4S S!S"U S#U S$U S3S%4S&S'S(U S#U S$U S)3S*4/nU(       a8  US+S,S-UR                  5        S.U S.U S/3S0U S134S2S3S4U S.U S.U S53S6U 34/-  nUR                  S7S8S9U S.U S.U S.3U S:345        SnU H  u  nnnnUS;U S<U S=U S>U S?3	-  nM     S@U SAU SBU SC3$ )Du5   Generiert vorausgefüllte Booking-Links für Mathias.r   Nr  r   cityr  iatar  r  rq         r  %Y-%m-%d%Y%m%dz%-d.%bu    – z	%-d.%b %Yu   🏨zBooking.com1https://www.booking.com/searchresults.de.html?ss=	&checkin=
&checkout=U&group_adults=2&group_children=3&age=14&age=11&age=7&no_rooms=1&nflt=entire_homes%3D1u   Ferienwohnung · 5 Personenu   🏠Airbnbhttps://www.airbnb.de/s//homes?checkin=&adults=2&children=3u   Ganze Unterkunft · 5 Personenu   🏩HRSzAhttps://www.hrs.de/web3/welcome.do?clientId=HRS&language=de&dest=z	&checkIn=z
&checkOut=zFerienwohnungen + Hotelsu   🏡z	Hotels.dez*https://www.hotels.de/search/?destination=z&rooms=1&adults=2&children=3zUnterkunft Preisvergleichu   ✈️
Skyscanner0https://www.skyscanner.de/transport/flights/ber///?adults=2&children=3u   BER → u    · Hin + Rücku   🔍u   Idealo Flügez*https://www.idealo.de/flug/ergebnis/0-BER,z	/2-2.1.1/u   Preisvergleich BER ↔ u   🚗zCheck24 Mietwagen0https://mietwagen.check24.de/mietwagen/ergebnis/u    · Familienvanz<a class="bl-card" href="z:" target="_blank" rel="noopener">
  <span class="bl-icon">z4</span>
  <div class="bl-body"><div class="bl-name">z</div><div class="bl-note">u5   </div></div>
  <span class="bl-arrow">↗</span>
</a>uR   <div class="booking-links-section fade">
  <div class="s-label">Direkt buchen — uG    · 5 Personen</div>
  <div class="bl-note-top">Alle Links öffnen mit uc   , den gewählten Daten und der richtigen Personenzahl vorausgefüllt.</div>
  <div class="bl-grid">r  )r  r  r  r   r  r"   r  r  r  r  r  r  r?  r   )r:  r  _dtb_upbr  r<  r=  r  r  checkincheckoutcico
ci_compact
co_compact
date_labelcity_encr+  cardsr  labelrY   r  s                          r'   _su_booking_links_htmlr\    s   11((="-K88FK--c215;;=>D88FBDUU8R F[))++D"a8))D!Q'R00H			*	%B			:	&B!!(+J""8,J$$X./uX5F5F{5S4TUJzz$H 
"ST\S]]fgifjjtuwtx  yN  !O  Qn  	o	5hZrdR\]_\``tu  xX  	Y	[\d[eenoqnrr|}  }A  AU  V  Xr  	s	 J8*T]^`]aaklnko  pL  M  Oj  	k	E |'WX\XbXbXdWeefgqfrrst~s  @U  &V  Zb  cg  bh  hw  Xx  y_(RSWRXXYZ\Y]]^_a^bbk&l  qH  IM  HN  oO  P
 	
 
LL&-1abjakklmolppqrtquuv/w  }G  |H  HW  zX  Y  ZE"'eS$.se 4 --2G3Ntf U 	 #(**4 633>- @w 
 
r   c                 v  ^^  SS K nTR                  S/ 5      nTR                  SS5      nU R                  S/ 5      nU R                  SS5      nU R                  SU R                  SS	5      5      nUnU(       a
  US
 SUS
 S3OUS
 S3n	UR                   R                  5       R                  S5      n
U4S jnS m SR	                  U 4S j[        US S 5       5       5      n[        R                  " US S  VVVVs/ s HM  oR                  S/ 5       VVVs/ s H)  oR                  5        VVs0 s H	  u  nnUU_M     snnPM+     snnnPMO     snnnnSS9nU" U5      nTR                  S/ SQ5      nSR	                  S [        U5       5       5      nSnU R                  S/ 5      nU R                  S/ 5      nU(       a!  SR	                  S U 5       5      nUSU S3-  nU(       a!  SR	                  S U 5       5      nUSU S3-  nS  HE  u  nnU R                  U/ 5      nU(       d  M!  SR	                  S! U 5       5      nUS"U S#U S3-  nMG     TR                  S$S%U	 35      n[        U5      nS&U S'U S(U S)U S*TR                  S+S5       S,U S-U S.U
 S/U S03$ s  snnf s  snnnf s  snnnnf )1Nr   optionsfamily_summaryr   r  r  r  r  r  r	  r  r
  z%B %Yc                 .  > [        TR                  S/ 5      5      n/ n[        U 5       HX  nX1;   a  SOSn[        U5      nSU 3nUR	                  SU SU SUR                  S5      S	   R                  S
5       S35        MZ     SR                  U5      $ )N
best_weeksztw besttwr  z<div class="z"><b>z</b><small>r  rq   r  z</small></div>
    )r   r   r   r  r   r  r   r  )kwsbest_setchipsr  clslblshortr  s          r'   
week_chips%_su_generate_html.<locals>.week_chips  s    txxb12+B!~)4C $C"JELL<uE%CIIcNSTDUD\D\]`DaCbbpqr	 
 }}U##r   c                    SSSSSS.nSSSSS	S.nUR                  US
US-    35      nUR                  US5      nU R                  SS5      nU R                  SS5      nU R                  SS5      nU R                  SS5      n	U R                  SS5      n
U R                  SS5      nU R                  SS5      nU(       a  SU S3OSnU=(       d    UnU(       a	  SU SU S3OSnSnU
(       a  SU
 S3nSnU R                  S/ 5       H  nSnUR                  S5      (       a%  UR                  S5      (       a  SUS    SUS    S3nUR                  S S5      nUS!UR                  S"S5       S#UR                  S$S5       U S%U S&UR                  S'S5       S(3
-  nM     U R                  S)5      (       a  US*U S)    S3-  nSnU R                  S+/ 5       Hs  nSnUR                  S,/ 5       H  nUSUS-    SUS.    S3-  nM     UR                  S S5      nUS!UR                  S/S5       U S%U S&UR                  S'S5       S(3-  nMu     U R                  S05      (       a  US*U S0    S3-  nSnU R                  S1/ 5       H2  nUR                  S25      (       a  S2OSnUS3US.    S4U S5US6    S73-  nM4     U R                  S85      (       a  US*U S8    S3-  nU R                  S9S:U S;35      nU R                  S</ 5      nSnU(       a5  Sn[        U5       H  u  n n!US=U!S>    SU!S?    S@U SAU  SB3	-  nM      SCU SD3nSR                  / SEPU PSFPU PSGPU PSHPU PSIPU PSJPU	 PSKPU PSLPU PSMPU R                  SNS5       PSOPU PSPPU R                  SQS5       PSOPU PSRPU R                  SSS5       PSOPU PSTPU PSUPU PSVP5      $ )WNu   ①u   ②u   ③u   ④u   ⑤)r   rq   rp      ru   u   — Empfehlungr   u   — Wildcard#rq   r   regiontaglinewhy_goodnot_perfectunsplash_urlimage_wikimedia_filenamez4https://commons.wikimedia.org/wiki/Special:FilePath/z
?width=800z<img class="opt-photo" src="z" alt="z5" loading="lazy" onerror="this.style.display='none'">u   <div class="warn">⚠ r  r8   link_url
link_labelz<a class="src-link" href="z" target="_blank">u    ↗</a>r  zG
        <div class="d-row">
          <div class="d-lbl">
            moder  r  z
            <small>z<</small>
          </div>
          <div class="d-val gold">price_displayz</div>
        </div>transport_humble<div class="humble">accommodationr+  rY   r[  r  
acc_humblebudget_breakdownr  &<div class="d-row"><div class="d-lbl">z</div><div class="d-val r  valuer  budget_humbledeeper_labelu"   Konkrete Apartments + Preise für u    recherchieren →galleryz<img class="gthumb" src="r.  r/  z!" loading="lazy" onclick="openLb(r  z)">z5<div class="gallery-wrap"><div class="gallery-strip">uT   </div><div class="gallery-hint">↔ scrollen · klicken zum Vergrößern</div></div>z4
<div class="s fade">
  <div class="s-label">Option r  	</div>
  z
  <div class="opt-title">z!</div>
  <div class="opt-region">z</div>
  <p class="prose"></p>
  r  uK   
  <div class="details-group">
    <details>
      <summary>Unterkunft — acc_price_rangez'</summary>
      <div class="det-body">u?   </div>
    </details>
    <details>
      <summary>Anreise — transport_summaryu>   </div>
    </details>
    <details>
      <summary>Budget — budget_labelzW</div>
    </details>
  </div>
  <button class="deeper-btn" onclick="requestDeep(this,'z')">z</button>
</div>)r   rv  r  )"optidxnum_maprank_mapnumrankr   ro  rp  whyrr  rs  img_filewikimedia_urlimg_srcimg_tag	warn_htmltransport_rowsrJ  	link_htmlr  acc_rowsr  
links_htmllnkbudget_rowsbrow_clsr  r  gallery_htmlthumbsgigs"                                     r'   option_html&_su_generate_html.<locals>.option_html  s   %EeD'B2"Pkk#3q5'{+||C$wwvr"2&'')R(ggj"%ggmR0ww~r2775r:goNxjXbcuw/- CJ0	F}~  PR	0VDIb)AIuuZ  QUU<%8%88:GYZ[\hZiYjjrs	55$D # UU6"bwr!2 3I; ?6 ##$55#<"= > N * 77%&& 4S9K5L4MVTTN"-AJuuWb) :3u:,FXY\]dYeXffnoo
 *55$D  UU6"zl +6 ##$55#<"= > H . 77<  .s</@.AHHH+R0A!"wgRGCAgJ<Oghogpprstu|s}r~  K  L  LK 1 77?##1#o2F1GvNNKww~1STXSYYk/lm '')R(F"7+A5aj\5
Rstwsxxyz|y}  ~A  B  B ,RSYRZ  [o  pL
 
  
"e
#$
%)F
+
 )

 	
 	

 "(

#
 5

 +

 .

  #ww'8<=
>
 &J
'
  GG$7;<
=
  ,,!
 -!
& 77>"56'
&7'
( )M)
(*9)
. :>/
. ?C/
. DP./
.Q/
 	
r   r  c              3   8   >#    U  H  u  pT" X!5      v   M     g 7fr   r  )r  r|  r  r  s      r'   r  $_su_generate_html.<locals>.<genexpr>s  s     L8K+a++8Ks      r  Fensure_ascii
next_steps)zOption und Reisewoche festlegenu'   2–3 konkrete Unterkünfte vergleichenu6   Anreise buchen — Zug-Schlafwagen frühzeitig sichernc              3   >   #    U  H  u  pS US-    SU S3v   M     g7f)z"<div class="step"><div class="sn">rq   z</div><div>r  Nr  r  r|  rw  s      r'   r  r    s6       B  lAcgcd>qse;qcQ]^  lA   musthavelagec              3   T   #    U  H  nS [         R                  X5       S3v   M      g7fz<span class="tag hi"></span>Nr  r  s     r'   r  r    s&     ]T\q,[__Q-A,B'JT\   &(zJ<div class="p-row"><span class="p-lbl">Must-haves</span><div class="tags">z</div></div>
c              3   T   #    U  H  nS [         R                  X5       S3v   M      g7fr  r  r  s     r'   r  r    s&     YTXq,[__Q-A,B'JTXr  uH   <div class="p-row"><span class="p-lbl">Wünsche</span><div class="tags">))r  Janno)r  Thede)r  Pina)r   Mathias)r!  Heidrunc              3   T   #    U  H  nS [         R                  X5       S3v   M      g7f)z<span class="tag">r  Nr  r  r  s     r'   r  r    s'     ZUYPQ-kooa.B-C7KUYr  z'<div class="p-row"><span class="p-lbl">z</span><div class="tags">hero_subu.   5 Personen · 2 Wochen · ab Berlin · Budget uY$  <!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Watson Reisevorschlag — Mathias &amp; Familie</title>
<link rel="manifest" href="/sommerurlaub_angebot.webmanifest">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="Reisevorschlag">
<meta name="theme-color" content="#0a0a0a">
<style>
*{box-sizing:border-box;margin:0;padding:0;}
:root{
  --bg:#0c0c0c;--card:#141414;--border:#1e1e1e;--faint:#222;
  --text:#e8e4da;--muted:#666;--muted2:#444;
  --gold:#d4a843;--gold-dim:rgba(212,168,67,.13);
  --green:#4caf82;
  --r:12px;
  --font:system-ui,-apple-system,'Helvetica Neue',sans-serif;
}
html{background:var(--bg);color:var(--text);font-family:var(--font);}
body{max-width:600px;margin:0 auto;padding:env(safe-area-inset-top,20px) 22px calc(env(safe-area-inset-bottom,0px)+64px);}
.hero{padding:52px 0 32px;border-bottom:1px solid var(--border);margin-bottom:44px;}
.hero-eye{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:16px;}
.hero h1{font-size:clamp(1.9rem,6.5vw,2.9rem);font-weight:700;line-height:1.08;letter-spacing:-.03em;margin-bottom:12px;}
.hero h1 em{font-style:normal;color:var(--gold);}
.hero-sub{font-size:14px;color:#888;line-height:1.6;}
.s{margin-bottom:52px;}
.s-label{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:20px;}
.map-wrap{margin-bottom:44px;border-radius:var(--r);overflow:hidden;border:1px solid var(--border);}
.map-caption{font-size:10px;color:var(--muted2);padding:7px 12px;border-top:1px solid var(--border);background:var(--card);}
.opt-title{font-size:21px;font-weight:700;line-height:1.15;letter-spacing:-.02em;margin-bottom:4px;}
.opt-region{font-size:12px;color:var(--muted);margin-bottom:18px;}
.opt-photo{width:100%;height:180px;object-fit:cover;display:block;border-radius:var(--r);margin-bottom:20px;background:var(--card);}
.p-row{display:flex;gap:10px;margin-bottom:8px;align-items:flex-start;}
.p-lbl{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);width:76px;flex-shrink:0;padding-top:3px;}
.tags{display:flex;flex-wrap:wrap;gap:5px;}
.tag{font-size:11px;color:#888;background:var(--card);border:1px solid var(--border);border-radius:20px;padding:2px 9px;}
.tag.hi{background:var(--gold-dim);border-color:rgba(212,168,67,.3);color:var(--gold);}
.timing-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px;}
.tw{display:flex;flex-direction:column;align-items:center;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:8px 11px;}
.tw b{font-size:12px;color:var(--text);margin-bottom:2px;}
.tw small{color:var(--muted);font-size:10px;}
.tw.best{background:rgba(76,175,130,.07);border-color:rgba(76,175,130,.25);}
.tw.best b{color:var(--green);}
.prose{font-size:15px;line-height:1.78;color:#bfbcb2;}
.prose+.prose{margin-top:14px;}
.prose strong{color:var(--text);font-weight:600;}
.warn{background:#12100a;border:1px solid #2e2410;border-radius:8px;padding:11px 14px;font-size:11px;color:#a09050;line-height:1.6;margin:16px 0 0;}
.details-group{margin-top:20px;border-top:1px solid var(--border);}
details{border-bottom:1px solid var(--border);}
details summary{cursor:pointer;padding:14px 0;font-size:12px;font-weight:700;color:var(--gold);letter-spacing:.03em;display:flex;justify-content:space-between;align-items:center;list-style:none;-webkit-appearance:none;user-select:none;}
details summary::-webkit-details-marker{display:none;}
details summary::after{content:'↓';font-size:11px;color:var(--muted);transition:transform .2s;}
details[open]>summary::after{transform:rotate(180deg);}
.det-body{padding:0 0 18px;}
.d-row{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:8px 0;border-bottom:1px solid #1a1a1a;font-size:13px;}
.d-row:last-of-type{border-bottom:none;}
.d-lbl{color:#999;line-height:1.5;flex:1;}
.d-lbl small{display:block;font-size:11px;color:#555;margin-top:2px;}
.d-val{font-weight:700;color:var(--text);white-space:nowrap;text-align:right;flex-shrink:0;}
.d-val.gold{color:var(--gold);}
.d-val.total{font-size:15px;color:var(--green);}
.src-link{color:#4a7a9b;font-size:10px;text-decoration:none;margin-left:4px;white-space:nowrap;}
.src-link:hover{text-decoration:underline;}
.humble{font-size:10px;color:#3a3a3a;margin-top:10px;line-height:1.65;font-style:italic;}
.deeper-btn{display:block;width:100%;margin-top:16px;background:transparent;border:1px solid var(--border);border-radius:8px;padding:12px 16px;text-align:center;font-family:var(--font);font-size:12px;font-weight:700;color:var(--muted);cursor:pointer;letter-spacing:.04em;transition:border-color .2s,color .2s;}
/* GALLERY */
.gallery-wrap{margin:18px 0 20px;}
.gallery-strip{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.gallery-strip::-webkit-scrollbar{display:none;}
.gthumb{height:80px;min-width:120px;max-width:160px;object-fit:cover;border-radius:6px;cursor:pointer;scroll-snap-align:start;flex-shrink:0;transition:opacity .15s;border:1px solid var(--border);}
.gthumb:hover{opacity:.85;border-color:rgba(212,168,67,.5);}
.gallery-hint{font-size:10px;color:var(--muted2);margin-top:5px;}
/* LIGHTBOX */
#lb{display:none;position:fixed;inset:0;background:rgba(0,0,0,.93);z-index:500;flex-direction:column;align-items:center;justify-content:center;padding:20px;touch-action:pan-y;}
#lb.open{display:flex;}
#lb-img{max-width:100%;max-height:60vh;object-fit:contain;border-radius:8px;display:block;}
#lb-cap{font-size:14px;color:var(--text);font-weight:600;margin-top:14px;text-align:center;line-height:1.4;max-width:480px;}
#lb-cred{font-size:10px;color:#555;margin-top:5px;text-align:center;}
#lb-cred a{color:#4a7a9b;text-decoration:none;}
#lb-cred a:hover{text-decoration:underline;}
.lb-nav{display:flex;gap:28px;margin-top:18px;}
.lb-btn{background:rgba(255,255,255,.06);border:1px solid #333;border-radius:50%;width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:20px;color:#aaa;cursor:pointer;transition:background .15s,color .15s;flex-shrink:0;}
.lb-btn:hover{background:rgba(255,255,255,.12);color:var(--text);}
.lb-close{position:absolute;top:16px;right:18px;font-size:22px;color:#555;cursor:pointer;line-height:1;background:none;border:none;padding:4px;}
.lb-close:hover{color:var(--text);}
.lb-counter{font-size:10px;color:#444;margin-top:8px;letter-spacing:.1em;}
.deeper-btn:hover{border-color:rgba(212,168,67,.4);color:var(--gold);}
.deeper-btn.done{color:var(--green);border-color:rgba(76,175,130,.4);cursor:default;}
.next{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:22px;}
.next-title{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin-bottom:16px;}
.step{display:flex;gap:11px;font-size:13px;color:#aaa;line-height:1.65;margin-bottom:11px;}
.step:last-child{margin-bottom:0;}
.sn{width:20px;height:20px;border-radius:50%;background:rgba(76,175,130,.1);border:1px solid rgba(76,175,130,.3);color:var(--green);font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;}
.footer{text-align:center;padding:36px 0 16px;font-size:10px;color:#2a2a2a;line-height:1.9;}
.footer a{color:#3a3a3a;text-decoration:underline;}
.fade{opacity:0;transform:translateY(10px);transition:opacity .5s ease,transform .5s ease;}
.fade.in{opacity:1;transform:none;}
.back-wrap{margin-bottom:32px;}
.back-btn{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);text-decoration:none;padding:8px 14px;border:1px solid var(--border);border-radius:100px;transition:border-color .2s,color .2s;}
.back-btn:hover{border-color:rgba(212,168,67,.4);color:var(--gold);}
.version-link{display:flex;align-items:center;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--border);font-size:13px;color:#888;text-decoration:none;transition:color .2s;}
.version-link::after{content:'→';font-size:11px;color:var(--muted2);}
.version-link:hover{color:var(--text);}
.version-link:last-child{border-bottom:none;}
.modal-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:100;align-items:center;justify-content:center;padding:24px;}
.modal-backdrop.show{display:flex;}
.modal{background:#161616;border:1px solid #2a2a2a;border-radius:16px;padding:24px;max-width:400px;width:100%;}
.modal h3{font-size:16px;font-weight:700;margin-bottom:10px;}
.modal p{font-size:13px;color:#aaa;line-height:1.65;margin-bottom:18px;}
.modal-btn{display:inline-flex;align-items:center;gap:6px;background:var(--gold);color:#0a0a0a;font-family:var(--font);font-size:13px;font-weight:700;padding:12px 22px;border-radius:100px;border:none;cursor:pointer;}
.modal-close{float:right;background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;line-height:1;}
</style>
</head>
<body>

<div class="hero fade">
  <div class="hero-eye">Watson Rechercheauftrag · Sommer 2026</div>
  <h1>uO    Vorschläge<br>für <em>Mathias &amp; Familie</em></h1>
  <p class="hero-sub">u   </p>
</div>

<div class="back-wrap fade">
  <a href="/" class="back-btn">← Wünsche anpassen</a>
</div>

<div class="s fade">
  <div class="s-label">Was Watson gelesen hat</div>
  zi
</div>

<div class="s fade">
  <div class="s-label">Wann am besten</div>
  <div class="timing-row">
    z
  </div>
  <p class="prose">timing_notez</p>
</div>

uv   

<div class="s fade">
  <div class="next">
    <div class="next-title">Was Watson als nächstes tun würde</div>
    u   
  </div>
</div>

<div id="versions-section" class="s fade" style="display:none;">
  <div class="s-label">Frühere Vorschläge</div>
  <div id="versions-list"></div>
</div>

<div class="footer fade">
  Watson Rechercheauftrag · Preise recherchiert uF   · Alle Angaben Richtwerte<br>
  Fotos: Wikimedia Commons (CC)
</div>

<div class="modal-backdrop" id="modal">
  <div class="modal">
    <button class="modal-close" onclick="closeModal()">✕</button>
    <h3 id="modal-title">Tiefer recherchieren</h3>
    <p id="modal-body">Watson kann für diese Option konkrete Unterkünfte mit echten Preisen, verfügbare Flüge und Mietauto-Angebote heraussuchen. Das dauert ein paar Minuten.</p>
    <button class="modal-btn" id="modal-action">Jetzt recherchieren lassen →</button>
  </div>
</div>

<div id="deeper-overlay" style="display:none;position:fixed;inset:0;background:#0c0c0c;z-index:200;flex-direction:column;align-items:center;justify-content:center;padding:32px;">
  <div style="max-width:340px;width:100%;text-align:center;">
    <div style="font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#666;margin-bottom:24px;">Watson Tiefenrecherche</div>
    <div id="deeper-dest" style="font-size:22px;font-weight:700;color:#d4a843;margin-bottom:8px;"></div>
    <div id="deeper-step" style="font-size:13px;color:#888;margin-bottom:28px;">Wird gestartet…</div>
    <div style="background:#1a1a1a;border-radius:100px;height:4px;overflow:hidden;">
      <div id="deeper-fill" style="height:100%;width:3%;background:#d4a843;border-radius:100px;transition:width .6s ease;"></div>
    </div>
  </div>
</div>

<script>
const obs = new IntersectionObserver(e => {
  e.forEach(x => { if (x.isIntersecting) x.target.classList.add('in'); });
}, { threshold: .05, rootMargin: '0px 0px -20px 0px' });
document.querySelectorAll('.fade').forEach(el => obs.observe(el));

let currentOption = null;
function requestDeep(btn, option) {
  currentOption = option;
  document.getElementById('modal-title').textContent = `Tiefer recherchieren: ${option}`;
  document.getElementById('modal').classList.add('show');
  document.getElementById('modal-action').onclick = () => confirmDeep(btn, option);
}
function closeModal() { document.getElementById('modal').classList.remove('show'); }

async function confirmDeep(btn, option) {
  closeModal();
  try {
    await fetch('/api/sommerurlaub/deeper', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ option, ts: new Date().toISOString() })
    });
  } catch(e) {}
  const ov = document.getElementById('deeper-overlay');
  ov.style.display = 'flex';
  document.getElementById('deeper-dest').textContent = option;
  document.getElementById('deeper-step').textContent = 'Watson startet Tiefenrecherche…';
  try {
    await fetch('/api/sommerurlaub/deeper_build', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ option })
    });
  } catch(e) {}
  pollDeeper();
}

async function pollDeeper() {
  try {
    const r = await fetch('/api/sommerurlaub/deeper_status');
    const s = await r.json();
    if (s.progress) document.getElementById('deeper-fill').style.width = s.progress + '%';
    if (s.step) document.getElementById('deeper-step').textContent = s.step;
    if (s.status === 'done') {
      document.getElementById('deeper-fill').style.width = '100%';
      document.getElementById('deeper-step').textContent = 'Fertig — Tiefenrecherche wartet auf euch.';
      setTimeout(() => { window.location.href = '/tief'; }, 1200);
      return;
    }
    if (s.status === 'error') {
      document.getElementById('deeper-step').textContent = 'Fehler: ' + (s.error || 'unbekannt');
      return;
    }
  } catch(e) {}
  setTimeout(pollDeeper, 1500);
}

document.getElementById('modal').addEventListener('click', e => {
  if (e.target === document.getElementById('modal')) closeModal();
});

(async () => {
  try {
    const r = await fetch('/api/sommerurlaub/versions');
    const j = await r.json();
    if (j.versions && j.versions.length > 0) {
      document.getElementById('versions-section').style.display = '';
      document.getElementById('versions-list').innerHTML =
        j.versions.map(v => `<a class="version-link" href="/v/${v.v}">Vorschlag vom ${v.label}</a>`).join('');
    }
  } catch(e) {}
})();

// Gallery lightbox
const GALLERIES = u  ;
let _lbOpt = 0, _lbIdx = 0;
function openLb(opt, idx) {
  _lbOpt = opt; _lbIdx = idx;
  _lbShow();
  document.getElementById('lb').classList.add('open');
  document.body.style.overflow = 'hidden';
}
function _lbShow() {
  const g = GALLERIES[_lbOpt];
  if (!g || !g[_lbIdx]) return;
  const item = g[_lbIdx];
  document.getElementById('lb-img').src = item.url;
  document.getElementById('lb-img').alt = item.alt;
  document.getElementById('lb-cap').textContent = item.caption;
  const cred = document.getElementById('lb-cred');
  cred.innerHTML = `Foto: <a href="${item.credit_url}" target="_blank" rel="noopener">${item.credit_name}</a> · <a href="${item.photo_url}" target="_blank" rel="noopener">Unsplash</a>`;
  document.getElementById('lb-counter').textContent = `${_lbIdx + 1} / ${g.length}`;
}
function closeLb() {
  document.getElementById('lb').classList.remove('open');
  document.body.style.overflow = '';
}
function lbPrev() { const g = GALLERIES[_lbOpt]; if (!g) return; _lbIdx = (_lbIdx - 1 + g.length) % g.length; _lbShow(); }
function lbNext() { const g = GALLERIES[_lbOpt]; if (!g) return; _lbIdx = (_lbIdx + 1) % g.length; _lbShow(); }
document.addEventListener('keydown', e => {
  if (!document.getElementById('lb').classList.contains('open')) return;
  if (e.key === 'ArrowLeft') lbPrev();
  else if (e.key === 'ArrowRight') lbNext();
  else if (e.key === 'Escape') closeLb();
});
// Swipe on mobile
let _tsX = null;
document.getElementById('lb').addEventListener('touchstart', e => { _tsX = e.touches[0].clientX; }, {passive:true});
document.getElementById('lb').addEventListener('touchend', e => {
  if (_tsX === null) return;
  const dx = e.changedTouches[0].clientX - _tsX;
  _tsX = null;
  if (Math.abs(dx) > 40) { if (dx < 0) lbNext(); else lbPrev(); }
}, {passive:true});
</script>

<div id="lb">
  <button class="lb-close" onclick="closeLb()">✕</button>
  <img id="lb-img" src="" alt="">
  <div id="lb-cap"></div>
  <div id="lb-cred"></div>
  <div class="lb-nav">
    <button class="lb-btn" onclick="lbPrev()">‹</button>
    <div id="lb-counter" class="lb-counter"></div>
    <button class="lb-btn" onclick="lbNext()">›</button>
  </div>
</div>

</body>
</html>)
r  r   nowr  r  rv  r  re  r   rA  )!r  r  _dtoptsr_  
weeks_usedr  r  r  r  generated_tsrj  	opts_htmlr  r  kr  galleries_json
weeks_htmlr  	next_htmlfamily_tagsr  r  mhlgpersonr[  valsrI  r  n_optsr  s!    `                              @r'   _su_generate_htmlr    s   88Ir"DXX.3Nx$J|Q'J|QUU8T%:;JFAKJt$C
4'8=T^_cSddhQiJ<<##%..w7L$`
D 		L	$r(8KLLIZZOSTVUVxXx!i0D	E0D1GGI
&IDAq1a4I
&0D	ExXN J'J, ) J
 		  Bktu  lA  B  BIKuuZ$H55DWW]T\]]cdfcgguvvWWYTXYYabdaeesttzuuVR 4ZUYZZBDUGKdegdhhvwwK	 { xx
&TU_T`$abHYFxp h j 	! -  L HH]2./ 0  
 K 
2 3? c@F "" 7#v v= '	EXs*   =J3J,0J&  J,	J3&J,,J3c                 <   U R                  S/ 5      nU R                  SS5      nU R                  SU R                  SS5      5      nUnU(       a
  US SUS S	3OUS S	3nU R                  S
/ 5      n[        U R                  S/ 5      5      n[        U R                  S/ 5      5      n[        U R                  SS5      5      n	[        U R                  SS5      5      n
[        U R                  S/ 5      5      nSR                  S [        U5       5       5      nU(       a  [        U5      OSnU R                  SS5      nU(       a  SOSn[        U R                  S/ 5      5      [        U R                  S/ 5      5      [        U R                  S/ 5      5      [        U R                  S/ 5      5      [        U R                  S/ 5      5      S.nSR                  S  UR	                  5        5       5      nS!U S"U S#U S$U S%U S&U	 S'U
 S(U SU S)U S*US+ S,U S-3$ ).Nr  r  r   r  r  r  r	  r  r
  ziel_laender
unterkunftr  anreiseri  autorn  r  r  c              3   8   #    U  H  n[        U5      v   M     g 7fr   r  r  s     r'   r  #_su_build_prompt.<locals>.<genexpr>  s     En>!,,nr  zAdria/Mittelmeer offenr  Fu   WICHTIG: Die Familie bucht kurzfristig. Zeige nur Optionen die jetzt noch realistisch buchbar sind. Last-Minute-Verfügbarkeit hat Vorrang vor Traumzielen. Preise können höher sein — das ist ok.r   r  r  r  r   r!  )r  r  r  r  r  r  c              3   H   #    U  H  u  pU(       d  M  S U SU 3v   M     g7fz  - r  Nr  )r  r   r  s      r'   r  r    s%     Z>ZTUY0T$r$0>   ""u   Du bist ein Reiseplaner der eine konkrete Empfehlung für eine Familie erstellt.

Familie: 5 Personen (2 Erwachsene, 3 Kinder — Janno 14, Thede 11, Pina 7)
Abflugort: Berlin
Budget: uW    gesamt für 2 Wochen (Unterkunft + Anreise + Mietauto + Essen/Ausflüge)
Zeitfenster: z
Zielregion: z
Unterkunft-Typ: z
Lage-Wunsch: u   
Anreise-Präferenz: u    · Auto vor Ort: 
Must-haves: u   
Wünsche pro Person:
u  

Erstelle 5 konkrete Reiseoptionen als JSON. Antworte AUSSCHLIESSLICH mit dem JSON-Objekt, kein Markdown, kein Codeblock.

JSON-Schema:
{
  "family_summary": "Kurze 1-Satz-Zusammenfassung der Familie und ihrer Wünsche",
  "hero_sub": "5 Personen · 2 Wochen · ab Berlin · Budget r  u
   € · [Hauptregion]",
  "timing_note": "Ein Absatz (3-4 Sätze) über die beste Reisewoche basierend auf den gewählten Wochen und dem Ziel",
  "best_weeks": [Liste der empfohlenen KW-Nummern aus den gewählten Wochen],
  "next_steps": ["Schritt 1", "Schritt 2", "Schritt 3"],
  "options": [
    {
      "name": "Destination Name + Titel",
      "region": "Region · Land",
      "iata": "Nächster Flughafen IATA-Code (z.B. SPU, FAO, LJU)",
      "tagline": "kurzer Slogan",
      "why_good": "2 Sätze Fließtext (reiner Text, kein HTML) warum diese Option gut für diese Familie ist",
      "not_perfect": "Falls es einen echten Vorbehalt gibt: ein kurzer Satz. Nur wenn wirklich relevant, sonst leer lassen.",
      "image_wikimedia_filename": "Exakter Dateiname auf Wikimedia Commons (z.B. Split_Croatia.jpg) — OHNE Special:FilePath, ohne Pfad, nur Dateiname+Extension. Nur echte Commons-Dateien angeben.",
      "transport_summary": "Nachtzug oder Direktflug",
      "transport": [
        {
          "mode": "Nachtzug/Flug/Bus",
          "route": "Konkrete Strecke",
          "note": "Dauer, Details, Hinweis",
          "price_display": "~XXX €",
          "link_url": "https://...",
          "link_label": "seitenname.de"
        }
      ],
      "transport_humble": "Hinweis dass Preise nicht live geprüft wurden",
      "acc_price_range": "XX–YY €/Nacht",
      "accommodation": [
        {
          "type": "Unterkunfts-Typ + Beschreibung",
          "note": "Pers. · SZ · Ausstattung",
          "price_display": "XX–YY €/N",
          "links": [{"url": "https://...", "label": "booking.com"}]
        }
      ],
      "acc_humble": "Hinweis dass Preise Richtwerte sind",
      "budget_label": "KW XX, Anreisetyp",
      "budget_breakdown": [
        {"label": "Unterkunft 14 Nächte", "value": "X.XXX €"},
        {"label": "Anreise 5P", "value": "~XXX €"},
        {"label": "Mietauto 14 Tage", "value": "~XXX €"},
        {"label": "Essen, Ausflüge", "value": "~XXX €"},
        {"label": "Gesamt", "value": "~X.XXX €", "total": true}
      ],
      "budget_humble": "Alle Angaben Richtwerte. X.XXX € Puffer vom Budget verbleiben.",
      "deeper_label": "Konkrete Apartments + Preise für [Name] recherchieren →"
    }
  ]
}

WICHTIGE REGELN:
1. Nur echte Orte, echte Fährverbindungen, echte Fluglinien — nichts erfinden
2. Preise als Richtwerte mit klaren Humbleness-Hinweisen — keine erfundenen Exakt-Preise
3. Wikimedia-Dateinamen: nur wenn du sicher bist dass die Datei existiert — sonst leer lassen
4. Links nur zu bekannten, echten Plattformen (booking.com, airbnb.com, nightjet.com, etc.)
5. Alle Texte auf Deutsch
6. Das Budget (u   ) muss für alle 5 Optionen realistisch eingehalten werden
7. Auf die konkreten Personen (Janno 14, Thede 11, Pina 7, Mathias, Heidrun) eingehen
)r   r  r  r   r   )r  r  r  r  r  r  laenderr  r  r  r  r  
wochen_strlaender_strr  r  people
people_strs                     r'   _su_build_promptr    sI   UU8R F|Q'J|QUU8T%:;JFAKJt$C
4'8=T^_cSddhQiJeeNB'G|R01J155$%DaeeIv./G155*+DquuZ,-HEfVnEEJ&-''"3KK%%u-K do  `  uw w+,w+,fb)*155B/0155B/0F Z6<<>ZZJ	 
 \ M  V I/v 6J    > ?EQZ 7Hn | WM Mr   cockpit_dirc           
        ^ S5S jn[        U 5      S-  n[        U 5      S-  n U" SSSS9  [        R                  " UR                  SS	95      mU" S
SS9  [	        5       nU(       d  U" SSS9  g [        T5      nU" SSS9  S[        XESSS9-   nU" SSS9   [        U5      nUR                  5       (       Ga  SS K
n[        U 5      S-  n	 U	R                  5       (       a#  [        R                  " U	R                  SS	95      O/ n
U
(       a  U
S   S   S -   OS nS!US" S#3n[        U 5      U-  R                  UR                  5       5        U
R                  UUR                  R                  5       R                  5       UR                  R                  5       R!                  S$5      US%.5        U	R#                  [        R$                  " U
S&S'S(9SS	9  U4S) jnSS KJn  UR+                  SS*9 n[-        UR/                  XR1                  S+/ 5      5      5        S S S 5        U" S,S-S9  [3        TU5      nUR#                  USS	9  U" S.S/S0S9  g ! [         a-    U" SSS9  S[        U[        TSS9SSS9-   n[        U5      n GNf = f! [         a    / n
 GNf = f! , (       d  f       N= f! [         a(  nU" SS1[5        U5      S29  [7        S3U 3SS49   S nAg S nAff = f)6Nc                     [            U b	  U [        S'   Ub	  U[        S'   Ub	  U[        S'   Ub	  U[        S'   S S S 5        g ! , (       d  f       g = f)Nr   r   r  r   )_SU_BUILD_LOCKr  r  s       r'   r   _su_build_thread.<locals>._set6  sK    !9X#6T6!2#XYz%: u)G"4	 ^^s   1A
Asommerurlaub_feedback.jsonsommerurlaub_angebot.htmlbuilding   Fragebogen wird gelesen…r  r   r   r  rY  encodingu$   Watson ruft Reise-Empfehlungen ab…   r   r  r   zKein Anthropic API Key gefundenr   u#   Optionen werden zusammengestellt…-   rt  @  )rO  rQ  u"   Empfehlungen werden verarbeitet…F   u   Kompakten Plan erstellen…7   Tr    r   sommerurlaub_versions.jsonr  rq   sommerurlaub_angebot_v03d.htmlz%-d. %b %Y, %H:%M Uhr)r  rI  r[  fileFrp   r  indentc                    > U R                  SS5      S-   U R                  SS5      -   n[        U5      U S'   [        UT5      U S'   g )Nr   r   r  ro  rs  r  )r   r  rL  )r  r   r  s     r'   _fetch_photo&_su_build_thread.<locals>._fetch_photok  sG    7762&,swwx/DDD"4T":C.tQ7C	Nr   max_workersr^  u   Angebot wird gebaut…X   r   u#   Fertig — Angebot wartet auf euch.d   r   r   r   r   z[sommerurlaub_build] FEHLER: r   )NNNN)r   r  r  	read_textr  r  ri  r  r#   existsr  write_bytes
read_bytesr   r  	isoformatr  
write_textre  concurrent.futuresfuturesThreadPoolExecutorr  mapr   r  r   r  )r  r   	data_fileout_filerM  rN  ro  r  _dt2versions_fileversnext_narchived_namer  _cfr7  r,  r  s                    @r'   _su_build_threadr  5  s   = [!$@@IK #>>H<@J%AANJJy**G*<=82F#%'HI!!$7"EOGcRR6D	)#C(D ??# -0LLMP]PdPdPfPftzz-"9"97"9"KLln -1d2hsma'aF4VCLFM+.;;H<O<O<QRKKmm'')335**,556MN%	  $$TZZ5QR%S^e$f	8 	)###2bhhy"&=>? 3 	*R8 D)D73F!FQTUO  	)3bA1A!T1R_cmpqqC#C(D		)  & 32  @G"CG4-bT2$?@s   A
J* /'J* I "(J* :J C(J* -+J3J* 3J?J* JJ* JJ* JJ* 
J'#J* *
K4KKc                 L   UR                  SS5      nUR                  S/ 5      nSR                  S [        U5       5       5      n[        UR                  S/ 5      5      n[        UR                  S/ 5      5      [        UR                  S/ 5      5      [        UR                  S	/ 5      5      [        UR                  S
/ 5      5      [        UR                  S/ 5      5      S.nSR                  S UR	                  5        5       5      nSU  SUS SU SU SU SU  SUS S3$ )Nr  r  r  r  c              3   8   #    U  H  n[        U5      v   M     g 7fr   r  r  s     r'   r  $_su_deeper_prompt.<locals>.<genexpr>  s     D^.++^r  r  r  r  r  r   r!  )z
Janno (14)z
Thede (11)zPina (7)r  r  r  c              3   H   #    U  H  u  pU(       d  M  S U SU 3v   M     g7fr  r  )r  r   r  s      r'   r  r    s"     K~tq?T!Bqc?~r  uh   Du bist ein Reiseplaner der eine detaillierte Tiefenrecherche für eine Familie erstellt.

ZIEL-OPTION: ua   
Familie: 5 Personen (2 Erw., 3 Kinder — Janno 14, Thede 11, Pina 7), ab Berlin
Budget gesamt: r	  u     € für 2 Wochen
Zeitfenster: r  z
Personen:
z

Erstelle eine detaillierte Recherche als JSON. Antworte AUSSCHLIESSLICH mit dem JSON-Objekt, kein Markdown.

{
  "destination": "u  ",
  "intro": "2-3 Sätze warum diese Option für diese Familie passt",
  "accommodations": [
    {
      "name": "Typ + Lage (z.B. Ferienhaus in Brela, 150m vom Strand)",
      "area": "Ort/Stadtteil",
      "bedrooms": 3,
      "features": ["Klimaanlage", "Waschmaschine", "Parkplatz"],
      "description": "2-3 Sätze was diese Unterkunft für die Familie gut macht",
      "price_range": "~XXX–YYY €/Woche in KW XX",
      "booking_url": "https://www.booking.com/searchresults.html?... (echte Such-URL)",
      "booking_label": "booking.com",
      "airbnb_url": "https://www.airbnb.de/s/... (echte Such-URL)",
      "humble": "Preisangabe Richtwert — live prüfen"
    }
  ],
  "flights": [
    {
      "airline": "Airline-Name",
      "route": "BER → [Flughafen-Code]",
      "airport_dest": "Flughafen-Name (Kürzel)",
      "duration": "Xh XXmin",
      "frequency": "z.B. täglich",
      "price_5p_return": "~X.XXX € (5 Pers. hin+rück KW XX)",
      "book_url": "https://... (echte URL zur Airline oder Google Flights)",
      "book_label": "airline.com oder google.com/flights",
      "humble": "Preise nicht live geprüft — bitte direkt bei der Airline abrufen"
    }
  ],
  "car_rental": {
    "recommended_type": "z.B. VW Touran / Skoda Kodiaq",
    "seats": 5,
    "price_2weeks": "~XXX–YYY €",
    "tip": "Kurzer Hinweis (frühzeitig buchen, freie km etc.)",
    "search_url": "https://www.check24.de/mietwagen/... oder momondo",
    "search_label": "check24.de/mietwagen"
  },
  "activities": [
    {
      "for": "Janno",
      "title": "Aktivitäts-Titel",
      "description": "Kurze Beschreibung",
      "approx_cost": "~XX € pro Person"
    }
  ],
  "budget_detail": {
    "unterkunft_14n": "~X.XXX €",
    "anreise_5p": "~X.XXX €",
    "mietauto_14d": "~XXX €",
    "ausflüge": "~XXX €",
    "essen_täglich": "~XXX € (Ø pro Tag für 5P)",
    "gesamt": "~X.XXX €",
    "puffer": "~X.XXX € (vom Budget von r  u   €)",
    "humble": "Alle Angaben Richtwerte. Preise nicht live abgefragt."
  },
  "best_week_for_option": "KW XX — kurze Begründung warum diese Woche für diesen Ort ideal ist",
  "one_concern": "Der eine echte Vorbehalt den man kennen muss (oder leer lassen)"
}

REGELN:
1. Nur echte Orte, echte Fluglinien, echte Such-URLs (keine erfundenen URLs)
2. Booking.com und Airbnb Such-URLs: benutze die echten Such-Seiten (z.B. booking.com/searchresults mit ss= Parameter)
3. Preise als Richtwerte, immer humble note
4. 2-3 Unterkunfts-Optionen (verschiedene Typen/Lagen)
5. 1-2 Flug-Optionen
6. Aktivitäten: 3-5 Einträge insgesamt, für verschiedene Familienmitglieder
7. Alles auf Deutsch
)r   r  r   r  r   )r  r  r  r  	weeks_strr  r  r  s           r'   _su_deeper_promptr  ~  s2   UU8T"FUU8R F		DVF^DDIquuZ,-HaeeGR01aeeGR01AEE&"-.155B/0155B/0F Kv||~KKJX t} [ J  
 ( 4+h ,2!* 5CP Pr   r  c                 ^   SS K nSS KJn  UR                   R                  5       R	                  S5      nUR                  SU 5      nUR                  SS5      n	UR                  SUR                  SS5      5      n
UR                  SS5      nUR                  S	S
5      nUR                  SUR                  S5      S   R                  S5      S   R                  5       5      nUR                  SS5      nUR                  S/ 5      nU(       a'  UR                  R                  S[        U5      S5      nOUR                  SSS5      nUUR                  SS9-   nUR	                  S5      nUR	                  S5      nUR	                  S5      nUR	                  S5      nUR                  U5      nSU SU SU S3nSU SU SU S3nU(       a  SUR                  5        SU SU S 3OSnU(       a  S!U S"U 3OSnS#nS$U S%U 3nSnUR                  S&/ 5       H  nS'R                  UR                  S(/ 5      5      nS)U S*U S+3n UR                  S,S5      n!US-UR                  S.S5       S/UR                  S0S5       S'UR                  S1S25       S3UR                  S4S5       S5UR                  S6S5       S7U S8U  S9U!(       a  S:U! S;3OS S<3-  nM     Sn"Sn#U(       a	  U#S)U S=3-  n#U(       a	  U#S)U S>3-  n#UR                  S?/ 5       H  n$U$R                  S,S5      n!U"S@U$R                  SAS5       S'U$R                  SBS5       S'U$R                  SCS5       SDU$R                  SES5       S'U$R                  SFS5       SGU$R                  SHU$R                  SIS5      5       SJ3-  n"M     U"(       a@  UR                  S?5      (       a  US?   S   R                  S,S5      OSn%U%(       a	  U"S:U% S;3-  n"U#(       a	  U"SKU# S;3-  n"UR                  SL0 5      n&Sn'U&(       ad  SMU SU SU S3n(S)U( SN3n)S@U&R                  SOS5       S'U&R                  SPSQ5       SRU&R                  SSS5       SGU&R                  STS5       SUU) S;3n'Sn*S)U SVU SW3n+UR                  SX/ 5       Hz  n,U,R                  S,S5      n!U*S@U,R                  SYSZ5       S'U,R                  SBS5       S'U,R                  SCS5       SDU! SGU,R                  SHU,R                  SIS5      5       SJ3-  n*M|     U*(       a	  U*S[U+ S;3-  n*UR                  S\/ 5      n-Sn.U-(       a!  SR                  S] U-S S^  5       5      n/S_U/ S;3n.Sn0UR                  S`/ 5       HU  n1U0SaU1R                  SbS5       ScU1R                  SdS5       SeU1R                  S6S5       SfU1R                  SgS5       SJ3	-  n0MW     UR                  Sh0 5      n2Sn3Si H-  u  n4n5U2R                  U55      (       d  M  U3SjU4 SkU2U5    Sl3-  n3M/     U2R                  Sm5      (       a  U3SnU2Sm    Sl3-  n3U2R                  S,5      (       a  U3S:U2S,    S;3-  n3SS Kn6U2R                  SoS5      n7U6R!                  SpU7R                  5       5      n8U8(       a  U8R#                  S5      OSn9U9(       dt  Sn:Sq HO  n5U6R%                  SrU2R                  U5S5      R'                  SsS5      5      n;U;(       d  M>  U:[)        U;S   5      -  n:MQ     U:St:  a  SuU:Sv Sw3R'                  SvSs5      n9U(       a  SxU S;3OSn<U(       a  [+        U5      OSn=U(       a  [-        U5      OSn>[/        X!5      n?SR                  / SyPU PSzPU PS{PUS| PS}PU	 PS~PU
(       a  SU
-   S-   OS PSPU< PSPU PSPU" PSPU*(       a  SU*-   S-   OS PSPU'(       a  SU'-   S-   OS PSPU0 PSPU9(       a  SU9 S3OS PSPU3 PSPU? PSPU=(       d  U>(       a  SU=-   U>-   S-   OS PSPU PSP5      $ !    GMo  = f)Nr   z%d.%m.%Y %H:%Mr  intror   	best_weekbest_week_for_optionone_concernr  r  r<  r  &r=  r  r  rq   r>  r?  r  r@  rA  rB  rC  rD  rE  rG  rH  rI  rL  rM  rN  zChttps://www.google.com/travel/flights?q=Fl%C3%BCge+von+Berlin+nach+z+am+zhttps://www.nightjet.com/dezGhttps://www.bahn.de/buchung/fahrplan/suche#sts=true&so=Berlin%20Hbf&zo=z&hd=r  u    · featuresz<a class="book-link" href="uO   " target="_blank" rel="noopener">Booking.com ↗</a><a class="book-link" href="u/   " target="_blank" rel="noopener">Airbnb ↗</a>humblez[
<div class="card fade">
  <div class="card-head">
    <div>
      <div class="card-title">r   z#</div>
      <div class="card-sub">areabedroomsrm  z; Schlafzimmer</div>
    </div>
    <div class="card-price">r  z#</div>
  </div>
  <p class="prose">descriptionz</p>
  <div class="feat-row">z!</div>
  <div class="card-links">r  rz  r  r  u3   " target="_blank" rel="noopener">Skyscanner ↗</a>u7   " target="_blank" rel="noopener">Google Flights ↗</a>r  z/
<div class="d-row">
  <div class="d-lbl">
    airliner  durationz
    <small>	frequencyairport_destz,</small>
  </div>
  <div class="d-val gold">price_5p_returnr  r  z0<div class="card-links" style="margin-top:10px">
car_rentalrO  u0   " target="_blank" rel="noopener">Check24 ↗</a>recommended_typeseatsr  u    Sitzplätze
    <small>tipprice_2weeksz=</div>
</div>
<div class="card-links" style="margin-top:6px">uL   " target="_blank" rel="noopener">Nightjet ↗</a><a class="book-link" href="u0   " target="_blank" rel="noopener">Bahn.de ↗</a>trainsr  rb  z/<div class="card-links" style="margin-top:6px">	data_gapsc              3   .   #    U  H  nS U S3v   M     g7f)z<div class="gap-item">? r  Nr  )r  r  s     r'   r  +_su_deeper_generate_html.<locals>.<genexpr>N  s     Oh21#V<hr*  ru   ub   <div class="data-gaps fade"><div class="s-label">Nicht recherchiert — bitte selbst prüfen</div>r  z3
<div class="act-row fade">
  <div class="act-for">forz;</div>
  <div class="act-body">
    <div class="act-title">titlez!</div>
    <div class="act-desc">z(</div>
  </div>
  <div class="act-cost">approx_costbudget_detail))u   Unterkunft 14 Nächteunterkunft_14n)zAnreise 5 Personen
anreise_5p)zMietauto 14 Tagemietauto_14d)u   Ausflüge & Aktivitäten	   ausflüge)u   Essen (Ø/Tag × 14)   essen_täglichr~  z</div><div class="d-val">r  pufferz`<div class="d-row"><div class="d-lbl">Puffer</div><div class="d-val" style="color:var(--green)">gesamtu   (~?[\d.,]+\s*[€]))r7  r8  r9  r:  r;  z\d[\d.]+r    r  r  r
  u   <div class="warn fade">⚠ u   <!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Watson Tiefenrecherche — u#  </title>
<link rel="manifest" href="/sommerurlaub_tief.webmanifest">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="Tiefenrecherche">
<meta name="theme-color" content="#0a0a0a">
<style>
*{box-sizing:border-box;margin:0;padding:0;}
:root{
  --bg:#0c0c0c;--card:#141414;--border:#1e1e1e;
  --text:#e8e4da;--muted:#666;--muted2:#444;
  --gold:#d4a843;--gold-dim:rgba(212,168,67,.13);
  --green:#4caf82;
  --r:12px;
  --font:system-ui,-apple-system,'Helvetica Neue',sans-serif;
}
html{background:var(--bg);color:var(--text);font-family:var(--font);}
body{max-width:600px;margin:0 auto;padding:env(safe-area-inset-top,20px) 22px calc(env(safe-area-inset-bottom,0px)+64px);}
.hero{padding:52px 0 32px;border-bottom:1px solid var(--border);margin-bottom:44px;}
.hero-eye{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:16px;}
.hero h1{font-size:clamp(1.9rem,6.5vw,2.8rem);font-weight:700;line-height:1.08;letter-spacing:-.03em;margin-bottom:12px;}
.hero h1 em{font-style:normal;color:var(--gold);}
.hero-sub{font-size:14px;color:#888;line-height:1.6;}
.s{margin-bottom:48px;}
.s-label{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:20px;}
.prose{font-size:15px;line-height:1.78;color:#bfbcb2;}
/* CARDS */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:20px;margin-bottom:14px;}
.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;}
.card-title{font-size:15px;font-weight:700;line-height:1.3;margin-bottom:3px;}
.card-sub{font-size:11px;color:var(--muted);}
.card-price{font-size:13px;font-weight:700;color:var(--gold);white-space:nowrap;text-align:right;flex-shrink:0;}
.feat-row{font-size:11px;color:#555;margin-top:10px;}
.card-links{margin-top:9px;display:flex;gap:8px;flex-wrap:wrap;}
/* DETAIL ROWS */
.details-group{border-top:1px solid var(--border);margin-top:0;}
details{border-bottom:1px solid var(--border);}
details summary{cursor:pointer;padding:14px 0;font-size:12px;font-weight:700;color:var(--gold);letter-spacing:.03em;display:flex;justify-content:space-between;align-items:center;list-style:none;-webkit-appearance:none;user-select:none;}
details summary::-webkit-details-marker{display:none;}
details summary::after{content:'↓';font-size:11px;color:var(--muted);transition:transform .2s;}
details[open]>summary::after{transform:rotate(180deg);}
.det-body{padding:0 0 18px;}
.d-row{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:8px 0;border-bottom:1px solid #1a1a1a;font-size:13px;}
.d-row:last-of-type{border-bottom:none;}
.d-lbl{color:#999;line-height:1.5;flex:1;}
.d-lbl small{display:block;font-size:11px;color:#555;margin-top:2px;}
.d-val{font-weight:700;color:var(--text);white-space:nowrap;text-align:right;flex-shrink:0;}
.d-val.gold{color:var(--gold);}
.d-val.total{font-size:15px;color:var(--green);}
.src-link{color:#4a7a9b;font-size:10px;text-decoration:none;margin-left:4px;white-space:nowrap;}
.src-link:hover{text-decoration:underline;}
.book-link{display:inline-flex;align-items:center;font-size:11px;font-weight:600;color:#4a7a9b;text-decoration:none;padding:5px 11px;border:1px solid #1e3a4a;border-radius:100px;white-space:nowrap;transition:border-color .2s,color .2s;}
.book-link:hover{color:#7ab4d4;border-color:#2a5a74;}
.humble{font-size:10px;color:#3a3a3a;margin-top:10px;line-height:1.65;font-style:italic;}
/* BUDGET HERO */
.budget-hero{text-align:center;padding:28px 0 20px;}
.budget-total{font-size:2.6rem;font-weight:700;color:var(--gold);letter-spacing:-.04em;line-height:1;}
.budget-label{font-size:11px;color:var(--muted);margin-top:8px;}
/* ACTIVITIES */
.act-row{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid #1a1a1a;align-items:flex-start;}
.act-row:last-child{border-bottom:none;}
.act-for{font-size:10px;font-weight:700;color:var(--gold);letter-spacing:.1em;text-transform:uppercase;width:56px;flex-shrink:0;padding-top:2px;}
.act-body{flex:1;}
.act-title{font-size:13px;font-weight:700;margin-bottom:3px;}
.act-desc{font-size:12px;color:#888;line-height:1.5;}
.act-cost{font-size:12px;color:var(--muted);white-space:nowrap;flex-shrink:0;text-align:right;}
/* WARN */
.warn{background:#12100a;border:1px solid #2e2410;border-radius:8px;padding:11px 14px;font-size:11px;color:#a09050;line-height:1.6;margin-bottom:24px;}
/* BACK LINK */
.back{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);text-decoration:none;padding:10px 0 30px;}
.back:hover{color:var(--text);}
/* FOOTER */
.footer{text-align:center;padding:36px 0 16px;font-size:10px;color:#2a2a2a;line-height:1.9;}
.footer a{color:#3a3a3a;text-decoration:underline;}
.fade{opacity:0;transform:translateY(10px);transition:opacity .5s ease,transform .5s ease;}
.fade.in{opacity:1;transform:none;}
/* MOTORHAUBE */
.motorhaube{margin-bottom:44px;border:1px solid #1e1e1e;border-radius:var(--r);}
.motorhaube>summary{cursor:pointer;padding:16px 20px;font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.04em;display:flex;justify-content:space-between;align-items:center;list-style:none;-webkit-appearance:none;user-select:none;}
.motorhaube>summary::-webkit-details-marker{display:none;}
.motorhaube>summary::after{content:'↓';font-size:11px;color:var(--muted2);transition:transform .2s;}
.motorhaube[open]>summary{border-bottom:1px solid #1e1e1e;}
.motorhaube[open]>summary::after{transform:rotate(180deg);}
.motorhaube-body{padding:24px 20px;}
/* VERIFICATION */
.verify-ok{font-size:11px;color:#4caf82;margin-bottom:32px;padding:10px 14px;background:rgba(76,175,130,.07);border:1px solid rgba(76,175,130,.2);border-radius:8px;}
.verify-section{margin-bottom:44px;}
.verify-note{font-size:11px;color:#555;margin-bottom:18px;line-height:1.6;font-style:italic;}
.vs-grid{display:flex;flex-direction:column;gap:12px;}
.vs-block{background:#141414;border:1px solid #1e1e1e;border-radius:10px;padding:16px 18px;}
.vs-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.vs-name{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#aaa;}
.vs-overall{font-size:11px;font-weight:700;}
.vs-summary{font-size:11px;color:#777;margin-bottom:10px;line-height:1.55;font-style:italic;}
.vf-row{display:flex;align-items:flex-start;gap:10px;padding:6px 0;border-bottom:1px solid #1a1a1a;font-size:12px;}
.vf-row:last-child{border-bottom:none;}
.vf-icon{font-weight:700;font-size:13px;flex-shrink:0;width:14px;}
.vf-claim{color:#888;line-height:1.4;}
.vf-note{font-size:10px;color:#555;margin-top:2px;line-height:1.5;}
/* RED TEAM */
.rt-ok{font-size:11px;color:#4caf82;margin-bottom:32px;padding:10px 14px;background:rgba(76,175,130,.07);border:1px solid rgba(76,175,130,.2);border-radius:8px;}
.redteam-section{margin-bottom:44px;}
.rt-head{display:flex;align-items:center;gap:10px;margin-bottom:16px;}
.rt-verdict-badge{font-size:11px;font-weight:700;letter-spacing:.06em;}
.rt-note{font-size:11px;color:#444;font-style:italic;}
.rt-issue{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid #1a1a1a;}
.rt-issue:last-of-type{border-bottom:none;}
.rt-sev{font-size:14px;flex-shrink:0;width:18px;}
.rt-claim{font-size:12px;color:#888;line-height:1.4;margin-bottom:3px;font-style:italic;}
.rt-issue-text{font-size:12px;line-height:1.45;}
.rt-suggestion{font-size:11px;color:#555;margin-top:3px;}
.rt-sub-title{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:16px 0 8px;}
.rt-trap{font-size:12px;color:#a09050;padding:5px 0;border-bottom:1px solid #1a1a1a;}
.rt-trap:last-child{border-bottom:none;}
.rt-missing-item{font-size:12px;color:#666;padding:5px 0;border-bottom:1px solid #1a1a1a;}
.rt-missing-item:last-child{border-bottom:none;}
.rt-positive{font-size:12px;color:#4caf82;margin-top:14px;padding:10px 14px;background:rgba(76,175,130,.05);border-radius:6px;}
/* DATA GAPS */
.data-gaps{margin-bottom:44px;}
.gap-item{font-size:12px;color:#444;padding:5px 0;border-bottom:1px solid #161616;}
.gap-item:last-child{border-bottom:none;}
/* BOOKING LINKS */
.booking-links-section{margin-bottom:44px;}
.bl-note-top{font-size:11px;color:#444;margin-bottom:14px;line-height:1.6;font-style:italic;}
.bl-grid{display:flex;flex-direction:column;gap:10px;}
.bl-card{display:flex;align-items:center;gap:14px;background:#141414;border:1px solid #1e1e1e;border-radius:10px;padding:14px 16px;text-decoration:none;color:var(--text);transition:border-color .2s;}
.bl-card:hover{border-color:rgba(212,168,67,.4);}
.bl-icon{font-size:20px;flex-shrink:0;width:28px;text-align:center;}
.bl-body{flex:1;}
.bl-name{font-size:13px;font-weight:700;margin-bottom:2px;}
.bl-note{font-size:11px;color:#555;}
.bl-arrow{font-size:14px;color:var(--gold);flex-shrink:0;}
</style>
</head>
<body>

<a class="back" href="/angebot">← Zurück zur Übersicht</a>

<div class="hero fade">
  <div class="hero-eye">Watson Tiefenrecherche · Sommer 2026</div>
  <h1><em>u\   </em><br>im Detail</h1>
  <p class="hero-sub">5 Personen · 2 Wochen · ab Berlin · Budget r	  u9    €</p>
</div>

<div class="s fade">
  <p class="prose">r  uI   <p class="prose" style="margin-top:14px;font-size:13px;color:#888;">📅 z</p>z	
</div>

u>   

<div class="s">
  <div class="s-label">Unterkünfte</div>
  u   
</div>

<div class="s">
  <div class="s-label">Anreise</div>
  <div class="details-group">
    <details open>
      <summary>Flüge ab Berlin</summary>
      <div class="det-body">z</div>
    </details>
    z@<details><summary>Nachtzug / Zug</summary><div class="det-body">z</div></details>rc  zB<details><summary>Mietauto vor Ort</summary><div class="det-body">u   
  </div>
</div>

<div class="s">
  <div class="s-label">Aktivitäten für alle</div>
  <div style="border-top:1px solid var(--border);">zK</div>
</div>

<div class="s">
  <div class="s-label">Gesamtbudget</div>
  z3<div class="budget-hero"><div class="budget-total">u^   </div><div class="budget-label">Geschätzte Gesamtkosten · 5 Personen · 2 Wochen</div></div>u|   
  <div class="details-group">
    <details>
      <summary>Aufschlüsselung anzeigen</summary>
      <div class="det-body">z'</div>
    </details>
  </div>
</div>

r  u   <details class="motorhaube"><summary>Der Blick unter die Motorhaube — wie diese Empfehlung entstand</summary><div class="motorhaube-body">uA   

<div class="footer fade">
  Watson Tiefenrecherche · Erstellt uf   · Alle Angaben Richtwerte · Live-Daten: Perplexity · Verifikation: ChatGPT Red Team + Gemini + Claude
</div>

<script>
const obs = new IntersectionObserver(e => {
  e.forEach(x => { if (x.isIntersecting) x.target.classList.add('in'); });
}, { threshold: .05 });
document.querySelectorAll('.fade').forEach(el => obs.observe(el));
</script>
</body>
</html>)r  r  r  r  r  r   r  r"   r  r  r  r  r  r?  r  r   matchr   findallreplaceintr  r9  r\  )@r  r  r  r  r  r  r8  r  r  r  r  r  r  r<  r=  r  ci_dateco_daterT  rU  ci_cco_crY  booking_url
airbnb_urlskyscanner_urlgflights_urlnightjet_urlbahn_url	acc_cardsr  featsr+  r!  flight_rowsflight_links_htmlr  first_humblecarcar_htmlcheck24_urlcar_link
train_rowstrain_links_htmltrgaps	gaps_htmlr   act_rowsr  r  budget_detail_rowsr[  r   _re_b_gesamt_raw_mbudget_gesamtr  numsconcern_htmlverify_htmlred_team_htmlbooking_links_htmls@                                                                   r'   _su_deeper_generate_htmlrf    sh   00<<##%../?@L((=&1KHHWb!Edhh/Er&JKI((="-KXXh%F 88FK--c215;;C@CIIKLD88FBDXXh#F((**4Va@((4A&2..G			*	%B			*	%BH%DH%Dzz$HEhZyY[X\\fgifj  k@  AK+H:_RD
SURVVjkJ ~BG

~UVW[V\\]^b]ccxy  HJNosXYaXbbfgifjky{L0LXYaXbbfgifjkH IXX&+AEE*b12.{m <//9l:ikx$   !uuVB/0 1UU6"-.d155A3F2G HUU=45 6EE-+, -   ' ",2&(; <
 	
	 ,* K:>:JJ}~~:<.H  A  	AXXi$x$  UU9RaeeGB/0QUU:b5I4J KEE+b!"$quu^B'?&@ A55!2AEE:J24NOP Q
 	
 % >Bhhy>Q>QtIq)--hr:WY1,vFFKIJ[I\\bcc ((<
$CH
H
RSTVSWWXY[X\\]^0=mn 	WW#$D);(< =GGE" 77>"56 7008zC J5l^ D66>Z?oqhhx$"%  VVF5$rvvgb12$rvvj7L6M N8 66"3RVV<LR5PQR S
 	

 % GHXGYY_``
 88K$DIOd2AhOOxy~x  @F  G	 Hxxb) b)* +GGGB/0 177=45 6r23 4
 	
 * 
/2	&BB
s 66#;;$J5'Qjkmnqkrjss  #A  A	B
 
vvh  !A  BD  EM  BN  AO  O[  \  	\	vvh 4R\N&II&&2&K	+[->->-@	AB#%BHHQK2MbC==bffS"o.E.Ec2.NODtc$q'l*U c
 3;ay-55c3?MHS0VDY[L39'/rK3;%h/M/;L L # L
 $/-L
L0Lb -cLbEcLd FLDMeLdReLl 7mLlmLn hqNQZZ]ccvxyoLnzoLt uLtuL| +}L|}LL )MMLL*MLP nxG*TWii}  AQLPAQLR nvIHTWii{}~SLR4SL^ 5=:_L^>_Lh kx8  Hf  g  ~@  AiLhAiLp 00qLp1qLz  {Lz{L~ HS  Wd  P  S^  ^  an  n  qC  C  km  nL~n&LD '3^ELD
4EL L s   ;`&&`,c                    S n[        U 5      S-  n[        U 5      S-  n U" SSSUS9  UR                  5       (       a#  [        R                  " UR	                  SS	95      O0 nU" S
U S3SS9  [        X5      nU" SSS9  [        5       nU(       d  U" SSS9  g [        U5      S:  a  US S OUn[        XU5      n	[        XySS9n
U" SSS9   [        U
5      nU" S S!S9  0 n [        S"5      nU(       a8  [        [        R                  " US#S$9S S Xa5      n[!        UUS%S9n[        U5      nU" S'S(S9  UR#                  S)UR#                  S*S+5      5      n0 n [%        XU5      nU" S-S.S9  ['        XUUUS/9nUR)                  USS	9  U" S0S1S2S39  g ! [         aA  n[        SU 3SS9  U" SSS9  [        US S XQSS9n[        X}SS9n[        U5      n S nANS nAff = f! [         a  n[        S&U 3SS9   S nANS nAff = f! [         a  n[        S,U 3SS9   S nANS nAff = f! [         a(  nU" SS4[+        U5      S59  [        S6U 3SS9   S nAg S nAff = f)7Nc                  n    [            [        R                  U 5        S S S 5        g ! , (       d  f       g = fr   )_SU_DEEPER_LOCKr  r   )r  s    r'   r   _su_deeper_thread.<locals>._setN  s    b! __s   &
4r  sommerurlaub_tief.htmlr  r  r  )r   r   r  r  rY  r  u!   Perplexity sucht Live-Daten für    …   r  u*   Watson strukturiert Plan aus Live-Daten…(   r   zKein Anthropic API Keyr   ip  r  r  u   Plan wird verarbeitet…>   z=[sommerurlaub_json] JSON-Fehler, Retry mit kompaktem Prompt: Tr   u'   Plan wird neu strukturiert (kompakt)…A   i  r  r  u.   Red Team (ChatGPT) prüft den Plan kritisch…H   r  Fr  i  z [sommerurlaub_redteam] WARNUNG: u5   Fakten-Verifikation (Perplexity + Gemini + Claude)…U   r  r  r  z[sommerurlaub_verify] WARNUNG: u   Seite wird gebaut…`   )r  r  r   z1Tiefenrecherche + Red Team + Verifikation fertig.r  r  r   r   z[sommerurlaub_deeper] FEHLER: )r   r  r  r  r  r  r  rA  r  ri  r  r#   r  rl  r  re  r|  r   r  rf  r  r   )r  r  r   r  r  r  r  rM  brief_trimmedstruct_promptraw_planr:  _jecompact_prompt	raw_plan2r  
openai_key	rt_promptraw_critiquertexr  r  vexr,  r7  s                            r'   _su_deeper_threadr  M  s   " [!$@@IK #;;H=AJ%AAV\]AJAQAQASASDJJy**G*<=Y[ 	5fXSABO.v9 	>L#%'?@ 25^1Dt1Ku-Q_3MfM"7dK,r:	/#H-D 	BRP	I$X.J7JJt%8$?Y	.z9QUV+L9
 	ITVW|QUU8T%:;	G)$?F 	(26'4QYZD73F!T_bcE  	/QRUQVW_cd?"M8u9MqbfgN'DQI#I.D	/$  	I4TF;4H	I  	G3C59F	G  AG"CG4.rd34@As   A8H' 3H' F 	H' #A
G -+H' H %+H' 
G7GH' GH' 
H )G;6H' ;H  H' 
H$HH' H$$H' '
I1II_SPAWNS_CACHErr  c                     SSK n [           U R                  5       n[        (       a@  U[        R                  SS5      -
  [        :  a  [        R                  S0 5      sSSS5        $ SSS5         [        5       n[           U R                  5       [        S'   U[        S'   SSS5        U$ ! , (       d  f       NJ= f! [         a"  n[        SU 3SS9  / SSSSS.SS	.n SnANiSnAff = f! , (       d  f       U$ = f)
u   Liest alle JSONL-Sessions unter ~/.claude/projects/ die in den letzten 24h geändert wurden.
Gibt Spawns-Liste + Summary zurück. Crasht nie.r   NrI  r  z[spawns] Fehler: Tr   haikusonnetopusunknownspawnsr  r  )r   _SPAWNS_LOCKr  r   _SPAWNS_CACHE_TTL_spawns_fetchr#   r  )r   r  result_excs       r'   _spawns_getr    s     	jjl=cM$5$5dA$>>BSS $$VR0 

k
 
#jjld &f 
 M 
  k!$(5Q!Q[\+]hijk 
 Ms0   AB+0
B<  !C++
B9<
C(C##C(+
C:c                     SSK n SSKnUR                  5       S-
  n[        R                  " 5       S-  S-  nUR	                  5       (       d  / SSSSS.SS.$ / nUR                  S5       GH{  n UR                  5       R                  U:  a  M%    UR                  U5      nUR                  nU(       a  US   OS	nUR                  S
S5      R                  S5      R                  S5      S   =(       d    Un	[        U5      S:  =(       a    US   S:H  n
UR                  nSnSn [#        USSSS9 n[%        U5       H  u  nnUS:  a    OUR'                  5       nU(       d  M'   [(        R*                  " U5      nU(       d  UR1                  SS5      nU(       a  UnU(       a  Mi  UR1                  S0 5      n[3        U[4        5      (       d  M  UR1                  S5      S:X  d  M  UR1                  SS5      nM     SSS5        SnU(       aF   SSKnUSS R                  SS5      nUR8                  R;                  U5      nUR=                  S5      nUR?                  5       nS!U;   a  S!nO$S"U;   a  S"nOS#U;   d  U(       a  U(       a  S#OS	nOS	nURA                  UU=(       d    S	UU	USS$ U
UR	                  5       (       a  UR                  5       R                  OSS%.5        GM~     URC                  S& S'S(9  U H  nURE                  S)S5        M     SSSSS.nU H*  nUS*   nUU;   a  UU==   S-  ss'   M  US	==   S-  ss'   M,     UU[        U5      S.$ ! [         a     GM   f = f! [          a    S	n	Sn
UR                  n GNjf = f! [(        R,                  [.        4 a     GMo  f = f! , (       d  f       GN= f! [        [6        4 a     GNf = f! [          a	    USS  n GNf = f)+zBDurchsucht ~/.claude/projects/ nach JSONL-Dateien der letzten 24h.r   NQ .claudeprojectsr  r  *.jsonlr  -rM  r  rp   rq   	subagentsFr   rK  rY  rA  r  r  r  	timestamprt  rT  rV  rP     Tr  z%H:%Mr  r  r  r  rm  )r   rP  tierprojectr'  is_subagentmtimec                 &    U R                  SS5      $ )Nr  r   r   rm   s    r'   r   _spawns_fetch.<locals>.<lambda>	  s    aeeGQ/r   Tr   r  r  )#r   r   r   homer  rglobr   r   OSErrorrelative_tor~  rA  lstripr  rA  stemr#   openrv  r"   r  r  r  
ValueErrorr   r  dictIOErrorr  fromisoformatr  r?  r   sortr   )_globr   cutoffprojects_rootr  
jsonl_pathrelr~  project_rawproject_namer  
session_idtimestamp_str	model_raw_fr|  r   entryts_rawr  time_displayr  ts_cleandtmodel_lowerr  rw  r  rJ  s                                r'   r  r    s   ZZ\E!FIIK)+j8M!!11YZ)[fghhF#)))4
	 ))F2 3	)((7CIIE&+%(K '..sC8??DJJ3OPRSbWbLe*/EeAh+.EK#J 		j#	Jb(}GAt2v::<D ! $

4 0 )!&;!;!,2M$9#ii	26%c400SWWV_5S(+(<I'  - K2 1&("-55c3?\\//9!{{73
  oo'k!D{"D$*8	DD +)#Sb/&3=3D3D3F3FZ__&//A
 	S 5h KK/K>	gt  Qa@GfI<AJ!OJI!#  3v;GG{  		  	)$LK#J	)$ !00*= ! ! KJ* ! 		  1,Ra01s   /MBM.&O23N1&N<'N1'%N1N1'N1=OAO
M+*M+.NNN.	)N1-N.	.N11
O 	;O OOOO-,O-c                       [         R                  " / SQSSSS9n U R                  S:X  a  U R                  R	                  5       $ S$ ! [
         a     gf = f)uH   Liest Admin-Key aus macOS Keychain. Gibt '' zurück wenn nicht gefunden.)r   r   r   zanthropic-adminr   zdispatcher-usager   Tr  capture_outputr   r  r   r   )r   runr   r   r"   r#   rK  s    r'   _anthropic_admin_keyr  	  sT    NNjdA
 $%<<1#4qxx~~<"< s   AA A 
AAc           	      |   SSK Jn  SSKJn  UR	                  5       nUR                  SS9R                  5       nSU S3nU SS	.n0 nSn  XX(       a  SU 3OS-   n	UR                  XS9n
UR                  U
SS9 n[        R                  " UR                  5       R                  5       5      nSSS5        WR                  S/ 5       Hq  nUR                  S5      =(       d    /  HP  nUR                  S5      =(       d    Sn [        UR                  SS5      5      nUR                  US5      U-   X'   MR     Ms     UR                  S5      (       a  UR                  S5      (       d  OUS   nGM&  / nUR'                  5        HV  u  nnSUR)                  5       ;   a  SOSUR)                  5       ;   a  SOSnUR+                  UU[-        US-  S5      S.5        MX     UR/                  S  S
S!9  U$ ! , (       d  f       GNJ= f! [        [         4 a    Sn Nf = f! ["         a  n[%        SU 3S
S9   SnANSnAff = f)"uU   Ruft Anthropic Cost Report API ab, paginiert. Gibt aggregierte Modell-Kosten zurück.r   N)r  rq   )r  zChttps://api.anthropic.com/v1/organizations/cost_report?starting_at=z&group_by[]=descriptionr[  )r^  r_  Tz&page=r   r  r>  r  r  r  rP  r  amount        has_more	next_pagez[anthropic_costs] API-Fehler: r   r  r  r  r  ru   )rP  r  cost_usdc                     U S   $ )Nr  r  r  s    r'   r   (_anthropic_costs_fetch.<locals>.<lambda>O	  s    a
mr   r   )r  r  r  r  todayrA  r  r  r  r  r  r  rg  r   r   	TypeErrorr  r#   r  r   r?  r   roundr  )rM  _ureq_dater  r{  base_urlhdrsmodel_totalspagerY   r  r  ro  r  resrP  centsr   r  r  s                       r'   _anthropic_costs_fetchr  )	  s   "&KKMEMMaM **,ETUZT[[rsH |DD LDBtfo2>C---2CsB/4jj!3!3!56 0,!IIi06B6CGGG,9	E$ %cggh&: ; +7*:*:5#*F*NL' 7 - 77:&&cggk.B.B{#D ( F$**,u!U[[]2w6U[[]CZ`htus{TUAVWX - KK+TK:M- 0/ &z2 $ #$  B.se4DABs\   
0H :3G0-AH HAH )H 0
G?:H HH HH 
H;$H66H;c                     SSK n [           U R                  5       n[        (       a6  U[        R                  SS5      -
  [        :  a  [        S   SS.sSSS5        $ SSS5        [        5       nU(       d  S/ S.$ [        U5      n[           U R                  5       [        S'   U[        S'   SSS5        US	S.$ ! , (       d  f       Nc= f! , (       d  f       N$= f)
u9   Gibt gecachte oder frisch abgerufene Kostendaten zurück.r   NrI  r  T)r  cachedno_key)r   r  F)r   _ANTHROPIC_COSTS_LOCKr  r   _ANTHROPIC_CACHE_TTLr  r  )r   r  rM  r  s       r'   _anthropic_costs_getr  R	  s    	jjl!!s-C-G-Ga-P'PTh&h26:dK 
		
 #$G!2..!'*D	',zz|t$)-v& 
 E** 
	 
	s   AB:!C:
C
Cc                      [         R                  " / SQSSS9n U R                  S:X  a9  U R                  R	                  5       (       a  U R                  R	                  5       $ S $ )N)r   r   r   
realdebridr   rM  r   Tr  r   r   )r   r  r   r   r"   r  s    r'   	_rd_tokenr  d	  sI    g&*	7A ||q0QXX^^5E5E188>>O4Or   tokenc           
      l    [         R                  " / SQSS9  [         R                  " SSSSSS	S
U /SS9  g )N)r   delete-generic-passwordr   r  r   rM  Tr  r   add-generic-passwordr   r  r   rM  r   )r   r  r  s    r'   _rd_save_tokenr  i	  s:    NN_"&(NNJ 6lDR[]achi"&(r   rc  endpointc                    SS K Jn  SS KJn  [        U-   nSSU=(       d    [        5       =(       d    S 30nS nU(       a$  UR                  U5      R                  5       nSUS'   UR                  XhXpS9n	UR                  U	SS	9 n
U
R                  5       R                  5       nUR                  5       (       a  [        R                  " U5      O0 sS S S 5        $ ! , (       d  f       g = f)
Nr   r  rp  r   z!application/x-www-form-urlencodedr`  rb  r  r  )r  r  r  r  RD_API_BASEr  r
   rf  r  r  r  rg  r"   r  r  )rc  r  r  r  r  _uparserY   r  bodyr  r  ro  s               r'   _rd_apir  o	  s    ;;

 C'%*D9;*D")E FGGD  &--/"E
---
GC	sB	'4iik  ""%))++tzz#2 
(	'	's   AC
C'folderc                 z    [        U 5      R                  5       nUR                  5       (       a  U$ [        S-  U-  $ )Nr   )r   
expanduseris_absoluteWATSON_VOICES_DIR)r  r  s     r'   _rd_target_folderr  |	  s8    &\$$&F},v55r   
video_pathdest_folderc                 r   SS K nSS Kn UR                  SSSSSS[        U 5      /SSS	S
9nUR                  S:w  a  g UR                  UR                  5      R                  S/ 5      nU Vs/ s H  ofR                  S5      S:X  d  M  UPM     nn[        S [        U5       5       S 5      nUc  g XR                  S-   -  n	UR                  SSS[        U 5      SSU 3SSS[        U	5      /
SSSS
9n
U
R                  S:X  a   U	R                  5       (       a  [        U	5      $ S $ s  snf ! [         a     g f = f)Nr   z/opt/homebrew/bin/ffprobez-vquietz-print_formatr  z-show_streamsTrr  r  streams
codec_typer  c              3      #    U  H?  u  pUR                  S 0 5      R                  SS5      R                  5       S;   d  M;  Uv   MA     g7f)tagslanguager   )gerdeudeNr   r?  r  s      r'   r  (_extract_german_audio.<locals>.<genexpr>	  sF      W341fb!%%j"5;;=AUU Q3s   :A	 	A	z	_ger.flac/opt/homebrew/bin/ffmpeg-y-iz-mapz0:a:z-vnz-c:aflac   )r   r  r  r   r   r  r   r   nextrv  r  r  r#   )r  r  r   _jsonprober  rw  audio_streams	audio_idxout_pathr  s              r'   _extract_german_audior  	  sT   +($&c*o/dB  

 q ++ell+//	2>$+NGquu\/Bg/MGNW9]3 W
	
 //K"?@gg'tS_tI;'HOdD  

 !$! 38I8Is8}StS O  s;   2D) /D) ,D$D$!D) 0A1D) "D) $D) )
D65D6c                      SSK Jn   [           [        S   (       a  [        S   sSSS5        $ U R	                  U R                  5       5      n UR                  [         S3SS9  SSK	J
n  UR                  5       nU R	                  U R                  U5      5      n UR                  [         S3SS9  SR                  S U 5       5      nU[        S'   UsSSS5        $ ! [         a     Nf = f! [         a     NHf = f! , (       d  f       g= f)	z(Get (or refresh) Jackett session cookie.r   Nr  z/UI/Dashboardr%  r  z; c              3   V   #    U  H  oR                    S UR                   3v   M!     g7f=N)r   r  r  r}  s     r'   r  *_jackett_session_cookie.<locals>.<genexpr>	  s!     ?3avvhay13s   '))r  r  _JACKETT_LOCKr  build_openerHTTPCookieProcessorr  JACKETT_URLr#   http.cookiejar	cookiejar	CookieJarr  )r  opener_cjjaropener2cookiess         r'   _jackett_session_cookier"  	  s    "	H%#H- 
 ##E$=$=$?@	KK;-}5rKB 	%mmo$$U%>%>s%CD	LLK=6LC ))?3??%,"' 
  		  		 
sX   C?C?C%6C?C/3"C?
C,)C?+C,,C?/
C<9C?;C<<C??
Dcatc           
        ^^  SSK Jn  SSKJn  SSKJs  Jn  UR                  [        SXS.5      n[         SU 3nUR                  U5      n UR                  USS9 nUR                  5       R                  SS	S
9n	SSS5         UR                  W	5      nSm / nUR#                  S5       GHr  mU4S jnUU 4S jnU" S5      nU" S5      nU" S5      =(       d    U" S5      nU" S5      nU" S5      =(       d    SnTR%                  S5      nSnSn/ nUb!  UR'                  UR)                  SS5      5        U(       a  UR'                  U5        U H  nU(       d  M  UR+                  S5      (       a  Un  OsUR+                  S5      (       d  M>  U(       a  MG   SSK Jn   " S SUR,                  5      nUR/                  U" 5       5      n UR1                  USS9  U(       a  M  UnM      [7        [9        U5      S-  S-  5      nUR'                  UUUUUUS.5        GMu     U$ ! , (       d  f       GN= f! [         a  n
/ s Sn
A
$ Sn
A
ff = f! UR                    a    / s $ f = f! UR2                   aE  nUR4                  R)                  SS5      nUR+                  S5      (       a	  Un SnA  M   SnANSnAff = f! [         a     Nf = f! [         a    Sn Nf = f)z@Search Jackett via Torznab 'all' indexer. Returns list of dicts.r   Nr   )apikeyrJ  r  r#  z'/api/v2.0/indexers/all/results/torznab?   r  rY  rA  r  $http://torznab.com/schemas/2015/feed.//itemc                 H   > TR                  U 5      nUb  UR                  $ S$ )Nr   )findr   )tagelitems     r'   _t_jackett_search.<locals>._t	  s#    3B n2774"4r   c                 b   > TR                  ST SU  S35      nUb  UR                  SS5      $ S$ )Nrt  z}attr[@name="z"]r  r   )r+  r   )r   r-  r.  nss     r'   _attr_jackett_search.<locals>._attr	  s:    Rt>$r:;B*,.266'2&@b@r   r4  linksizeseedersjackettindexerr   	enclosurerY   magnet:httpc                       \ rS rSrS rSrg)_jackett_search.<locals>._NRi	  c                     g r   r  )selfr  r  s      r'   redirect_request-_jackett_search.<locals>._NR.redirect_request	  s    Tr   r  N)__name__
__module____qualname____firstlineno__r@  __static_attributes__r  r   r'   _NRr=  	  s    Ir   rG  r  Location   )r4  magnettorrent_urlsize_mbseedsindexer)r  r  r  r  xml.etree.ElementTreeetreeElementTreer
   JACKETT_KEYr  r  r  r  rg  r#   
fromstring
ParseErrorr@  r+  r   r   
startswithHTTPRedirectHandlerr  r  	HTTPErrorr  r  rB  )!r  r#  r  r  ETparamsrY   r  rK  rU  r  rootr  r/  r3  r4  r5  size_strrM  rN  encrJ  rK  _candidates_valr9  rG  _opener_he_locrL  r.  r2  s!                                  @@r'   _jackett_searchrb  	  s   TTT]]kuYZFM@
IC
--
C]]3]+qffhoogio@G ,}}W% 
0BGY'	5	A g;f:=.BvJ#)*0bii$?swwub12t$Dy))v&&vv1Jd66 J"//6G"T15 v"&K/  0	CMD0478G 	&
 	c (r NG ,+ 	 == 	P  >> ""{{z2>??955%)F! 6"
 !   	G	s   H7 H%=H7 I 1K I(,K%
H4/H7 4H7 7
IIIII%$I%(J=84J8,K 3K 8J==K  
KKKKrw  extrac                 z   SS K Jn  SS KJn  U [        SS.nU(       a  UR                  U5        [         SUR                  U5       3n UR                  USS9 n[        R                  " UR                  5       5      sS S S 5        $ ! , (       d  f       g = f! [         a  nS[        U5      0s S nA$ S nAff = f)Nr   r  )rw  r%  output/api?r  r  r   )r  r  r  r  SABNZBD_KEYr   SABNZBD_URLr
   r  r  r  r  r#   r   )rw  rc  _ur  rY  rY   rK  r  s           r'   _sabnzbd_apirj  
  s    44kVDFeMs}}V45
6C!ZZQZ'1::affh' ('' !Q  !s<   
B $B>	B 
BB B 
B:#B5/B:5B:c           	         SS K Jn  SS KJn  SS KJs  Jn  0 n[        R                  5       (       a(  [        R                  " [        R                  5       5      nUR                  SS5      nU(       d  / $ UR                  SXSS.5      nSU 3n UR                  USS	0S
9nUR                  USS9 n	UR!                  U	R#                  5       5      n
S S S 5        SS0n/ nW
R%                  S5       H  nUR'                  SS5      nUR'                  SS5      nUR)                  SU5      nUR)                  SU5      nUb*  [+        [-        UR                  SS5      5      S-  S-  5      OSnUb  [-        UR                  SS5      5      OSnUR/                  XUUS.5        M     [1        US S9$ ! , (       d  f       N= f! [2         a  nS[5        U5      0/s S nA$ S nAff = f)Nr   rM  r   r   2000)rJ  r  r%  r#  zhttps://api.nzbgeek.info/api?
User-AgentSABnzbdr  r>  r  torznabr(  r)  r4  r5  z.//torznab:attr[@name="size"]z .//torznab:attr[@name="seeders"]r  rI  )r4  nzb_urlrL  rM  c                     U S   * $ )NrM  r  r  s    r'   r   !_nzbgeek_search.<locals>.<lambda>+
  s
    aj[r   r   r   )r  r  r  r  rO  rP  rQ  NZBGEEK_CFGr  r  r  r  r   r
   r  r  rS  r  r@  findtextr+  r  rB  r   r   r#   r   )r  ri  r  rX  cfgrM  rY  rY   r  rK  rZ  r2  r  r.  r4  r5  size_elseeds_elrL  rM  r  s                        r'   _nzbgeek_searchry  
  s   QQQ
Cjj..01ggi$G	]]QWXYF)&
2C#jj|Y&?j@ZZRZ(A==*D )?@LL+DmmGR0EmmFB/Dii ?DGyy!CRHHKRK^eCGQ 784?$FGdeG7?7Kc(,,w23QRENNUZ_`a , g#899 )(  ##a&!""#s7   "F? 1 F.CF? .
F<8F? ?
G!	GG!G!rY   
audio_onlyout_dirc           	        ^  SS K nU 4S jnU" SS9  UR                  SSS9  SS/nU(       a  U/ S	Q-  nUS
[        US-  5      U/-  n UR                  XdR                  UR
                  SS9n/ nUR                   HH  n	U	R                  5       n	UR                  U	5        SU	;   d  M,  SU	;   d  M4  U" U	R                  5       S9  MJ     UR                  5         UR                  S:X  a  U" SSSR                  USS  5      S9  g U" SSR                  USS  5      S9  g ! [         a  n
U" S[        U
5      S9   S n
A
g S n
A
ff = f)Nr   c                  v   > [            [        T   R                  U 5        S S S 5        g ! , (       d  f       g = fr   _YTDLP_LOCKr  r   r  r   s    r'   _upd_ytdlp_worker.<locals>._upd2
  #    &&r* [[   *
8downloadingr   Tr   z/opt/homebrew/bin/yt-dlpz--no-playlist)z-xz--audio-formatwav--audio-quality0-oz%(title)s.%(ext)s)r   r   r   z
[download]%r  r   z100%r  )r   r  rx   r   r   )r   r   r   r   r   r   r   r   r   r"   r   r   r  r#   )r   rY   rz  r{  r   r  r%   r   linesr   r  s   `          r'   _ytdlp_workerr  0
  s)   + 	MM$M.%
7CFFD#g 334c::C+yyXXcjjtyLKKD;;=DLLt#tdjjl+	  
 			??aTYYuRSz5JKtyyrs'<= +G3q6*+s,   	AD (D 0AD D 
E'D<<Ec                     SS K n [        R                  5       (       d  / $  U R                  [	        [        5      SSSS/SSSS9n/ nUR
                  R                  5       S	S   HT  nUR                  S
5      n[        U5      S:  d  M%  UR                  US   US	   [        U5      S:  a  US   OSS.5        MV     U$ ! [         a    / s $ f = f)Nr   libraryr  --formattsvTr&  r  rq   	rm  rp   r   )asinr4  author)r   AUDIBLE_CLIr  r  r   r   
splitlinesr  rA  r   r#   )r   rK  booksr   r~  s        r'   _audible_libraryr  L
  s    	
GGS%y&*eL#'dB  @HH'')!"-DJJt$E5zQeAhqY\]bYcfgYgUSTXmopq .  	s   A$B> 	4B> >CCr  c                   ^  SS K nU 4S jnU" SS9  [        R                  SSS9   UR                  [	        [
        5      SSUS	[	        [        5      S
SSS/
SSSS9nUR                  S:X  Ga<  [        [        R                  S5      5      [        [        R                  S5      5      -   nU(       a  [        US S9OS nU(       a  UR                  [	        [
        5      S/SSSS9nUR                  S:X  a+  UR                  R                  5       R                  5       S   OSnU(       aj  [        UR                  S-   -  n	[        R                  SSS9  UR                  SSSUS[	        U5      SSSSS S![	        U	5      /S"S#9  U" S$[	        U	5      S%9  g U" S$[	        [        5      S%9  g U" S&UR                  (       a  UR                  S'S  OS(S)9  g ! [          a  n
U" S&[	        U
5      S)9   S n
A
g S n
A
ff = f)*Nr   c                  v   > [            [        T   R                  U 5        S S S 5        g ! , (       d  f       g = fr   r~  r  s    r'   r  &_audible_download_worker.<locals>._upd_
  r  r  r  r  Tr   downloadz--asinz--output-dirz--pdfFalsez--annotation,  r  z*.aaxz*.m4bc                 6    U R                  5       R                  $ r   r   r  s    r'   r   *_audible_download_worker.<locals>.<lambda>m
  s    !&&(2C2Cr   rs  zactivation-bytesr&  r  r   z_augustinski.wavr  r  z-activation_bytesr  -acodec	pcm_s16lez-ar22050z-acr   X  r  r   )r   r  r   iUnbekannter Fehlerr   )r   STIMMEN_AUDIBLEr   r  r   r  r   r  r   r  r   r"   r  STIMMEN_AUDIOr  r   r#   )r   r  r   r  rK  	aax_fileslatestrb	act_byteswav_outr  s   `          r'   _audible_download_workerr  ]
  s   + 	$6+GGz8T>3K_g~w8dC  

 <<1_11':;d?CWCWX_C`>aaIHQS(CDW[FWWc+.0BCTX_cmoWp=?]]a=OBIIOO-335b9UW	+v{{=O/OPG!''t'DGG2D+Yc&k!;wsG  #  $ S\:S%9:!((qxxH\] +G3q6*+s$   E-G G *'G 
G6G11G6rJ  rK  c                   ^  SS K Jn  SS KnU 4S jn [        5       nU(       d  U" SSS9  g U" SSS9  U(       a'  UR	                  S	5      (       a  [        S
SSU0U5      nOU(       a  SS K Jn	  SS KJn
   U	R                  USS9 nUR                  5       nS S S 5        SS K Jn  SS KJn  Wbm  [         S-   nUR#                  UUSU 3SS.SS9nUR                  USS9 n[$        R&                  " UR                  5       R)                  5       5      nS S S 5        O	OU" SSS9  g WR                  S5      nU(       d  U" SSU 3S9  g [        S
SU 3SS0U5        U" SUSS 9  [+        S!5       Hn  nUR-                  S"5        [        S#S$U 3US%9nUR                  S&S5      nUR                  S'S5      nU" S(U S)U S*3US+9  US,:X  a    OUS-;   d  Md  U" SS(U 3S9    g    U" SS.S9  g UR                  S// 5      nU" S0[/        U5       S13S9  [1        U5      nUR3                  S2S2S39  / nU H  n[        S
S4S5U0U5      nUR                  S6S5      nUR                  S7S65      nU(       d  M@  UU-  n U" S8U 3S99  UR                  US:S9 n![5        U S;5       n" U!R                  S<5      n#U#(       d  OU"R7                  U#5        M,  S S S 5        S S S 5        UR9                  [;        U 5      5        M     / n$U H  n%[=        U%5      n&U&R>                  RA                  5       S=;   a\  U" S>U&RB                   3S99  [E        U&U5      n'U'(       a#  U$R9                  U'5        U&RG                  5         Mu  U$R9                  U%5        M  U$R9                  U%5        M     U" S?S@U$SA9  g ! , (       d  f       GN= f! U
R                   a`  nUR                  R                  SS5      nUR                  S;   a.  UR	                  S	5      (       a  [        S
SSU0U5      nS n S nAGNye S nAff = f! , (       d  f       GN= f! , (       d  f       GNv= f! , (       d  f       GN= f! [H         a  nU" S[;        U5      S9   S nAg S nAff = f)BNr   c            	         > [            [        T   R                  U 5        [        R	                  [
        R                  " [        SSS95        S S S 5        g ! , (       d  f       g = f)NFrp   r  )RD_LOCKr  r   RD_DOWNLOADS_FILEr  r  re  r  s    r'   r  !_rd_download_worker.<locals>._upd
  s>    FO""2&((G%XY)Z[ WWs   AA
A%r   zKein API-Key konfiguriertr   addingu)   Torrent wird an Real-Debrid übergeben…)r   r  r:  ra  z/torrents/addMagnetrJ  r&  r  rH  r   )i-  .  i/  i3  i4  z/torrents/addTorrentrp  zapplication/x-bittorrentrq  PUTrb  z!Kein Magnet und keine Torrent-URLr'  zKein ID von Real-Debrid: z/torrents/selectFiles/filesallr  u   Real-Debrid lädt…)r   rd_idr  ih  r%  GETz/torrents/info/r  r   r  zReal-Debrid: r  r  )r  	rd_status
downloaded)r   virusdeadmagnet_errormagnet_conversionz-Timeout: Real-Debrid hat nicht fertig geladenr+  unrestrictingu     Datei(en) werden vorbereitet…Tr   z/unrestrict/linkr5  r  r   zLade herunter: r  r  wbi   )z.mkvz.mp4z.aviz.m2tsz.tsz.movzExtrahiere deutsche Tonspur: r   Fertig)r   r  r  )%r  r  r   r  rU  r  urllib.errorr   r  r  rW  r  r   coder  r  r  r  r  r  rg  ranger   rA  r  r   r  writer   r   r   suffixr?  r   r  unlinkr#   )(r   rJ  r  rK  r  r   r  r  infor9  _ue2_trtorrent_datar  redirect_urlr{  _up3rd_url_req3_r3r  r  tinfostprogr+  r  r  r5  r  
direct_urlr   destr  foutchunkfinal_filesvp_strvpr  s(   `                                       r'   _rd_download_workerr  
  sT   11\]+'BCH'RSf''	226#88V:LeTD??	\\+r\:c#&88:L ; @?'$'==V,AH?P>X.Z,1 % 3 \\%\4::chhj&7&7&9:D 54 ( 'JK)B4&'IJ087E:JERM9OPsAKKOE_UG#<EJE8R(B99Z+DM"QtfA6"E\!TTG]2$+?@  'VW		'2&OU<\.]^"6*TD1
D!3fd^UKB
B/Jvvj*5HH$DOH:67z48D$tTBRVZ IIk2E JJu%	  CS8 c$i(    FfByy $TT =bggYGH-b&9&&u-IIK&&v.""6* ! 	FX[A] ;:>>  yy}}Z<6666<;R;RS\;];]"6+@8\BZ\abD#'L 54R CSBR88,  +G3q6*+s   Q AQ 5N- NN- A Q 3P Q #"Q BQ Q 	Q &B"Q Q.P2QCQ 
N*%N- (Q *N- -P=APQ PPQ  
P/*Q 2
Q<Q
Q	Q 
Q: Q55Q:r   )queuedr  r  r  r   u"   Unterbrochen — bitte neu startenr  uB   Cockpit wurde neu gestartet; der Hintergrundjob läuft nicht mehr.rp   r  photo_cacher   zfetch_icloud_thumb.py_FETCH_QUEUEuuidsc                     S[         SS4S jnU  HT  n[           U[        ;   a   SSS5        M  S[        U'   SSS5        [        R                  " X4SS9R                  5         MV     g! , (       d  f       N7= f)zCSchedule background iCloud thumbnail downloads for a list of UUIDs.ur   Nc                 T   [        [        U  S3-  5      n[        U5      R                  5       (       a  [           S[
        U '   S S S 5        g [            [        R                  " [        R                  [        [        5      X/SSS9n[           UR                  S:X  a  SOS[
        U '   S S S 5        S S S 5        g ! , (       d  f       g = f! , (       d  f       N(= f! [         a.    [           S[
        U '   S S S 5         MP  ! , (       d  f        N_= ff = f! , (       d  f       g = f)N.jpgr   Tr  r  r  r   r   )r   PHOTO_CACHE_DIRr   r  _FETCH_LOCKr  
_FETCH_SEMr   r  r   r   _FETCH_SCRIPTr   r#   )r  outrK  s      r'   _do_icloud_fetch_bg.<locals>._do  s    /qcJ./9"(Q 	.NN^^S%7@#' !010AfwLO ! Z  ![ . &-LO ![[[. Zsw   
B<D:CC+C<
C

C	CDCD.
D8D D
DDDDD
D'pendingTr<  )r   r  r  rB  rC  r{  )r  r  r  s      r'   _icloud_fetch_bgr    si    .s .t .$ L  [ (LO  	$t<BBD [s   A)	A))
A7	c                  b  ^^^^^^^	^
 [         (       a  gSq [        [        5      R                  S-  n [        R                  " 5       S-  m
U R                  5       (       a.  T
R                  5       (       a  [        R                  5       (       d  gSSKnSSKmSSK	m UR                  U R                  SS95      m	TR                  SS	S	5      mUU4S
 jmSmUUUU
4S jmUU	4S jn[        R                  " USS9R                  5         [!        S[#        T	5       S3SS9  g! [         a     gf = f)zVOn boot: query DB for all events in reise_events.json and queue missing iCloud photos.NTzreise_events.jsonz=Pictures/Fotos-Mediathek.photoslibrary/database/Photos.sqliter   rY  r    rq   c                    > [        U 5      S:X  a  U S-  n TR                  R                  U 5      T-
  R                  5       $ Nr>  z-01rA  r  r  total_seconds)r  r  	epoch2001s    r'   _ts!_prefetch_all_events.<locals>._ts3  s9    q6Q;U
**1-	9HHJJr   JNOT (ZLATITUDE BETWEEN 52.3 AND 52.7 AND ZLONGITUDE BETWEEN 13.0 AND 13.7)c           
        >  U R                  SS5      nU R                  S5      =(       d    UnU(       d  / $ T" U5      T" U5      S-   pCU R                  S5      =(       d    SU R                  S5      =(       d    SpeSnTR                  S	T S
3SS9nU(       a5  U(       a.  UR                  SX4XW-
  XW-   Xg-
  Xg-   45      R                  5       n	O/ n	U	(       d%  UR                  ST S3X445      R                  5       n	UR	                  5         / n
U	 HN  u  pU(       a0  [
        U S3-  R                  5       (       d  U
R                  U5        [        U
5      S:  d  MM    U
$    U
$ ! [         a    / s $ f = f)Nr  r   date_endr  rs   r   rr   g      @file:?mode=roTuria  SELECT ZUUID, ZFAVORITE FROM ZASSET
                       WHERE ZDATECREATED BETWEEN ? AND ? AND ZDATECREATED>0
                         AND ZLATITUDE BETWEEN ? AND ? AND ZLONGITUDE BETWEEN ? AND ?
                       ORDER BY ZFAVORITE DESC, ZDATECREATEDzvSELECT ZUUID, ZFAVORITE FROM ZASSET
                        WHERE ZDATECREATED BETWEEN ? AND ? AND ZDATECREATED>0 AND zI
                        ORDER BY ZFAVORITE DESC, ZDATECREATED LIMIT 1000r      )
r   connectexecutefetchallcloser  r  r   rA  r#   )evr  r  ts0ts1rs   rr   r}   dbrowsr  r  r  	HOME_EXCL_sqr  	photos_dbs                r'   _query_event*_prefetch_all_events.<locals>._query_event9  s{   %	66&"%Dvvj)1TH4y#h-%"7vve})266%=+=AFuYKx8dCBszz@ sz3:sz3:N (*  zzSS\R] ^IL J	
 (*  HHJFo1#T
:BBDDMM!$v;"$M 
 M 	I	s#   4E% D"E% E% !E% %E43E4c                  P   > T H  n T" U 5      nU(       d  M  [        U5        M!     g r   )r  )r  r  r  eventss     r'   _run"_prefetch_all_events.<locals>._runa  s$    B $Eu ' r   r  z[photos] prefetch started for z eventsr   )_PREFETCH_DONEr   __file__r   r  r  r  r  sqlite3r  r  r  r#   rB  rC  r{  r  rA  )events_filer
  r  r  r  r  r  r  r  r  r  s      @@@@@@@@r'   _prefetch_all_eventsr     s    ~Nx.''*==K		]]Iy'7'7'9'9AUAUAWAW99[22G2DE T1a(IK ]I& &P( D.446	*3v;-w
?tLs  s   D! !
D.-D.g      @kameramotorzkling-kameramotorjobsstatejobs_magnificstate_magnificpathc                     U R                   R                  SSS9  U R                  U R                  S-   5      nUR	                  [
        R                  " USSS9SS9  UR                  U 5        g )	NTr   .tmprp   Fr  r  rY  r  )r   r   with_suffixr  r  r  re  rA  )r   r  tmps      r'   _atomic_json_writer&  x  s[    KKdT2


4;;/
0CNN4::d15AGNTKKr   c                 ~   U R                  S5      U R                  S5      U R                  S5      U R                  S5      U R                  S5      U R                  S5      /nSR                  S U 5       5      nU R                  S	5      S
L d  U R                  S5      S
L a  g	S	U;   a  g	SU;   d  SU;   d  SU;   a  gg)Nproviderengine	generatorr  rw  sourcer  c              3   \   #    U  H"  oc  M  [        U5      R                  5       v   M$     g 7fr   )r   r?  r  s     r'   r  5_kameramotor_provider_from_payload.<locals>.<genexpr>  s     Mmnc!fllnnms   , ,klingTvideomagnificnanoimagenr.  )r  marker_valuesmarkers      r'   "_kameramotor_provider_from_payloadr5  ~  s    M XXMmMMFxxD DHHW$5$=&Vv/8v3Er   r(  c                    US;  a  SSU 34$ / SQn[         R                  " U S[        S9nU H  nXC;   d  M
  SSU 34s  $    US:X  aY  U R                  S5      (       dC  U R                  S	5      (       d-  U R                  S
5      (       d  U R                  S5      (       d  gUS:X  aC  U R                  S	5      (       d-  U R                  S
5      (       d  U R                  S5      (       d  gg)N>   r.  r0  Fz"Unbekannter Kameramotor-Provider: )zlocalhost:9222z127.0.0.1:9222zlocalhost:9223z127.0.0.1:9223Runtime.evaluateconnectOverCDPwebSocketDebuggerUrl)r  defaultz0Direkter Provider-/CDP-Zugriff im Job verboten: r.  start_imageimagerN  prompt_file)Fz.Kling-Job braucht mindestens Bild oder Prompt.r0  )Fz1Magnific-Job braucht mindestens Bild oder Prompt.)Tr   )r  re  r   r   )r  r(  forbidden_needlespayload_textneedles        r'   _validate_kameramotor_payloadrA    s    ,,:8*EEE ::dDL#!LVHUUU $ 7DHH]$;$;txx?P?PTXT\T\]eTfTfjnjrjr  tA  kB  kBF:txx'8'8DHHX<N<NRVRZRZ[hRiRiIr   submitted_msc                 v   [        U 5      nXS'   X4S'   X$S'   US:X  a  UR                  SS5        UR                  SS5        UR                  S	S
5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  S[        [        R                  " 5       S-  S-  5      5        U R                  S5      =(       d    S US'   SU ;   a6  [        U R                  S5      [        5      (       d  UR                  SS 5        U$ UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  S[        [        R                  " 5       S-  S-  5      5        U$ )Nr'  r(  submitted_atr0  rw  imagen-nano-banana-2-flashratior  
num_imagesrp   
resolution4kthinking_levelr   r+  
The Camera
output_dirDesktopKameramotorgroup_idrM  r  r/  Tr)  r.  r&  r  zThe Camera KlingzKling-Kameramotor)	r  r   r   r   r  r   r  r  r   )r  r   rB  r(  r   s        r'   _build_kameramotor_jobrP    sj   
t*CI
O&:v;<w'|Q'|T*'0x.|Sy)@=)P%QR((:.6$Jd?:dhhw.?#F#FGGGT" J 	vw'w%x)w%z1%x!34|Sy)@CV)V%WXJr   c                 >    U S:X  a  [         [        4$ [        [        4$ )Nr.  )KLING_KAMERAMOTOR_JOBS_DIRKLING_KAMERAMOTOR_STATE_DIRKAMERAMOTOR_MAGNIFIC_JOBS_DIRKAMERAMOTOR_MAGNIFIC_STATE_DIR)r(  s    r'   _kameramotor_target_dirsrV    s"    7)+FFF(*HHHr   zoriginals_registry.jsonc                  v     [         R                  " [        R                  SS95      $ ! [         a    0 s $ f = f)uD   Lädt die Registry — gibt {} zurück wenn Datei fehlt oder kaputt.rY  r  )r  r  _ORIGINALS_REGISTRY_PATHr  r#   r  r   r'   _load_originals_registryrY    s9    zz2<<g<NOO 	s   &) 88c                     [         R                  S5      nUR                  [        R                  " U SSS9SS9  UR                  [         5        g)u.   Schreibt die Registry atomar (write→rename).r"  rp   Fr#  rY  r  N)rX  r$  r  r  re  rA  )registryr%  s     r'   _save_originals_registryr\    s=    
"
.
.v
6CNN4::hquEPWNXKK()r   c                   ^ [         R                  " 5       n[        U S5       m[        U4S jS5       H  nUR	                  U5        M     SSS5        UR                  5       $ ! , (       d  f       UR                  5       $ = f)u?   Berechnet SHA-256 eines Dateipfads — gibt Hex-String zurück.r  c                  &   > T R                  S5      $ )N   )r  r  s   r'   r   !_sha256_of_file.<locals>.<lambda>  s    !&&-r   r   N)hashlibsha256r  iterr   	hexdigest)r   hr  r  s      @r'   _sha256_of_filerf    sb    A	dD	Q/5EHHUO 6 
 ;;= 
	 ;;=s   )A$$
Bztime-travel-camera	fotolaborre  c                     [         R                  " SSU =(       d    S5      R                  S5      nUS S =(       d"    S[        R                  " 5       R
                   3$ )Nz[^a-zA-Z0-9_-]+r  r   rs  ttc_)r   r  r"   uuiduuid4hex)ro  safes     r'   _ttc_safe_job_idrn    sI    66$c39"5;;C@D91$tzz|//011r   c                 &    [         [        U 5      -  $ r   )TTC_JOBS_DIRrn  r   s    r'   _ttc_job_dirrr    s    *6222r   c                     [        U 5      S-  $ )Nmanifest.json)rr  rq  s    r'   _ttc_meta_pathru    s    /11r   c                     [        U 5      nUR                  5       (       a$   [        R                  " UR	                  SS95      $ 0 $ ! [
         a     0 $ f = f)NrY  r  )ru  r  r  r  r  r#   )r   r   s     r'   _ttc_load_metarw    sV    vAxxzz	::akk7k;<< I  	I	s   "A 
AAc                     SU  SU 3$ )N/api/time-camera/jobs/z/assets/r  )r   r   s     r'   _ttc_asset_urlrz    s    #F88D6::r   rL  c                    / nU(       a  [        U5      OS [        U -  4 H  nU(       a*  UR                  5       (       a  UR                  5       (       d  M6  [	        UR                  5       5       H  nUR                  R                  S5      (       d   UR                  R                  S5      (       a  ME  UR                  R                  5       S;   d  Me  SUR                  ;   d   UR                  R                  5       S;   d  M  UR                  U5        M     M     [        5       / peU HE  n[        UR                  5       5      nXu;  d  M#  UR                  U5        UR                  U5        MG     U$ )Nr  	_originalr  .jpeg.png.webp time-travel-100-scout-gpt-5-nano)r  r  )r   TTC_OUTPUT_DIRr  is_dirr   iterdirr   rU  r  r?  r   r   r   resolveadd)r   rL  r  r  r  seenr  r   s           r'   _ttc_result_filesr    s	   J",d:$8OP

!((**		$Avv  %%):):;)G)Gxx~~#EE 6?188>>CSWhCh%%a( % Q r#!))+?HHSM3::a=  Jr   r+  r  c                     UR                   R                  SSS9  [        R                  " SSS[	        U 5      SSSSS	S
S[	        U5      /SSS9  UR                  5       (       d   UR                  U R                  5       5        g g ! [         a4     UR                  U R                  5       5         g ! [         a      g f = ff = f)NTr   sips-Z900--setPropertyr[   jpegformatOptions82--outr&  r  )	r   r   r   r  r   r  r  r  r#   )r+  r  s     r'   _ttc_make_thumbnailr    s    $6D%VXv_dSY	

 	, {{}}V..01  	V..01 		s*   BB 
CB22
C <C?C  Cmetac           	         U=(       d    [        U 5      nUR                  S5      =(       d    0 nUR                  S5      =(       d    UR                  S5      =(       d    U nUR                  S5      =(       d    [        [        U -  5      n[        S-  U S3-  n[        S-  U S3-  n[
        U S3-  n[        U S3-  n[        X45      n	Sn
UR                  5       (       a  S	n
OdUR                  5       (       d  U	(       a  S
n
OEUR                  5       (       a  Sn
O-UR                  5       (       d  UR                  S5      (       a  Sn
UR                  S5      S:X  a  Sn
SU UU
[        U	5      [        U S5      S.$ )Nr  r'  kameramotor_job_idrL  failed_magnific.jsondone_magnificuploadedfailedr   r   submitted_to_fotolaborr  r   needs_victorTrt  )okr   r  r   results_countmanifest)rw  r   r   r  KAMERAMOTOR_DIRrU  rT  r  r  rA  rz  )r   r  r  km_idrL  r  r   r  r  r  r   s              r'   _ttc_status_forr    sK   )>&)Dhhy!'RGKKI*>!?I6E\*Jc.62I.JJ00eWE?BF_,%>D*we_<E*we_<F2GF}}	'		DHH%=>>xx^+#W"6?; r   c                 "   [        U 5      nUR                  S5      =(       d    0 nUR                  S5      =(       d    UR                  S5      =(       d    U nUR                  S5      =(       d    [        [        U-  5      n[	        X45      n[        U 5      S-  nSU U[        X5      R                  S5      [        U S5      [        U S	5      / UR                  S
5      [        [        S5      R                  5       S-  5      S.	n[        USS9 H  u  pSU U	R                  R                  5        3n
Xj-  n UR                  U	R                  5       5        US   R#                  U
[        X
5      U	R%                  5       (       a  U	R'                  5       R(                  OSU	R%                  5       (       a#  [        U	R'                  5       R*                  5      OSS.5        M     [-        [/        U 5      0 UESU0E5        U$ ! [          a     Nf = f)Nr  r'  r  rL  assetsTr   original.jpg	thumb.jpg
created_atr   r  )	r  r   r  r   original	thumbnailr  r  
updated_atrq   )r{  result_r  r   )r   rY   bytesr  last_manifest)rw  r   r   r  r  rr  r  rz  rB  r   r   rv  r  r?  r  r  r#   r   r  r   st_sizer   r&  ru  )r   r  r  r  rL  r  
assets_dirr  r  r   r   r5  s               r'   _ttc_manifestr  :  s   &!Dhhy!'RGKKI*>!?I6E\*Ic.52H.IJ2Gf%0J#!&/33H="6>:#FK8hh|,*V,113d:;
H wa0	dkk//123 	T__./ 	""!&/,0KKMMTYY[((q26++--S--.Q	$
 	 1 ~f-/R$/R/RSO  		s   8H
HHr  
image_pathprompt_pathc                    SS K n[        UR                  S5      =(       d    U 5      n[        UR                  S5      =(       d	    [        U-  5      nUR                  SSS9  [        U5      nUR                  U[        U5      [        U5      SSS[        UR                  S	5      =(       d    S
5      UR                  S5      =(       d    SUR                  S5      =(       d    SS[        U5      UR                  S5      =(       d    UUR                  S5      =(       d    SS.5        [        U5      n[        Xx5      u  pU	(       d  [        U
5      e[        UR                  5       S-  5      n[        XuX5      n[        U5      u  p[        X S3-  UU[        U5      U [        U5      [        U5      S.5        [        X S3-  U5        U[        U5      [        U5      S.$ )Nr   r'  rL  Tr   r0  r1  rE  rG  rp   rH  rI  rF  r  zTime Travel Camera iOSr  filterr  )r'  r<  r=  r(  r*  rw  rG  rH  rF  r+  rL  r  r  r  r  )rD  r(  queue
ttc_job_idoriginal_pathoutput_dir_actual)r  r  rL  )r   rn  r   r   r  r   r  r   r   rB  r5  rA  r  rP  rV  r&  )r   r  r  r  	_ttc_timer  rL  rh  r(  validr   rB  r   jobs_dir	state_dirs                  r'   _ttc_submit_to_fotolaborr  \  s   W[[.8&9Egkk,/KNU4JLJTD17mGNNZ;','++l38q9kk,/74W%/**oF#,u++h'M+M  2':H0CLEy~~'$./L
 
HC28<HyWE?2$XZ _5  xG5/137"'#h-sS]__r   z.task_api_tokenztask_limits.jsonr&  iP  /api/task/submitzoutbox_watcher.pyc                  f     [         R                  SS9R                  5       $ ! [         a     gf = f)NrY  r  r   )TASK_TOKEN_FILEr  r"   r#   r  r   r'   _get_task_tokenr    s6    (('(:@@BB s    # 
00c                 Z    [        5       nU(       d  gU R                  SS5      nUSU 3:H  $ )NFr  r   rp  )r  r   )r  r  auths      r'   _check_task_authr    s2    E;;+DWUG$$$r   c                     SS K n U R                  R                  5       R                  5       n [        R                  5       (       a(  [        R                  " [        R                  5       5      O0 nUR                  S5      U:w  a  USSS.nUS   [        :  aG  UR                  SS5      S-   US'   [        R                  [        R                  " USS95        SUS   4$ S	US   4$ ! [         a    0 n Nf = f)
Nr   r  r  countblockedr  r  rq   Fr  T)r  r  r  r  TASK_LIMITS_FILEr  r  r  r  r#   r   TASK_DAILY_LIMITr  re  r  r  limitss      r'   _check_task_daily_limitr    s    HHNN&&(E=M=T=T=V=V,6689\^ zz&U"!:g**"JJy!4q8y##DJJvE$JKfWo%%    s   AC' 'C65C6c                     SS K n U R                  R                  5       R                  5       n [        R                  5       (       a(  [        R                  " [        R                  5       5      O0 nUR                  S5      U:w  a  USSS.nUR                  SS5      S-   US'   [        R                  [        R                  " USS95        g ! [         a    0 n Njf = f)Nr   r  r  r  rq   Fr  )r  r  r  r  r  r  r  r  r  r#   r   r  re  r  s      r'   _increment_task_daily_countr    s    HHNN&&(E=M=T=T=V=V,6689\^ zz&U"!:jj!,q0F7O

6 FG  s   AC CClexikoninboxeshuezcredentials.envzsancho_registry.json_costscosts.jsonlanrufezjobs_queue.jsonlzreise_comments.jsonzreise_annotations.jsontravel_datai  c                      [         R                  SS9R                  5        H  n U R                  5       n U R	                  S5      (       d  M+  U R                  SS5      S   R                  5       nUR	                  S5      (       a   SSKnUR                  S	S
U/SUR                  SS9R                  5       nU(       a  UR	                  S5      (       a  Us  $  SSKnUR                  / SQSUR                  S9R                  5       s  $ Us  $    g! [         a     NEf = f! [         a     Of = f  g! [         a     gf = f)uF   Liest OPENAI_API_KEY: credentials.env → op:// → Keychain-Fallback.rY  r  zOPENAI_API_KEY=r  rq   zop://r   Nopr  Tr  )r   r   r  zsk-)r   r   r   r  r   rat-der-weisenr   r   r   )
CREDENTIALS_FILEr  r  r"   rU  r  r   r    r!   r#   )r   r&   _sp_opresolved_sp_kcs        r'   _load_openai_keyr    sG   $...@KKMD::<D011jja(+113>>'**3#)#6#6!63/d6>>[\ $7 $%' ! $(;(;E(B(B#+O3%22o!%fnn  3    %'" 
1 N6  %  %  sm   AD5 9D5 ADD5 .D#	D5 D5 D5 
D D5 D  D5 #
D0-D5 /D00D5 5
EEc                      [         R                  SS9R                  5        HN  n U R                  5       n U R	                  S5      (       d  M+  U R                  SS5      S   R                  5       s  $    g! [         a     gf = f)NrY  r  DEEPGRAM_API_KEY=r  rq   r   r  r  r  r"   rU  r  r#   r   s    r'   _load_deepgram_keyr    s    $...@KKMD::<D233zz#q)!,2244 N      AA6 $A6 3A6 6
BBc                      [         R                  SS9R                  5        HN  n U R                  5       n U R	                  S5      (       d  M+  U R                  SS5      S   R                  5       s  $    g! [         a     gf = f)NrY  r  zANTHROPIC_API_KEY=r  rq   r   r  r  s    r'   _load_anthropic_keyr    s    $...@KKMD::<D344zz#q)!,2244 N   r  anruf_idc                 "   [         R                  U 0 5      nUR                  U5        U[         U '   UR                  S5      S;   a   [        U -  nUR	                  SS9  X0 S3-  nU UR                  S5      UR                  S5      UR                  S5      S.nUR                  S5      (       a  UR                  US   5        UR                  [        R                  " US	S
S9SS9  g g ! [         a  n[        SU  SU 3SS9   S nAg S nAff = f)Nr   )r   r   Tr  r  r   r  )r'  r   r   r  Frp   r  rY  r  z[anruf] persist fail r  r   )
ANRUF_STATUSr   r   
ANRUFE_DIRr   r  r  re  r#   r  )r  fieldscur	anruf_dirr  rh  _es          r'   
_anruf_setr    s   


8R
(CJJv L
wwx--	H"X-IOOTO*
%00C''(+)''(+	G wwx  s8}-NN4::gE!LW^N_ .  	H)(2bT:$G	Hs   B!C* *
D4D		D
audio_path
audio_mimec                 
   SSK nSSKJn  SSKJn   [        5       nU(       d  [        U SSS9  gUR                  5       nU(       a  [        U5      S:  a  [        U SSS9  gSnUR                  UUS	U 3U=(       d    S
S.SS9n	 UR                  U	SS9 n
U
R                  5       R                  S5      nSSS5        [        R                  " W5      n/ n/ n/ nSn [)        UR+                  S0 5      R+                  SS5      =(       d    S5      nUR+                  S0 5      R+                  S/ 5      =(       d    / nU GHZ  n[-        UR+                  SS5      =(       d    S5      n['        UR+                  SS5      =(       d    S5      R/                  5       n[)        UR+                  S S5      =(       d    S5      n[)        UR+                  S!S5      =(       d    S5      n[)        UR+                  S"S#5      =(       d    S#5      nU(       d  M  UR1                  U[3        US$5      [3        US$5      U[3        US%5      S&.5        UR1                  S'S(US$-      SU 35        US):  d  GM*  UR1                  U[3        US$5      US*[-        US+-  5       S,3S-.5        GM]     U(       ds   US   S.   S   S/   S   n['        UR+                  SS5      =(       d    S5      R/                  5       nU(       a(  UR1                  SSUUS#S&.5        UR1                  U5        U(       d  [        U SS0S9  gUSS1 nS2R5                  U5      n[7        5       n[9        5       nSnSn U(       a  [;        UUU5      u  nn Uc  U(       a  [=        UUU5      u  nn Uc  S3U =(       d    S4-   / / S5.nU UR                   R?                  5       RA                  S6S79[-        [3        U5      5      S8UUR+                  S9S5      UR+                  S:/ 5      =(       d    / UR+                  S;/ 5      =(       d    / UUS<.
n![        U S8U!SS=9  g! , (       d  f       GN= f! UR                   am  nSn UR                  5       R                  SSS9SS nO! [          a     Of = f[        U SSUR"                   SU=(       d    UR$                   3S9   SnAgSnAf[          a$  n[        U SS['        U5      SS  3S9   SnAgSnAff = f! [          a    Sn GNf = f! [          a     GNf = f! [          aF  nSSK!n"[E        S>U  S?U"RG                  5        3S@SA9  [        U SSB['        U5      SS  3S9   SnAgSnAff = f)Cu   Verarbeitet einen Anruf im Hintergrund:
1) Deepgram-Transkription (diarize, paragraphs, utterances)
2) Claude/OpenAI-Analyse → Zusammenfassung, Schlüsselpunkte, Action Items
3) Speichert <id>.json + setzt Status auf done/error
r   Nr   z)DEEPGRAM_API_KEY fehlt in credentials.envr   r  Aufnahme leer oder zu kurzzhttps://api.deepgram.com/v1/listen?model=nova-2&language=de&diarize=true&punctuate=true&smart_format=true&paragraphs=true&utterances=trueToken 
audio/webmrq  ra  rb     r  rY  r   rA  r'    zDeepgram HTTP r  zDeepgram-Fehler: r  r  metadatar&  r  
utterancesspeaker
transcriptr{  end
confidence      ?rp   rm  )r  r{  r  r   r  z	Sprecher ABgffffff?u*   Wörter undeutlich (Erkennungs-Sicherheit r  z %))r  r{  r   reasonchannelsalternativeszKein Sprachinhalt erkanntr  r  u   Analyse nicht verfügbar. zKein KI-Key in credentials.env.)r  
key_pointsaction_itemssecondstimespecr   r  r  r  )
r'  rI  
duration_sr   r  r  r  r  unclear_momentsr  r   r  r   z[anruf] z crash: Tr   zUnerwarteter Fehler: )$r  r  r  r  r   r  r  r  rA  r  r  r  rg  r  r  rW  r#   r  r   r   r   r   rB  r"   r   r  r  r  r  _analyze_with_claude_analyze_with_openair  r  	tracebackr  
format_exc)#r  r  r  r  r  _uedg_key
audio_datadg_urlr  r  dg_rawdg_jsonher  r  transcript_linesr	  full_text_partsr  uttsr  spr   r{  r  confr/  full_transcript_textanthropic_keyrz  analysisanalysis_errorr  _tbs#                                      r'   _process_anrufr     sV     N[#%x7bc**,
S_t3x7ST/ 	 kk#)&!2 * :l   
	S#.$++G4 /jj(G "$ " "
	w{{:r:>>z1MRQRSJ {{9b)--lB?E2AQUU9a(-A.Bquu\2.4"5;;=D!%%+0q1EeQ,1-C|S18S9D##uaS!}#D!n%  ""YtBF|nBtf#EFcz&&!"5!_  J3tTWx=/Y\]	( % 4  
i(4Q7GJ377<4:;AAC$++#$s: $C-  $**40  x7RS *"1-#yy9 ,-%'
';MK_ak'l$Hn
';JH\^h'i$Hn 8>;nMno  "H ,,""$..	.BeJ/0*||Ir2",,|R8>B$LL<B.$
 	8F6F[ /. }} 	Dwwy''	'B4CH x-bggYb9J8KLN 	x9J3q6RVSV<.7YZ	  	J	P  `  [
(3>>+;*<=TJ8G5J3q6RVSV<.3YZ[s   T 1T !#T Q  P05Q T 4S. ET '<T $A2T T )DT 0
P?:Q S+R:!Q76R:7
RR:R1R:5T :S+S&!T &S++T .S>:T =S>>T 
TT TT 
U"<UU"r  r  c                    SSK Jn  SSKJn  S[	        U5       SU 3n[
        R                  " SSSUS./S	.5      R                  S
5      nUR                  SUU SSS.SS9n UR                  USS9 n[
        R                  " UR                  5       R                  S
5      5      n	SSS5        W	R                  S/ 5      n
Sn[        U
[        5      (       a  U
(       a  U
S   R                  SS5      nU=(       d    SR!                  5       nUR#                  S5      (       a]  UR%                  SS5      S   nUR#                  S5      (       a  USS nUR!                  5       R'                  S5      R!                  5       n[
        R                  " U5      nUS4$ ! , (       d  f       N= f! UR(                   af  nSn UR                  5       R                  S
SS9SS nO! [*         a     Of = fSSUR,                   S U=(       d    UR.                   34s SnA$ SnAf[*         a  nSS![1        U5      SS"  34s SnA$ SnAff = f)#uO   Schickt Transkript an Claude Sonnet, erwartet JSON. Gibt (dict, error) zurück.r   Nu  Du bekommst das Transkript eines geschäftlichen Telefonats von Victor Holland (Filmregisseur). Ein Kunde ruft an und beauftragt einen Film. Victor verliert beim ersten Gespräch oft Details.

Deine Aufgabe: Erstelle aus dem Transkript ein präzises Briefing als JSON-Objekt mit diesen Feldern:
- summary (string): 2-3 Sätze, was wurde besprochen, informell, in Victors Sprache (knapp, aktiv)
- key_points (array of strings): 3-7 Bulletpoints mit den wichtigsten Fakten
- action_items (array of objects mit text, urgency, category): konkrete Aufgaben für Victor. urgency = 'hoch'|'mittel'|'niedrig'. category z.B. 'Angebot', 'Termin', 'Klärung', 'Recherche'

Wichtige Regeln:
- Nichts erfinden was nicht im Transkript steht
- Wenn etwas unklar ist, erwähne es im Punkt aber spekuliere nicht
- Deutsch, knapp, keine Marketing-Sprache, kein 'der Kunde wünscht sich freundlicherweise'
- Antworte AUSSCHLIESSLICH mit dem JSON-Objekt, kein Markdown-Codeblock

Transkript (Dauer ca. s):
zclaude-3-5-sonnet-latest  r*  rS  rW  rY  rZ  r[  r\  r]  ra  rb  rd  r  rU  r   r   z```rp   rq   r  ru   `rA  r'  r  zClaude HTTP r  zClaude-Analyse:    )r  r  r  r   rB  r  re  rf  r  r  r  r  rg  r   r  r  r"   rU  r  r   rW  r#   r  r   r   )rM  r  r  r  r  rN  rh  r  r  r  rU  r   r  r  r  r  s                   r'   r  r    s/    	! "%Z 1,	 " jj+$89  vg	 
 ++/ !-.

   	C7[[b[)T::diik009:D *((9b)gt$$1:>>&"-D
!!#??5!!::eQ'*Dv&&ABx::<&&s+113DD!t| *) == C	779##GI#>tDD 		|BGG9Bt/@ryy.ABBB 7'At~6667sm   "F* 24F&C2F* 
F'#F* *I:H=!GH
G,)H+G,,)HII(I :I Ic                    SSK Jn  SSKJn  SnS[	        U5       SU S3n[
        R                  " SSUS	.S
US	./SS0SS.5      R                  S5      nUR                  SUSU  3SS.SS9n UR                  USS9 n	[
        R                  " U	R                  5       R                  S5      5      n
SSS5        W
S   S   S   S   n[
        R                  " U5      S4$ ! , (       d  f       N4= f! UR                   af  nSn UR                  5       R                  SSS9SS nO! [         a     Of = fSSUR                   S U=(       d    UR                    34s SnA$ SnAf[         a  nSS![#        U5      SS"  34s SnA$ SnAff = f)#z$Fallback: GPT-4o-mini mit JSON-Mode.r   Nu   Du baust Briefings für Victor Holland (Filmregisseur) aus Anruf-Transkripten. Antworte nur mit JSON: {summary, key_points[], action_items[{text, urgency, category}]}. Deutsch, knapp, nichts erfinden.zTranskript (~r"  u   

Felder: summary (2-3 Sätze), key_points (3-7 Stichpunkte), action_items (urgency=hoch|mittel|niedrig, category z.B. Angebot/Termin/Klärung).ry  systemrS  r*  r  json_object333333?)rP  rX  response_formatr  rY  rz  rp  r\  rq  ra  rb  rd  r  rs  rt  rU  r   rA  r'  r  zOpenAI HTTP r  zOpenAI-Analyse: r%  )r  r  r  r   rB  r  re  rf  r  r  r  r  rg  rW  r#   r  r   r   )rM  r  r  r  r  r'  r*  rh  r  r  r  r   r  r  r  s                  r'   r  r    s    	+  J(j\ :] 	] 	
 jj&1-
 #M2  vg  ++4&wi0.
   C7[[b[)T::diik009:D *Iq!),Y7zz$%% *) == C	779##GI#>tDD 		|BGG9Bt/@ryy.ABBB 7'At~6667sl   .C1 >4C 2-C1  
C.*C1 1FE"!D&%E"&
D30E"2D33)E"F"F/FFFc                     [         U -  U  S3-  nUR                  5       (       d  g [        R                  " UR	                  SS95      nU$ ! [
         a     gf = f)u>   Lädt einen abgeschlossenen Anruf von Disk falls nicht im RAM.r  NrY  r  )r  r  r  r  r  r#   )r  r   r  s      r'   _load_anruf_from_diskr,    s[    X8*E 22A88::JJq{{G{45 s   $A 
AAc                 4   U R                  5       (       d  / $ / nU R                  SS9R                  5        HB  nUR                  5       nU(       d  M   UR	                  [
        R                  " U5      5        MD     U$ ! [
        R                   a     M_  f = f)zJRead all entries from a JSONL file. Returns [] if file missing or corrupt.rY  r  )r  r  r  r"   r   r  r  r  )r   entriesr   s      r'   _read_jsonlr/  '  s    ;;==	G0;;=zz|	NN4::d+, > N ## 		s   %A??BBr  c                     U R                   R                  SSS9  U R                  SSS9 nUR                  [        R
                  " USS9S-   5        S	S	S	5        g	! , (       d  f       g	= f)
zGAppend one entry as a JSONL line. Creates file + parent dirs as needed.Tr   r  rY  r  Fr  r  N)r   r   r  r  r  re  )r   r  fhs      r'   _append_jsonlr2  7  sS    KKdT2	3	)R
E6=> 
*	)	)s   (A
A*alertszsystem_alerts.jsonlzalarm_ack.jsonlzactive_alert.jsonzapple_alarm_devices.jsonc                    ^  SR                  U 4S jS 5       5      n[        R                  " UR                  S5      5      R	                  5       SS $ )zFStable id for legacy alarm lines that were written before ids existed.|c              3   Z   >#    U  H   n[        TR                  US 5      5      v   M"     g7f)r   Nr   r   )r  r  r  s     r'   r  "_alarm_event_id.<locals>.<genexpr>F  s&     W2VQ3uyyB'((2Vs   (+)rI  r4  rt  r+  rY  N   )r  ra  rb  rf  rd  )r  ro  s   ` r'   _alarm_event_idr:  D  s@    
((W2VW
WC>>#**W-.88:3B??r   c                    [        U 5      nUR                  S[        U5      5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  S	S
5        UR                  SS5        UR                  SS5        [        UR	                  SS5      5      US'   U$ )Nr'  rI  r   r4  System-Alarmrt  r+  r'  priorityr   r,  warning	click_url)https://cockpit.beachorchestra.com/alarmeacknowledgedF)r  r   r:  boolr   )r  events     r'   _alarm_normalizerD  J  s    KE	T?512	T2	Wn-	Y#	Xx(	Z(	UI&	["MN >5!ABE.Lr   c                  T   0 n [        [        5       HR  n[        UR                  SS5      =(       d    UR                  SS5      5      R	                  5       nU(       d  MN  XU'   MT     [
        R                  5       (       a  [
        R                  S5       H|  nUR                  [        S5      S  nU(       d  M$  X ;  d  M+   [        S5      R                  R                  UR                  5       R                  5      R                  SS9nX$S	S
.X'   M~     U $ ! [          a    Sn Nf = f)Nr'  r   alarm_idzack_*ack_r  r  r  z
mac-dialog)r'  rI  actor)r/  ALERTS_ACK_LOG_FILEr   r   r"   
ALERTS_DIRr  r   r   rA  r   r  fromtimestampr   r   r  r#   )ackedr  rF  r   rI  s        r'   _alarm_ack_maprM  X  s    E01uyyr*Geii
B.GHNNP8#(O 2 OOG,DyyV.HxH1#J/88FFtyy{G[G[\ffpyfzB *2l"S - L ! Bs   A	DD'&D'limitc           	         [        [        5       Vs/ s H  n[        U5      PM     nn[        5       nU H)  nUR	                  US   5      nU(       d  M   SUS'   XTS'   M+     UR                  S SS9  U Vs/ s H  oR	                  S5      (       a  M  UPM     nnS[        S5      R                  R                  5       R                  SS	9[        U5      US S
 US U  [        [        5      [        [        5      S.$ s  snf s  snf )Nr'  TrA  ackc                 8    [        U R                  SS5      5      $ )NrI  r   r7  )r  s    r'   r   _alarm_state.<locals>.<lambda>r  s    s155r?3r   r   r  r  r  r  )r  r  active_countactiver  log_fileack_file)r/  ALERTS_LOG_FILErD  rM  r   r  r   r  r  r  rA  r   rI  )rN  r  r.  rL  rC  rP  rT  s          r'   _alarm_staterX  j  s    ,7,HI,Hq",HGIEiid$3$(E.!%L	 
 LL3TLB >An(=aF> ,5599;EEyEYF"+&5/(+,  J ?s   C=7DDr4  rt  r=  r,  r?  c           
         SS K nUR                   R                  5       R                  SS9UR                   R                  5       R                  S5      [        R
                  " 5       R                  S S -   U =(       d    SU=(       d    SU=(       d    SU=(       d    S	U=(       d    S
U=(       d    SSS.	n[        [        U5        [        [        U5        U$ )Nr   r  r  z%Y%m%d_%H%M%S_r  r<  Ein System braucht Victor.r>  r   cockpitr@  F)	rI  r'  r4  rt  r,  r=  r+  r?  rA  )r  r  r  r  rj  rk  rl  r2  rW  r&  ALERTS_ACTIVE_FILE)r4  rt  r=  r+  r,  r?  r  rC  s           r'   _alarm_appendr]    s    ll **I*>ll ))*:;djjl>N>NrPQ>RR(.::i&%IM"M
E /5))51Lr   rF  rH  r  c                     SS K nUR                   R                  5       R                  SS9U U=(       d    SU=(       d    SS.n[        [        U5        U$ )Nr   r  r  victorr   )rI  r'  rH  r  )r  r  r  r2  rI  )rF  rH  r  r  r  s        r'   
_alarm_ackr`    sN    ll **I*>"(
	E %u-Lr   c                 N   SS K n[        U R                  SS5      =(       d    S5      R                  5       n[        U R                  SS5      =(       d    S5      R                  5       nU(       a  U(       d  [	        S5      e [
        R                  " [        R                  SS95      nUR                  S/ 5      nUR                   R                  5       R                  S	S
9nS nU H  nUR                  S5      U:X  d  M  Un  O   Uc  SU0nUR                  U5        UR                  [        U R                  SUR                  SU5      5      5      S S [        U R                  SUR                  SS5      5      5      S S [        U R                  SS5      5      S S USUS.5        [        [        U5        [!        ["        S-  UUUR                  S5      UR                  S5      [%        U5      US S SS.5        SX'S   [%        U5      S.$ ! [         a    S/ 0n GNyf = f)Nr   	device_idr   
apns_tokenz!device_id and apns_token requiredrY  r  devicesr  r  r'  device_labelr[  r   r1   applern  	bundle_id   ztoken-registered)r[  r1   rg  rc  r   r  zapple_alarm_device_tokens.jsonlr  zAAPNs token registered; full token stored only in device registry.)rI  rb  r1   rg  	token_lentoken_prefixr  Tr   )r  rb  r   ri  )r  r   r   r"   r  r  r  APPLE_ALARM_DEVICES_FILEr  r#   r   r  r  r   r   r&  r2  rJ  rA  )	r  r  rb  r  r[  rd  r  r?  devices	            r'   _apple_register_device_tokenrm    s   DHH["-34::<Ir*0b1779EE<==#::6@@'@RS !!)R0G
,,



&
&	
&
:CE::dy(E  }y!u	LLTXXneii.KLMdsSDHHVUYYvw%?@A#2F+r23DS9$  /:*@@		&!YY{+Zbq	SC  Y/X[\aXbccA  #r?#s   'H H$#H$c                  x   SSK n [        [        5      nU R                  R	                  5       R                  5       nU R                  R	                  5       U R                  U R                  R	                  5       R                  5       S9-
  R                  5       nSnSnSn0 nU H  n[        UR                  SS5      =(       d    S5      n	[        UR                  SS5      5      n
U
(       a  U
SS OSn[        UR                  S	S
5      =(       d    S
5      nXi-  nX:  a  XI-  nX:  a  XY-  nUR                  US5        X|==   U	-  ss'   M     [        US5      [        US5      [        US5      [        UR                  5       S S9 VVs0 s H  u  pU[        US5      _M     snn[        U5      S.$ s  snnf )z:Liest _costs/costs.jsonl und gibt Zusammenfassung zurueck.r   Nr  r  r  rI  r   r%  sancho_namer  ru   c                     U S   * $ Nrq   r  r  s    r'   r    _costs_summary.<locals>.<lambda>  s    ]^_`]a\ar   rs  )	today_usdthis_week_usd	total_usd	by_sanchoentry_count)r  r/  
COSTS_FILEr  r  r  r  weekdayr   r   r   r   r  r   r   rA  )r  r.  	today_str
week_startrs  week_usdru  rv  r  costrI  r  r   r  r  s                  r'   _costs_summaryr~    s   *%G **,I((.."S]]8H8P8P8R]%SS^^`JIHIIQUU:q).Q/tR!b"g155	2?i@	IHT3'4 " i+x+i+4:9??;LRa4bc4bDAE!QK4bcG  ds   F6g      .@g      @r)  )inputre  cache_write
cache_readg      @g      9@g      @r   r  g      ?r  )claude-sonnet-4-6zclaude-sonnet-4-5zclaude-opus-4-7zclaude-opus-4-6zclaude-haiku-4-5claude-haiku-4-5-20251001gq=
ףp?usagec                    [         R                  U [        5      n[        UR                  SS5      =(       d    S5      n[        UR                  SS5      =(       d    S5      n[        UR                  SS5      =(       d    S5      n[        UR                  SS5      =(       d    S5      nX2S   -  XBS   -  -   XRS   -  -   XbS	   -  -   S
-  $ )Ninput_tokensr   output_tokenscache_creation_input_tokenscache_read_input_tokensr  re  r  r  g    .A)KOSTEN_PRICESr   KOSTEN_FALLBACK_PRICESr   )rP  r  r   inpr  cwcrs          r'   _calc_cost_usdr    s    %!78A%))NA.3!4C%))OQ/415C%))91=BCB%))5q9>Q?BG*sx[002-8H3HH2R^P_K__cnnnr   range_c                   ^+ SSK nSSKJnJnJn  UR	                  UR
                  5      nUR	                  5       nUR                  5       R                  5       nUSS nU S:X  a0  UR                  SSSSS9n	U	R                  UR
                  5      n
UnO0UR                  SSSSSS9nUR                  UR
                  5      n
Un0 nS	n[        [        R                  " 5       S
-  S-  S-  S-  5      nUR                  USS9 GH  n [        USSS9 nU GH  nUR                  5       nU(       d  M   [        R                   " U5      nUR#                  S5      S:w  a  MK  UR#                  S0 5      n[%        U[&        5      (       d  Mt  UR#                  S0 5      nU(       d  M  UR#                  SS5      nU(       d  M  UR)                  UR                  SS5      5      nUU
:  a  M  [        UR#                  SS5      =(       d    S5      m+[+        UR#                  SS5      =(       d    S5      n[+        UR#                  SS5      =(       d    S5      n[+        UR#                  SS5      =(       d    S5      n[+        UR#                  S S5      =(       d    S5      n[-        T+U5      nUU-  nT+U;  a  S	SSSSS!.UT+'   UT+   S"==   U-  ss'   UT+   S==   U-  ss'   UT+   S==   U-  ss'   UT+   S#==   U-  ss'   UT+   S$==   U-  ss'   GM     SSS5        GM     [=        U[>        -  S%5      n0 n[A        URC                  5       S& S'9 H?  u  nn [=        U S"   [>        -  S%5      [=        U S"   S%5      U S   U S   U S#   U S$   S(.UU'   MA     S	n!0 n"[        R                  " 5       S)-  S*-  S+-  S,-  n#U#RE                  5       (       Gay   [        U#SSS9 nU GH]  nUR                  5       nU(       d  M   [        R                   " U5      n[        UR#                  S-S5      5      n$U$(       d  MX  U S:X  a	  U$U:w  a  Mf  OU$RG                  U5      (       d  M  [I        UR#                  S.S5      =(       d    S5      n%[        UR#                  SS5      =(       d    S5      m+[        UR#                  S/S5      =(       d    S5      n&U&(       dN  [K        U+4S0 jS1 5       5      (       a  S2n&O1S3T+;   a  S3n&O(S4T+;   a  S5n&O[K        U+4S6 jS7 5       5      (       a  S8n&OS2n&U!U%-  n!U"R#                  U&S	5      U%-   U"U&'   GM`     SSS5        [=        U![>        -  S%5      n'0 n([A        U"RC                  5       S9 S'9 H)  u  n)n*[=        U*[>        -  S%5      [=        U*S%5      S:.U(U)'   M+     U'[=        U!S%5      U(U[=        US%5      S;UUR                  5       U [>        S<.
$ ! [        R.                  [0        [2        [4        4 a     GM  f = f! , (       d  f       GM  = f! [6        [8        [:        4 a     GM)  f = f! [        R.                  [0        [2        [4        4 a     GM|  f = f! , (       d  f       GN%= f! [6        [8        [:        4 a     GN@f = f)=u   Kombiniert zwei Datenquellen:
1. ~/.claude/projects/**/*.jsonl — Claude Code Abo-Wert (kein echter Betrag, durch Max-Abo gedeckt)
2. ~/Vibe Coding/Rat der Weisen/sessions/costs.jsonl — echte API-Kosten (rdw.py etc.)
range_: 'today' oder 'month'r   N)r  timezoner  r>  r  )hourminutesecondmicrosecondrq   )r  r  r  r  r  r  r  r  z**r  T)	recursiverY  rA  r  r  rV  rt  r  r  r   Zz+00:00rP  r  r  r  r  r  )usdr  r  r  r  r  r  r  ru   c                     U S   S   * $ )Nrq   r  r  r  s    r'   r   _kosten_data.<locals>.<lambda>N  s    !U|r   rs  )eurr  r  r  r  r  zVibe CodingzRat der Weisensessionsr  r  estimated_cost_usdr(  c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  rm   rP  s     r'   r  _kosten_data.<locals>.<genexpr>t  s     "Q7P!:7Pr  )gpto1o3o4r  r  clauder   c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r  r  s     r'   r  r  z  s     $Q9PA%Z9Pr  )rn  r  r  c                     U S   * $ rq  r  r  s    r'   r   r    s
    QqTEr   )r  r  u1   Mit Claude Max Abo gedeckt — kein echter Betrag)
real_api_eurreal_api_usdreal_by_providersubscription_value_eursubscription_value_usdsubscription_noteby_modellast_updatedr  eur_usd_rate)&r   r  r  r  r  utcr  r  rA  
astimezoner   r   r  r  r"   r  r  r   r  r  r  rB  r  r  r  KeyErrorr  r  PermissionErrorr  r  KOSTEN_EUR_USD_RATEr   r   r  rU  r   r@  ),r  r  r  _tzr  r  	local_nowrz  	month_strmidnight_local	since_utcdate_filtermonth_start_localr  subscription_usdpatternr   r  r   objr  r  ts_strrI  r  r  r  r  r  subscription_eurby_model_cleanr   r  r  real_by_provider_usd	rdw_costsr  r}  r(  r  r  provusd_valrP  s,                                              @r'   _kosten_datar    sB   
 HH
''#''
C	I'')I"1I"**!AST*U"--cgg6	%--!!Aa]^-_%009	 H$))+	)J6=	IJG

7d
3(	dWY?1D::<D  !"jj.776?k9$!ggi4)#t44$ # 4$$!$b!9%$ ..v~~c8/LM	>$ #CGGGY$?$L9 M!%))NA">"C!D!%))OQ"?"D1E!%)),I1"M"RQRS!%)),Eq"I"NQO#1%#?(H4( 0691@ARScd/fHUO .8C. 7C?7 8C?8 6B>6 5B>5E  @? 4V -0CCQGNx~~'-CD15$77;51%~./}-|_
q E L!#		m+.>>Km[I%	i')DD::<D !"jj. 34 $!W, K/ (  0 $%<<#<#< ($SWW-A1%E%JK #CGGGR$8$>B ?#&swwz2'>'D"#E'""Q7P"QQQ+3!)U!2+3!)U!2+6!$$Q9P$Q!Q!Q+7+3$,9M9Q9QRZ\_9`cg9g,X6?  EL (;;Q?L 4 : : </Rg#66:!$"
 S %lA.,"2"'(8!"<P"+ M !00*h	R ! !I @?L '2 		n !00*h	R ! !C EDF '2 		s
  X W?3+WW? 'WW?	W"W?$W=W??'W&W?(D&WW?XY-  Y98X/1Y3X/?YX/YCX/8Y=Y- $W<	7W?;W<	<W??
X		XXX,+X,/$YYYY
Y*%Y- *Y- -ZZc                      SSK n [        R                  " 5       nSU S3nSn[        U5      R	                  5       (       d  Sn[        U5      R	                  5       (       a  USU/$ U/$ )u   Gibt den tmux-Befehl mit explizitem Socket zurück.
tmux-Prozesse die via nohup/launchd gestartet wurden haben keinen
TMUX_TMPDIR in ihrer Umgebung — Socket-Pfad explizit angeben.r   Nz/private/tmp/tmux-z/defaultz/opt/homebrew/bin/tmuxtmux-S)getpassr   getuidr   r  )r  uidsockettmux_bins       r'   	_tmux_cmdr    se     
))+C!#h/F'H>  ""F|$'':r   sessionc                     U (       d  g [         R                  " [        5       SSU /-   [         R                  [         R                  SS9nUR                  S:H  $ ! [
         a     gf = f)uT   Prüft ob eine tmux-Session noch läuft. Gibt False bei leerem session-Name zurück.Fzhas-session-trm  r   r   r  r   )r   r  r  r!   r   r#   )r  r  s     r'   _tmux_session_aliver    sf    	K=$88%%%%	
   A%% s   AA 
A'&A'c                  @   [         R                  5       (       d  / $  [        R                  " [         R	                  SS95      n [        U [        5      (       d  / $ / nU R                  5        GH  u  p#[        U[        5      (       d  M  [        UR                  SS5      =(       d    UR                  SS5      5      R                  5       n[        UR                  SS5      5      R                  5       nU(       d	  U(       d  M  UR                  UU[        UR                  SS5      5      R                  5       U[        UR                  SS5      5      [        UR                  SS5      5      UR                  S	S
5      S.5        GM     U$ ! [         a    / s $ f = f)u_   Liest sancho_registry.json und gibt Liste mit pane_id-Feld zurück. Gibt [] zurück bei Fehler.rY  r  r   r   
birth_namer  born	last_seenlast_seen_tsr   )pane_idr   r  r  r  r  r  )SANCHO_REGISTRYr  r  r  r  r  r  r   r   r   r"   r   r#   )ro  r  r  r  r   r  s         r'   _load_sancho_registryr    sI   !!##	jj22G2DE#t$$I YY[MGdD))txx+Itxxb/IJPPRD$((9b1288:GMM"!$((<"<=CCE"DHHVR01 +r!:; $ ;  )"  	s   =F D2F FF
event_typec                 l   SSK nSSKn[        S-  nUR                  SS9  [	        S5      R
                  R                  5       R                  5       nXE S3-  nUR                  5       U S.UEn[        US	S
S9 nUR                  UR                  USS9S-   5        SSS5        g! , (       d  f       g= f)uY   Append one event to today's Emil session JSONL — used by foto/kurzcheck/frage handlers.r   Nlernbegleiter_sessionsTr  r  .jsonl)rI  r  r  rY  r  Fr  r  )r   r  COCKPIT_DIRr   r   r  r  r  r  r  re  )	r  r  r/  _jsessions_dirr  rU  r  r  s	            r'   _lb_session_logr    s    !!99L%z"''--/99;Ev..H779j9D9E	hg	.!	U3d:; 
/	.	.s   9#B%%
B3c                      ^  \ rS rSrU 4S jrSS jrSS jrS rU 4S jrSS jr	S r
S	 rU 4S
 jrS rS rS rS rSrU =r$ )CockpitHandleri  c                 D   > [         TU ]  " US[        [        5      0UD6  g )N	directory)super__init__r   r  )r?  r=  kwargs	__class__s      r'   r  CockpitHandler.__init__  s    $E#k*:EfEr   c                 *   U R                  S5        U R                  SU5        U R                  S[        U5      5        U R                  SU5        U R                  5         U R	                  5         U(       a  U R
                  R                  U5        g g )Nr%  r`  Content-LengthCache-Control)send_responsesend_headerrA  _corsend_headerswfiler  )r?  r  content_typecache_controlinclude_bodys        r'   _serve_bytesCockpitHandler._serve_bytes  st    36)3t95-8

JJT" r   c                     [        [        5      U-  nUR                  5       (       d  U R                  SSS05        g U R	                  UR                  5       X#U5        g )N  r   	not found)r   r  r  r
  r  r  )r?  r   r  r  r  	file_paths         r'   _serve_cockpit_file"CockpitHandler._serve_cockpit_file  sQ    %0	!!JJsWk23)..0,|\r   c                     U R                  S5        U R                  SU5        U R                  5         U R                  5         g )Nr  rH  )r  r  r  r  )r?  locations     r'   	_redirectCockpitHandler._redirect  s5    3X.

r   c                   > [        U R                  5      nU R                  R                  SS5      nUR	                  S5      (       a"  UR                  S;   a  U R                  S5        g UR	                  S5      (       a"  UR                  S;   a  U R                  S5        g UR	                  S5      (       a"  UR                  S;   a  U R                  S	5        g UR	                  S
5      (       a"  UR                  S;   a  U R                  S5        g UR	                  S5      (       a"  UR                  S;   a  U R                  S5        g UR	                  S5      (       a"  UR                  S;   a  U R                  S5        g SSSSSSSSSSS.
nUR                  5        H)  u  pEUR                  U;   d  M  U R                  " USS06    g    [        TU ]%  5         g )NHostr   voice.rM  r   	/mikrofonreisebericht./reisebericht.htmlkameramotor./kameramotor.html
fotolabor./thecamera.html?labor=fotolabor
filmlabor./thecamera.html?labor=filmlaborcamera./thecamera.html)voice_v2.htmltext/html; charset=utf-8no-store)mikrofon.webmanifestapplication/manifest+jsonr  )mikrofon_v2.htmlr  r  )mikrofon-v2.webmanifestr  r  )alarmzentrale.htmlr  r  )alarmzentrale.webmanifestr  r  )thecamera.htmlr  r  )mathe-lernhilfe.htmlr  r  )emil_spickzettel.htmlr  r  )zemil_rueckseite.htmlr  r  )
r  z
/mikrofon/z/mikrofon.webmanifestz/mikrofon-v2z/mikrofon-v2/z/mikrofon-v2.webmanifestz/alarmez/alarme/z/alarmzentralez/alarmzentrale/z/alarmzentrale.webmanifestz
/thecameraz/thecamera/z
/mathe-maiz/mathe-mai/z/emil/spickzettelz/spickzettelz/emil/rueckseitez/rueckseiter  F)
r   r   r  r   rU  r  r   r  r  do_HEAD)r?  r  hosthead_routespathsr  r  s         r'   r,  CockpitHandler.do_HEAD  s   $))$||+??8$$	)ANN;'???++y0HNN/0??>**v{{i/GNN./??<((V[[I-ENN<=??<((V[[I-ENN<=??9%%&++*BNN,- *c(i/k+o KI-s+e+k3t1q
 (--/LE{{e#((%DeD 0
 	r   c           
        ^ ^^ [        T R                  5      nUR                  R                  S5      (       d  gSUR                  [        S5      S -   nUR                  (       a  USUR                  -   -  nSU-   m UU U4S jn U" 5       u  pVT R                  S5        T R!                  SW5        T R!                  S[        U5      5        T R!                  SS5        T R#                  5         T R%                  5         T R&                  R)                  U5        g! [
         a    [        S5      n[        S	S
5      n[        R                  " / SQ[        U5      [        R                  UUSS9  SSKn	[        S5       H3  n
U	R                  S5         U" 5       u  pV  O! [
         a    Su  pV M1  f = f   Wc  e  GN,f = f! [
         a,  nT R+                  SSS[        U5      SS S.5         SnAgSnAff = f)zHBridge the recovered Voice Input V3.2 UI through the fixed Cockpit door.z/api/voice-v32/Fz/api/Nr-  zhttp://127.0.0.1:9090c                  r  > 0 n TR                   R                  S5      nU(       a  XS'   TR                  S:X  a  SOSn[        R                  " TUS:X  a  TOS U US9n[        R
                  " USS9 nUR                  5       UR                   R                  SS5      4sS S S 5        $ ! , (       d  f       g = f)Nr`  ra  r  rb  ru   r  r\  )r  r   command_urlrequestr  r  r  )r  ctyperc  r  r  r  r?  rY   s        r'   _once.CockpitHandler._voice_v32_proxy.<locals>._once7  s    ((8.3N+#'<<6#9u!))"(F"2$#!	 !((a8D99;(8(8I[(\\ 988s   2,B((
B6z,/Users/victorholland/Vibe Coding/Voice Inputz/tmp/voice_bridge.logab)z/opt/homebrew/bin/python3-uzvoice_bridge_server.pyT)r   stdinr   r   start_new_sessionr   rm  g      ?NNr%  r`  r  r  r    z/Voice Input V3.2 ist lokal noch nicht gestartetrh  )r  r   r   )r   r   rU  rA  r  r#   r   r  r   r   r   r!   r   r  r   r  r  r  r  r  r  r
  )r?  r  r  target_pathr6  r  r  
bridge_dirlog_fh	_time_v32r  r  rY   s   ``          @r'   _voice_v32_proxyCockpitHandler._voice_v32_proxy-  s   $))${{%%&788C0A,B,C DD<<3--K%32	]%*W", s#^\:-s4y9_j9JJLJJT" E  !"PQ
5t<  QJ$,,!!&* )rAOOD)8-2W*$ 8-7*l8 # <  '8  	JJsJa&#,  
 	sb   >G  	D BG  A6F=	FF=F0,F=/F00	F=9G  <F==G   
G6
"G11G6c                 f    U R                  S5        U R                  5         U R                  5         g )N   )r  r  r  r?  s    r'   
do_OPTIONSCockpitHandler.do_OPTIONSk  s%    3

r   c                  G^G^G^G^G^G^G^G^G^G^G^G^G^G^G^ U R                   R                  SS5      nSUR                  5       ;   a  / n  U R                  R	                  5       R                  SSS9R                  5       nU(       d  MA  [        UR                  S5      S	   S
5      nUS	:X  a  OGUR                  U R                  R                  U5      5        U R                  R                  S5        M  SR                  U5      nO@[        U R                   R                  SS	5      5      nU R                  R                  U5      nU R                  U5      (       a  g U R                  S:X  a   [        R                   " U5      n["        R$                  " SSUR                  S5      =(       d    SR                  5       5      nUR                  S0 5      n	[&        SU S3-  n
U
R)                  [        R*                  " U	SSS95        U R-                  SSS05        g U R                  S:X  aZ   [        R                   " U5      n[&        S-  n
U
R)                  [        R*                  " USSS95        U R-                  SSS05        g U R                  S:X  aZ   [        R                   " U5      n[&        S -  n
U
R)                  [        R*                  " USSS95        U R-                  SSS05        g U R                  S!:X  Ga   [        R                   " U5      nUR                  S"S#5      nUR                  S$S5      nUR                  S%S&5      n[1        5       nU(       d  U R-                  SSS'05        g S	S KJn  S	S KnS(U S)U S*U S+3nS,S-S.US/./S0.nUR7                  S1UR+                  U5      R9                  5       S2US3S4.S59nUR;                  US6S79 nUR!                  UR                  5       5      nS S S 5        U R-                  SS8WS9   S	   S:   05        g U R                  S;:X  a   [        R                   " U5      n[&        S<-  n
S	S KnUR=                  5       US='   U
R?                  S>5      nUR)                  [        R*                  " USSS95        URA                  U
5        U R-                  SSS05        g U R                  S?:X  GaC   [        R                   " U5      nUR                  S@S5      nUR                  SAS5      nUR                  S"S#5      nUR                  S$S5      n[1        5       nU(       d  U R-                  SSS'05        g S	S KJn  S	S KnSBU SCU SDU SEU SF3	nS,SGS.US/./S0.nUR7                  S1UR+                  U5      R9                  5       S2US3S4.S59nUR;                  US6S79 nUR!                  UR                  5       5      nS S S 5        WS9   S	   S:   n[C        SHXUUUSI.5        U R-                  SSJU05        g U R                  SK:X  Ga   [        R                   " U5      nUR                  SL/ 5      nUR                  S"S#5      nUR                  S$S5      nUR                  S%S&5      nUR                  SMSN5      nUR                  SOS	5      n UR                  SPSQ5      n![1        5       nU(       d  U R-                  SSS'05        g S	S KJn"  S	S Kn#SRU SSU STU SU3U(       a  SVU SW3OS-   SX[        U 5       SY3-   n$S	S KJn"  S	S Kn#S,SZU$U V%s/ s H  n%U%S[   S\;   d  M  U%S[   U%S9   S/.PM     sn%S].nU"R7                  S1U#R+                  U5      R9                  5       S2US3S4.S59nU"R;                  US6S79 nU#R!                  UR                  5       5      nS S S 5        WS9   S	   S:   n[E        S^ [G        U5       5       S5      n&[C        S_XUUU&US`.5        U R-                  SSAU05        g U R                  Sa:X  Ga   [        R                   " U5      nUR                  SbS5      n'UR                  S"S#5      nUR                  S$Sc5      nU'(       d  U R-                  SGSSd05        g [1        5       nU(       d  U R-                  SSS'05        g S	S KJn(  S	S Kn)SeU SCU Sf3nS,SgS.SbShSiU'Sj.Sk.S:USl./S/./S0.nU(R7                  S1U)R+                  U5      R9                  5       S2US3S4.S59nU(R;                  USmS79 nU)R!                  UR                  5       5      nS S S 5        WS9   S	   S:   R                  5       n*U*RI                  Sn5      (       aL  SoU*;   aF   U)R!                  U*5      n+[C        SqXSU+R                  SrS5      U'Ss.5        U R-                  SU+5        g [C        SqXSU*U'St.5        U R-                  SSuU*05        g U R                  Sv:X  a   U(       a  [        R                   " U5      O0 n[/        UR                  SwS5      5      R                  5       n,U,(       d  U R-                  SGSSxSy.5        g [K        [L        5      RN                  RN                  Sz-  n-[P        RR                  " S{[/        U-5      U,/[P        RT                  [P        RT                  SS|9  U R-                  SSU,S}.5        g U R                  S~:X  Ga   U(       a  [        R                   " U5      O0 n[/        UR                  SS5      5      R                  5       n.[/        UR                  SS5      5      R                  5       n/U.(       d  U R-                  SGSSSy.5        g U/(       d  U R-                  SGSSSy.5        g S	S Kn0U0RW                  SU.5      (       d  U R-                  SGSSSy.5        g [Y        U.5      (       d  U R-                  SSSU.< S3Sy.5        g [P        RZ                  " []        5       SSU.U/S/-   [P        RT                  [P        R^                  SS9nUR`                  S	:w  a@  URb                  R                  SS9R                  5       n1U R-                  SSSU1 3Sy.5        g U R-                  SSS05        g U R                  S:X  ai  [g        5         [i        S [j        Rm                  5        5       5      n2[i        S [j        Rm                  5        5       5      n3U R-                  SSU2U3S.5        g U R                  S:X  a   U(       a  [        R                   " U5      O0 n[/        UR                  SS5      =(       d    UR                  SS5      5      R                  5       n4U4(       d  U R-                  SGSSSy.5        g [o        U4[/        UR                  SS5      =(       d    S5      S S [/        UR                  SS5      =(       d    S5      S S S9n5U R-                  SSU5[q        5       S.5        g U R                  S:X  Gak   U(       a  [        R                   " U5      O0 n[s        [/        UR                  SS5      5      S S [/        UR                  SS5      5      S S [/        UR                  SS5      5      S S [/        UR                  SS5      5      S S [/        UR                  SS5      5      S S [/        UR                  SS5      5      S S S9n6UR                  S5      (       ai  [P        RR                  " [/        [&        RN                  S-  S-  5      U6S   U6S   U6S   U6S   U6S   U6S   /[P        RT                  [P        RT                  SS|9  U R-                  SSU6S.5        g U R                  S:X  a>   U(       a  [        R                   " U5      O0 n[u        U5      nU R-                  SU5        g U R                  S:X  Ga   S	S Kn7S	S Kn8U(       a   U8R!                  UR                  S5      5      O0 n9U9R                  SS5      n:U9R                  SS5      n;[&        RN                  S-  n<0 n=U<Rw                  5       (       a  U8R!                  U<Ry                  5       5      n=[        U7R=                  5       S-  5      U;U7R=                  5       S.U=U:'   U<R)                  U8R+                  U=SS95        U R-                  SSU:U=U:   S   S.5        g U R                  S:X  Ga<   S	S K=n?U(       a  [        R                   " U5      O0 n[|        S-  n@[|        S-  nA0 nBU@Rw                  5       (       a$   [        R                   " W@Ry                  SS95      nBWBR                  U5        U?R                  SSS[/        [|        5      S>S9 nC[        R                  " UBUCSSS9  UCR                  nDS S S 5        [        R@                  " WD[/        W@5      5        S	S KDnE[        WAUER                  R                  5       R                  5       US.5        U R-                  SSS05        g U R                  S;   a   [        R                   " U5      nF[        UF[        5      (       a  WF/nF[        WF[        5      (       d  U R-                  SGSSSy.5        g [        S-  nGWF H&  nH[        UH[        5      (       d  M  [        WGWH5        M(     U R-                  SS[        WF5      S.5        g U R                  S:X  a   [        R                   " U5      nH[        UH[        5      (       a  WH(       a  WHS	   O0 nH[        WH[        5      (       d  U R-                  SGSSSy.5        g [        S-  nG[        UGWH5        U R-                  SSS05        g U R                  S:X  ad   [        R                   " U5      nH[        UH[        5      (       a  WH(       a  WHS	   O0 nH[        S-  nG[        UGWH5        U R-                  SSS05        g U R                  RI                  S5      (       Ga  U R                  [        S5      S  R                  S5      nIUI(       a  [        S WI 5       5      (       d  U R-                  SGSSSy.5        g  U(       a  [        R                   " U5      O0 n[/        UR                  SS5      5      R                  5       nJ[/        UR                  SS5      5      R                  5       nKUJ(       d  U R-                  SGSSSy.5        g S	S KDnLULR                  R                  5       R                  S5      nM[        R                  SS9  [        WI S3-  nNUNR                  SSS9 nOUOR                  SWK SUM SWJ S35        S S S 5        U R-                  SSWIS.5        g U R                  S:X  a  U R-                  SSSSy.5        g U R                  S:X  GaD   U(       a  [        R                   " U5      O0 n[/        UR                  SS5      5      R                  5       nPUP(       d  U R-                  SGSSSy.5        g [J        R                  " 5       S-  nQUQR                  SSS9  UQS-  nRURR)                  SWP S35        [P        RZ                  " SS[/        UR5      SSSS/SSS60 [        R                  ESS0ESS9nUR                  URb                  -   R                  5       n
SU
;   a  SU
;   a  U R-                  SSSSy.5        g U R-                  SSSS.5        g U R                  S:X  Gax   U(       a  [        R                   " U5      O0 n[/        UR                  SS5      5      R                  5       nS[/        UR                  SS5      5      R                  5       nGUS(       a  WSRI                  S5      (       d  U R-                  SGSSSy.5        g [J        R                  " 5       S-  nRURRw                  5       (       d  U R-                  SGSSSy.5        g [/        [        R                  " 5       5      S S nTSWSSS.[        UT'   [|        S-  WG-  nUUUR                  SSS9  GS  nV[        R                  " UVUTUSUUWR4SGS9nWUWR                  5         U R-                  SSUTGS.5        g U R                  GS:X  GaS   S	S K=nXUnYUY(       d  U R-                  SGSGSSy.5        g [        5       nZUZ(       d  U R-                  SGSGSSy.5        g S	GSK]J^n[  U[" WZGS9n\U R                   R                  GSGS	5      n]U R                   R                  GS
S5      R                  5       n^U^(       d   [K        [L        5      RN                  RN                  GS-  GS-  GS-  n_U_Rw                  5       (       aM  [        R                   " W_Ry                  SS95      n`[/        U`R                  GSS5      5      R                  5       n^W]GS:X  a  GSOGSnaWXR                  GSW] 3SGS9 nbUbR                  WY5        UbR                  nCS S S 5         [        WCGS5       nc[        GSGSW] 3UcWa4S:GSGS9ndW^(       a  W^WdGS'   W\R                  R                  R                  " GS0 WdD6nS S S 5        [        W[.        5      (       a  UR                  5       OUR                  R                  5       neU R-                  SSUeGS.5         [        R                  " WC5        g U R                  GS:X  Ga   S	S KDnfU(       a%  [        R                   " UR                  S5      5      O0 nUR                  S:S5      ne[K        [L        5      RN                  RN                  GS-  GS-  ngUgR                  SSS9  WfR                  R                  5       R                  GS5      nhUgGSUh GS3-  ni[        UiSSS9 nbUbR                  GSUfR                  R                  5       R                  5        GS Ue S35        S S S 5        U R-                  SSS05        g U R                  GS!:X  Ga   S	S KDnjS	S KnkU(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  S:S5      5      R                  5       neUe(       d  U R-                  SGSGS"Sy.5        g [K        [L        5      RN                  RN                  GS#-  nlWjR                  R                  5       R                  S5      nMGS$nmUlRw                  5       (       a_  WlRy                  SS9nBWkR                  GS%UB5       Vns/ s H  nn[        Un5      PM     nonnGS&[/        Uo(       a  [        Wo5      S&-   OS&5      -   nm[        We5      GS':  a
  WeS GS' GS(-   OWenpGS)Wm GS*Up GS+WM GS,3nqGS-nrGS.nsWlRw                  5       (       ap  WlRy                  SS9ntGS/Ut;   a?  WkR                  GS0Wt5      n%U%(       a  U%R                  5       nuWtS Uu Wq-   UtUuS  -   ntOWtWq-  ntOWtWrWs-   Wq-   -  ntWlR)                  WtSS9  U R-                  SSWmGS1.5        g U R                  GS2:X  a   U(       a%  [        R                   " UR                  S5      5      O0 n[K        [L        5      RN                  RN                  GS-  GS3-  GS4-  nvUvRN                  R                  SSS9  [        UvS5       nbUR                  SUR                  GS5S5      5      nwUbR                  Uw S35        S S S 5        U R-                  SSS05        g U R                  GS6:X  Ga   S	S K=n?UnYUY(       d  U R-                  SGSGSSy.5        g [        5       nZUZ(       d  U R-                  SGSGS7Sy.5        g S	GSK]J^nx  Ux" WZGS9nyU R                   R                  GSGS	5      n]U R                   R                  GS
S5      R                  5       n^U]GS:X  a  GSOGSnaU?R                  GSW] 3SGS9 nzUzR                  WY5        UzR                  n{S S S 5         [        W{GS5       n|[        GSGSW] 3U|Wa4S:GSGS9n}W^(       a  W^W}GS'   WyR                  R                  R                  " GS0 W}D6n~S S S 5        [        W~[.        5      (       a  W~R                  5       OW~R                  R                  5       nWyR                  R                  R                  GS8SGS9GS:S/.S.US/./S09nUR                  S	   R                  R                  R                  5       nU R-                  SSUUGS;.5        [        R                  " W{5        g U R                  GS<:X  a   S	S KDnUnYUY(       d  U R-                  SGSGSSy.5        g U R                   R                  GSGS	5      n][K        [L        5      RN                  RN                  GS-  GS=-  nUR                  SSS9  WR                  R                  5       R                  GS>5      nMUM GSU] 3nUU-  R                  WY5        U R-                  SSUGS?.5        g U R                  GS@:X  Gad   U(       a%  [        R                   " UR                  S5      5      O0 n[K        [L        5      RN                  RN                  GS-  GS-  GS-  n_U_RN                  R                  SSS9  U_Rw                  5       (       a$  [        R                   " W_Ry                  SS95      nBOS&/ 0 SGSA.nBGSBU;   a
  UGSB   WBGSB'   GSCU;   a  WBGSC   R                  UGSC   5        GSU;   a
  UGS   WBGS'   S	S KDnUR                  R                  5       R                  5       WBGSD'   W_R)                  [        R*                  " UBSSS9SS9  U R-                  SSS05        g U R                  GSE:X  Ga   S	S KDnS	S KpnU R                   R                  GSFS5      nS nUR                  S5       HK  nUR                  5       nURI                  GSG5      (       d  M,  W[        GSG5      S  R                  GSH5      n  O   W(       Ga6  U(       Ga.  [K        [L        5      RN                  RN                  GS-  GS=-  nUR                  SSS9  WR                  R                  5       R                  GSI5      nMGSJWR9                  5       -   GSK-   U-   n*WR                  U*5      nJSnUJR                  5        H  nUR                  SwGSLGSM9GS=:X  d  M  WR                  5       =(       d    GSNWM GSO3nWGSNWM SU 3-  nWR                  SGSP9nU(       a)  [        WGSQ5       nbUbR                  U5        S S S 5        Sn  O   U R-                  SSS05        g U R                  GSR:X  Ga=   S	S KDnU(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GSSS5      5      R                  5       n[/        UR                  GSTGS	5      5      R                  5       n]U(       a  [K        [L        5      RN                  RN                  GSU-  GSV-  W-  nUR                  SSS9  UGSWW]WR                  R                  5       R                  5       GSXGSY.nUGSZ-  R)                  [        R*                  " USSS9SS9  U R-                  SSWGS[.5        g U R                  RI                  GS\5      (       Ga3   [        [        U R                  5      R                  5      n[/        UR                  SS/5      S	   5      R                  5       n[/        UR                  GS]GS^/5      S	   5      R                  5       n[/        UR                  GSTGS	/5      S	   5      R                  5       n]U(       ac  U(       a\  [K        [L        5      RN                  RN                  GSU-  GSV-  W-  nUR                  SSS9  UGSNW GSW] 3-  nUR                  U5        U R-                  SSS05        g U R                  GS_:X  Ga   S	S KDnU(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GSSS5      5      R                  5       n[/        UR                  S:S5      5      R                  5       ne[/        UR                  GS`S5      =(       d    S5      R                  5       n[/        UR                  GSaS5      =(       d    S5      R                  5       n[/        UR                  GSbS5      =(       d    S5      R                  5       n[/        UR                  GScS5      =(       d    S5      R                  5       nUR                  GSd0 5      nW(       GaA  We(       d  W(       d  W(       d  W(       Ga$  [K        [L        5      RN                  RN                  GSU-  GSV-  W-  nUR                  SSS9  W=(       d    We=(       d    W=(       d    WnWGSe-  R)                  USS9  W(       a  WGSf-  R)                  WSS9  W(       a  WGSg-  R)                  WSS9  W(       a  WGSh-  R)                  WSS9  WGSZ-  n0 nURw                  5       (       a$   [        R                   " WRy                  SS95      nWR                  R                  5       R                  5       nGSWWGSi'   UUGSj'   GSkUS'   W=(       d    WR                  GScS5      WGSc'   W(       a  WWGSd'   WR)                  [        R*                  " WSSS9SS9  WGSWWGSkW=(       d    GSlWWW=(       d    WW[        W[        5      (       a  WO0 [        WR                  GSm5       Vs/ s H  nUR                  PM     sn5      GSn.nWGSo-  R)                  [        R*                  " USSS9SS9  U R-                  SSS05        g U R                  GSp:X  Ga   S	S K{nU(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  S:S5      5      R                  5       nU(       d  U R-                  SGSGS"Sy.5        g [        5       nZUZ(       d  U R-                  SGSGS7Sy.5        g S	GSK]J^n  U" WZGS9nSn [K        [L        5      RN                  RN                  GS-  GS-  GS-  n_U_Rw                  5       (       aM  [        R                   " W_Ry                  SS95      n`[/        U`R                  GSS5      5      R                  5       nGSqW(       a
  GSrW-   GSs-   OS-   GSt-   W-   nWR                  R                  R                  GSuS.US/./[        U5      S-  S-   GSvGSw9nUR                  S	   R                  R                  R                  5       nUR                  5       nUR                  5       nWR                  S UU5      n/ nUR                  5        H  u  nnnnnUGSx:X  a*  WR                  GSyGSzR                  WWW 5      Sl.5        M:  WGS{;   a>  WR                  SGSzR                  WWW 5      GSzR                  WWW 5      GS|.5        M  WGS}:X  d  M  M     / n[        W5       H3  u  nnUS	:  a  WR                  GSyGSzSl.5        WR                  W5        M5     U R-                  SSWWGS~.5        g U R                  GS:X  Ga   S	S KDnU(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GSS5      5      R                  5       R                  5       n[/        UR                  S:S5      5      R                  5       ne[/        UR                  GSSS5      5      R                  5       nUe(       d  U R-                  SGSGS"Sy.5        g WR                  R                  5       R                  S5      nMUR                  R                  5       R                  GS5      n[K        [L        5      RN                  RN                  nWGS:X  a`  WGS-  GS-  nUUUR                  SSS9  GSW SW=(       d    GSS GS  S3nGSWM GSW=(       d    GS GSWe S3ntWUW-  R)                  UtSS9  GOWS:X  Ga;  S	S KnWGS#-  nlGSnmUlRw                  5       (       a_  WlRy                  SS9nBWR                  GSUB5       Vns/ s H  nn[        Un5      PM     nnnGS[/        U(       a  [        W5      S&-   OS&5      -   nm[        We5      S:  a	  WeS S GS(-   OWenpGS)Wm GSUp GS+WM GS,3nHWlRw                  5       (       az  WlRy                  SS9ntGSUt;   aK  WR                  GSWt5      n%U%(       a+  WtS U%R                  5        WH-   UtU%R                  5       S  -   ntOWtWH-  ntO	WtGSWH-   -  ntWlR)                  WtSS9  O`WGS:X  a?  WGS-  GS-  nUR                  SSS9  GSW GS3nUU-  R)                  GSWM GSWe S3SS9  OU R-                  SGSGSW 3Sy.5        g SnWGS:X  a  [/        WUW-  5      nO'WGS:X  a  [/        WW-  5      nOWS:X  a  [/        Wl5      nWGSU-  GSV-  W=(       d    GS-  nURw                  5       (       Ga   WGSZ-  nURw                  5       (       a$  [        R                   " WRy                  5       5      O0 nUR                  GS/ 5      R                  W5        GSWWR                  R                  5       R                  5       GS.UR                  GSd0 5      U'   WR)                  [        R*                  " USSS9SS9  WGSo-  nURw                  5       (       a$  [        R                   " WRy                  SS95      nOWGSWGS.nGSWWR                  R                  5       R                  5       GS.WR                  GSd0 5      W'   UR                  R                  5       R                  5       UGSD'   WR)                  [        R*                  " USSS9SS9  U R-                  SSWWGS.5        g U R                  GS:X  Ga%   U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GSS5      5      R                  5       R                  5       n[/        UR                  GSS5      5      R                  5       n[/        UR                  GSSS5      5      R                  5       n[K        [L        5      RN                  RN                  nS nU(       a  [K        W5      nOWGS:X  aJ  WGS-  GS-  nURw                  5       (       a*  [        WR                  GS5      GS SGS9nU(       a  WS	   nO]WGS:X  aJ  WGS-  GS-  nURw                  5       (       a*  [        WR                  GS5      GS SGS9nU(       a  WS	   nOWS:X  a  WGS#-  nW(       ad  WRw                  5       (       aO  WRy                  SSGS9S S npU R-                  SSS[/        U5      RA                  [/        W5      S5      UpGS.5        g U R-                  SSSGSGS.5        g U R                  GS:X  Ga'   UnYUY(       d  U R-                  SGSGSSy.5        g G[        5       nU(       d  U R-                  SSGSSy.5        g U R                   R                  GSGS	5      n]U R                   R                  GSFGS5      nS	S KJn  GSnUR7                  UWYGSW 3UGS.GSGS9nUR;                  UGSS79 n[        R                   " UR                  5       R                  S5      5      nS S S 5        WGS   GS   S	   GS   S	   GS   nU R-                  SSUGS.5        g U R                  GS:X  a   S	S KDnU(       a%  [        R                   " UR                  S5      5      O0 n[&        GS-  nWR                  R                  5       R                  5       UGS'   UR)                  [        R*                  " USSS9SS9  U R-                  SSS05        g U R                  GS:X  Ga4   U(       a  [        R                   " U5      O0 n[/        UR                  SS5      5      R                  5       nS[/        UR                  SS5      5      R                  5       nGUS(       a  WSRI                  S5      (       d  U R-                  SGSSSy.5        g [/        [        R                  " 5       5      S S nTSWSSS.[        UT'   [|        S-  WG-  nUUUR                  SSS9  GS n[        R                  " UUTUSUU4SGS9nWUWR                  5         U R-                  SSUTGS.5        g U R                  GS:X  a  G[        (       d  U R-                  SSGSSy.5        g  U(       a  [        R                   " U5      O0 n[/        UR                  SGS5      5      n[        UR                  GSGS5      5      nUGS;  a  GSn[        SG[        S6W5      5      nG[        GR                  " WUGS9  U R-                  SSGSXUUGS.5        g U R                  GS:X  Ga  G[        (       d  U R-                  SSGSSy.5        g  U(       a  [        R                   " U5      O0 n[/        UR                  SS5      5      R                  5       n[/        UR                  GSS5      5      R                  5       n[/        UR                  GSS5      5      R                  5       nU(       d  U R-                  SGSGSSy.5        g WWWGS.nG[        GR
                  " U5        U R-                  SSGSGS.5        g U R                  GS:X  a   [        R                   " U5      n[/        UR                  GSS5      5      R                  5       nU(       d  U R-                  SGSGSSy.5        g S	S K(GmGTR[                  / GSQSGS9  GTR[                  GSGSGSGSGSSGSW/SSGS9nUR`                  S	:X  a  U R-                  SSGSS.5        g U R-                  SSURb                  R                  5       Sy.5        g U R                  GS:X  a   [        R                   " U5      n[/        UR                  GSS5      5      R                  5       nU(       d  U R-                  SGSGSSy.5        g [&        GS-  nUR)                  [        R*                  " GSW0SGS95        U R-                  SSUGS.5        g U R                  GS:X  Gai   S	S Kn0U(       a  [        R                   " U5      O0 n[/        UR                  GSS5      5      R                  5       n[/        UR                  GSS5      5      R                  5       nU(       a  W(       d  [P        RZ                  " / GSQSSGS9n[P        RZ                  " / GSQSSGS9nUR`                  S	:X  aV  WR                  R                  5       nS	S KnUR                  GSWR                  5      n%U%(       a  U%GR                  S&5      OWnW(       a  W(       d  U R-                  SGSGSSy.5        g U0R                  GSW5      (       d  U0R                  GSW5      (       a  U R-                  SGSGSSy.5        g GSGSGSGSGSGSGSGSGSW GSW GSH3/	Gm[P        RZ                  " GTSS6GS9nUR                  R                  SSS9R                  5       nURb                  R                  SSS9R                  5       nUR`                  S	:X  a  U R-                  SSGSW GS3S.5        g W=(       d    W=(       d    GSn1U R-                  SSU1Sy.5        g U R                  GS:X  a  U R-                  GSSGSSy.5        g U R                  GS:X  Ga   U(       a  [        R                   " U5      O0 n[/        UR                  GSS5      5      R                  5       n[/        UR                  GSGS5      5      R                  5       nU(       d  U R-                  SGSGSSy.5        g [        5       nZUZ(       dE  S	S K(nUR[                  / GSQSSGS9nUR`                  S	:X  a  WR                  R                  5       OSnZWZ(       d  U R-                  SSGSSy.5        g S	S KJn  GSW 3nSUR7                  USWR9                  S5      GSWZ 3GSGS.GSGS9nUR;                  UGSS79 nUR                  5       R                  S5      nS S S 5        U R-                  SSWGS .5        g U R                  GS:X  a   SnG[        Ry                  SS9GR                  5        HP  nUR                  5       nURI                  GS5      (       d  M,  WR                  GSS&5      S&   R                  5       n  O   U R-                  SSG[        W5      GS.5        g U R                  GS:X  a   SnG[        Ry                  SS9GR                  5        HP  nUR                  5       nURI                  GS5      (       d  M,  WR                  GSS&5      S&   R                  5       n  O   W(       d  U R-                  SGSGSSy.5        g GSW 3nU R-                  SSUGS.5        g U R                  GS	:X  Ga8   U(       a  [        R                   " U5      O0 n[/        UR                  S:S5      5      R                  5       neUe(       d  U R-                  SGSGS
Sy.5        g [Y        GS5      (       d  U R-                  SSGSSy.5        g [P        RZ                  " []        5       SSGSWeS/-   [P        RT                  [P        R^                  SS9nUR`                  S	:w  a@  URb                  R                  SS9R                  5       n1U R-                  SSSU1 3Sy.5        g U R-                  SSS05        g U R                  GS:X  a   [Y        GS5      (       d  U R-                  SSGSSy.5        g [P        RZ                  " []        5       / GSQ-   [P        RT                  [P        RT                  SS9  U R-                  SSS05        g U R                  GS:X  Ga   S	S KJn  U(       a  [        R                   " U5      O0 n[/        UR                  S:S5      5      R                  5       neUe(       dg  U GR                  SG5        U GR                  GSFGS5        U GR                  5         U GR                  5         U GR                  R                  GS5        g GSnSn G[        Ry                  SS9GR                  5        HP  nUR                  5       nURI                  GS5      (       d  M,  WR                  GSS&5      S&   R                  5       nMR     [/        UR                  GSS5      5      R                  5       =(       d    WnW(       dg  U GR                  S5        U GR                  GSFGS5        U GR                  5         U GR                  5         U GR                  R                  GS5        g GSW GS3n[        R*                  " WeGSGSGSGS.GS.5      R9                  S5      nWR7                  UUWS2GSGS.GSGS9nUR;                  US6S79 nUR                  5       nYS S S 5        U GR                  S5        U GR                  GSFGS5        U GR                  S[        WY5      5        U GR                  5         U GR                  5         U GR                  R                  UY5        g U R                  GS:X  Ga   UnYUY(       a  [        WY5      S:  a  U R-                  SGSGS Sy.5        g U R                   R                  GSFGS5      =(       d    GSnU R                   R                  GSS5      =(       d    SR                  5       R                  5       nUGS!;  a  GSW;   a  GSOGS	nS	S KDnUR                  R                  5       nMUMR                  GS"5      GS#-   [        R                  " 5       GR                  S GS$ -   nG[         U-  nUR                  SSS9  UU GSW 3-  nUR                  WY5        G[#        UGS%S S [/        U5      WUMR                  5       GS&9  [        R                  " G[$        UUU4SGS'U 3GS(9nWUWR                  5         U R-                  SSUGS).5        g U R                  GS*:X  Ga@   [        U R                   R                  SS	5      5      nU(       a>  [        R                   " U R                  R                  U5      R                  S5      5      O0 n[/        UR                  GS+S5      5      [/        UR                  GS,S5      5      S S [/        UR                  GS-S5      5      S GS. [/        UR                  GS/S5      5      S GS0 GS1GS2.nH[        G[&        SSS9 nbUbR                  [        R*                  " UHSGS9S-   5        S S S 5        U R-                  SSS05        g U R                  GS3:X  Ga   U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       n[/        UR                  SS5      5      R                  5       nU(       d  U R-                  SGSGS5Sy.5        g S	S Kn0U0RW                  GS6W5      (       d  U R-                  SGSGS7Sy.5        g W(       a  WGS8;  a  U R-                  SGSGS9Sy.5        g [|        GS:-  GS;-  n0 nURw                  5       (       a$   [        R                   " WRy                  SS95      nW(       a  WWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9SS9  U R-                  SSS05        g U R                  GS<:X  Ga-   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       n[/        UR                  GS=S5      5      R                  5       nUR                  GS>S 5      nGS?nU(       a  U0RW                  GS6W5      (       d  U R-                  SGSGS7Sy.5        g W(       a  WW;  a  U R-                  SGSGS@Sy.5        g [|        GS:-  GSA-  nURw                  5       (       a%  [        R                   " WRy                  S5      5      O0 nUR                  W/ 5      n[        U[.        5      (       a  W(       a  W/O/ nW(       aW  Wc'  WW;   a  W Vs/ s H  oW:w  d  M
  UPM     nnO4WW/-   nO-W(       a  WW;  a  WW/-   nOW Vs/ s H  oW:w  d  M
  UPM     nnW(       a  WWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9S5        U R-                  SSS05        g U R                  GSB:X  GaU   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       nG[        UR                  GSCS5      5      nU(       a  U0RW                  GS6W5      (       d  U R-                  SGSGS7Sy.5        g [|        GS:-  GSD-  nURw                  5       (       a%  [        R                   " WRy                  S5      5      O0 nW(       a  SWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9S5        U R-                  SSS05        g U R                  GSE:X  Ga   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       n[/        UR                  SS5      5      R                  5       nU(       a  U0RW                  GSFW5      (       d  U R-                  SGSGS7Sy.5        g W(       a  WGSG;  a  U R-                  SGSGSHSy.5        g [|        GSI-  GS;-  n0 nURw                  5       (       a#  [        R                   " WRy                  SS95      nW(       a  WWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9SS9  U R-                  SSS05        g U R                  GSJ:X  Ga-   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       n[/        UR                  GS=S5      5      R                  5       nUR                  GS>S 5      nGSKnU(       a  U0RW                  GSFW5      (       d  U R-                  SGSGS7Sy.5        g W(       a  WW;  a  U R-                  SGSGS@Sy.5        g [|        GSI-  GSA-  nURw                  5       (       a%  [        R                   " WRy                  S5      5      O0 nUR                  W/ 5      n[        U[.        5      (       a  W(       a  W/O/ nW(       aW  Wc'  WW;   a  W Vs/ s H  oW:w  d  M
  UPM     nnO4WW/-   nO-W(       a  WW;  a  WW/-   nOW Vs/ s H  oW:w  d  M
  UPM     nnW(       a  WWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9S5        U R-                  SSS05        g U R                  GSL:X  GaU   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       nG[        UR                  GSCS5      5      nU(       a  U0RW                  GSFW5      (       d  U R-                  SGSGS7Sy.5        g [|        GSI-  GSD-  nURw                  5       (       a%  [        R                   " WRy                  S5      5      O0 nW(       a  SWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9S5        U R-                  SSS05        g U R                  GSM:X  Ga   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       n[/        UR                  SS5      5      R                  5       nU(       a  U0RW                  GSNW5      (       d  U R-                  SGSGS7Sy.5        g W(       a  WGSO;  a  U R-                  SGSGSPSy.5        g [|        GSQ-  GS;-  n0 nURw                  5       (       a#  [        R                   " WRy                  SS95      nW(       a  WWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9SS9  U R-                  SSS05        g U R                  GSR:X  Ga   S	S K(GmS	S K=nX[|        GSQ-  GS;-  n0 nURw                  5       (       a#  [        R                   " WRy                  SS95      n[        WGR+                  5        VVs/ s H  u  nnUGSS:X  d  M  WPM     snn5      Gn GU (       d  U R-                  SSGSTSy.5        g WXR                  SGSSGSU9GnGW  HN  Gn[|        GSQ-  GU GSV3-  nURw                  5       (       d  M-  GWR                  GSW[/        W5       GSX35        MP     GWGR-                  5         [|        GSY-  GSZ-  n
GTR[                  GS[GS\GS]GS^GS_GS`GSaGUR                  GSbGScGSdGSe[/        U
5      /SGS9  S	S KCGnGUR                  GUR                  5        U R-                  SS[        GW 5      [/        U
5      GSf.5        g U R                  GSg:X  Ga   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       n[/        UR                  SS5      5      R                  5       nU(       a  U0RW                  GSNW5      (       d  U R-                  SGSGS7Sy.5        g W(       a  WGSO;  a  U R-                  SGSGSPSy.5        g [|        GSh-  GS;-  n0 nURw                  5       (       a#  [        R                   " WRy                  SS95      nW(       a  WWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9SS9  U R-                  SSS05        g U R                  GSi:X  Ga/   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       n[/        UR                  GS=S5      5      R                  5       nUR                  GS>S 5      nGSjGnU(       a  U0RW                  GSNW5      (       d  U R-                  SGSGS7Sy.5        g W(       a  WGW;  a  U R-                  SGSGS@Sy.5        g [|        GSh-  GSA-  nURw                  5       (       a%  [        R                   " WRy                  S5      5      O0 nUR                  W/ 5      n[        U[.        5      (       a  W(       a  W/O/ nW(       aW  Wc'  WW;   a  W Vs/ s H  oW:w  d  M
  UPM     nnO4WW/-   nO-W(       a  WW;  a  WW/-   nOW Vs/ s H  oW:w  d  M
  UPM     nnW(       a  WWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9S5        U R-                  SSS05        g U R                  GSk:X  GaU   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       nG[        UR                  GSCS5      5      nU(       a  U0RW                  GSNW5      (       d  U R-                  SGSGS7Sy.5        g [|        GSh-  GSD-  nURw                  5       (       a%  [        R                   " WRy                  S5      5      O0 nW(       a  SWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9S5        U R-                  SSS05        g U R                  GSl:X  Ga   S	S K(GmS	S K=nX[|        GSh-  GS;-  n0 nURw                  5       (       a#  [        R                   " WRy                  SS95      n[        WGR+                  5        VVs/ s H  u  nnUGSS:X  d  M  WPM     snn5      Gn GU (       d  U R-                  SSGSTSy.5        g WXR                  SGSSGSU9GnGW  HN  Gn[|        GSh-  GU GSV3-  nURw                  5       (       d  M-  GWR                  GSW[/        W5       GSX35        MP     GWGR-                  5         [|        GSY-  GSm-  n
U
RN                  R                  SSS9  GTR[                  GS[GS\GS]GS^GS_GS`GSaGUR                  GSbGScGSdGSe[/        U
5      /SGS9  S	S KCGnGUR                  GUR                  5        U R-                  SS[        GW 5      [/        U
5      GSf.5        g U R                  GSn:X  Ga   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS4S5      5      R                  5       n[/        UR                  SS5      5      R                  5       nU(       a  U0RW                  GSoW5      (       d  U R-                  SGSGS7Sy.5        g W(       a  WGSO;  a  U R-                  SGSGSPSy.5        g [|        GSp-  GS;-  n0 nURw                  5       (       a#  [        R                   " WRy                  SS95      nW(       a  WWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9SS9  U R-                  SSS05        g U R                  GSq:X  Ga   S	S K(GmS	S K=nX[|        GSp-  GS;-  n0 nURw                  5       (       a#  [        R                   " WRy                  SS95      n[        WGR+                  5        VVs/ s H  u  nnUGSS:X  d  M  WPM     snn5      Gn GU (       d  U R-                  SSGSTSy.5        g WXR                  SGSSGSU9GnGW  HN  Gn[|        GSp-  GU GSV3-  nURw                  5       (       d  M-  GWR                  GSW[/        W5       GSX35        MP     GWGR-                  5         [|        GSr-  GSZ-  n
GTR[                  GS[GS\GS]GS^GS_GS`GSaGUR                  GSbGScGSdGSe[/        U
5      /SGS9  S	S KCGnGUR                  GUR                  5        U R-                  SS[        GW 5      [/        U
5      GSf.5        g U R                  GSs:X  Gaz   S	S KGn[|        GS:-  GS;-  n0 nURw                  5       (       a$   [        R                   " WRy                  SS95      n[|        GS:-  GSt-  GSu-  Gn[|        GS:-  GSt-  GSv-  GnGUR                  SSS9  GUR                  SSS9  S	GnS	Gn	WGR+                  5        H  u  nn[|        GS:-  U GSV3-  Gn
GU
Rw                  5       (       d  M0  WGSu:X  a8  GWGR1                  [/        GW
5      [/        GWW GSV3-  5      5        GWS&-  GnMo  WGSv:X  d  Mx  GWGR1                  [/        GW
5      [/        GWW GSV3-  5      5        GW	S&-  Gn	M     U R-                  SSGWGW	GSw.5        g U R                  GSx:X  Ga   S	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GSyS5      5      R                  5       Gn[/        UR                  GS4S5      5      R                  5       n[/        UR                  SS5      5      R                  5       nGU(       a  U0RW                  GSzGW5      (       d  U R-                  SGSGS{Sy.5        g W(       a  U0RW                  GSzW5      (       d  U R-                  SGSGS7Sy.5        g W(       a  WGSO;  a  U R-                  SGSGS|Sy.5        g [|        GW GS}3-  GnGUR                  SSS9  GUGS;-  n0 nURw                  5       (       a#  [        R                   " WRy                  SS95      nW(       a  WWW'   OWGR)                  WS 5        WR)                  [        R*                  " WSSS9SS9  U R-                  SSS05        g U R                  GS~:X  Gag   S	S K(GmS	S K=nXS	S Kn0U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GSyS5      5      R                  5       GnGU(       a  U0RW                  GSzGW5      (       d  U R-                  SGSGS{Sy.5        g [|        GW GS}3-  GnGUGS;-  n0 nURw                  5       (       a#  [        R                   " WRy                  SS95      n[        WGR+                  5        VVs/ s H  u  nnUGSS:X  d  M  WPM     snn5      Gn GU (       d  U R-                  SSGSTSy.5        g WXR                  SGSSGSU9GnGW  HG  GnGWGU GSV3-  nURw                  5       (       d  M&  GWR                  GSW[/        W5       GSX35        MI     GWGR-                  5         [|        GW-  nUUUR                  SSS9  UUGSZ-  n
GTR[                  GS[GS\GS]GS^GS_GS`GSaGUR                  GSbGScGSdGSe[/        U
5      /SGS9  S	S KCGnGUR                  GUR                  5        U R-                  SS[        GW 5      [/        U
5      GSf.5        g U R                  GS:X  a[   [        R                   " U5      n[&        GS-  n
U
R)                  [        R*                  " USSS95        U R-                  SSS05        g U R                  GS:X  a   U(       a  [        R                   " U5      O0 n[K        [L        5      RN                  RN                  GS-  Gn[        R*                  " USGS9n[        GUSSS9 nbUbR                  US-   5        S S S 5        U R-                  SSS05        g U R                  GS:X  az   [        R                   " U5      n[K        [L        5      RN                  GS-  GnGUR)                  [        R*                  " USSS9SS9  U R-                  SS[/        GU5      S.5        g U R                  GS:X  a   [        R                   " U5      nUR                  GSS5      GnGU(       d  U R-                  SGSGSSy.5        g GWRA                  GSS5      RA                  SS5      RA                  GSS5      GnG[2        GU GS3-  nUR)                  [        R*                  " USSS9SS9  U R-                  SSS05        g U R                  GS:X  GaI   [        R                   " U5      nUR                  GSS5      GnUR                  GSS5      GnUR                  GSS5      nGU(       a  W(       d  U R-                  SGSGSSy.5        g [        GS GW 5       5      (       d  U R-                  SGSGSSy.5        g [P        RZ                  " GSGSGSGW/SGS9  [P        RZ                  " GSGSGSGUGSGW=(       d    GWGSW/SSGS9nUR`                  S	:X  a  U R-                  SSS05        g U R-                  SSURb                  R                  5       Sy.5        g U R                  GS:X  Ga   S	S KJGn  [        R                   " U5      nUR                  GSS5      R                  5       R                  5       GnUR                  GSGS5      R                  5       GnGU(       a(  GWRA                  GS#S5      GR5                  5       (       d  U R-                  SGSGSSy.5        g [P        GR6                  " / GSQS[P        RT                  GS9R                  5       nU(       d  U R-                  SSGSSy.5        g GSGnGSGnGSGnGW GSGU 3GnGSW 3S2GS.GnGWR7                  GSGU 3GUGS9nGUR;                  UGSS79 Gn[        R                   " GUR                  5       5      GnS S S 5        GWR                  GS5      (       a  GWR                  GS5      (       d  U R-                  SSGSSy.5        g GWGS   S	   S   GnGSGW GSGW GS3GnGWR7                  GUGWGS9nGUR;                  UGSS79 Gn[        R                   " GUR                  5       5      GnS S S 5        GWR                  GS5      (       d  U R-                  SSGSSy.5        g GWR                  GS0 5      R                  GS0 5      R                  GS/ 5      GnGU Vs/ s H  nUR                  GS5      (       a  M  UPM      Gn nGW Vs/ s H+  nUR                  GS5      (       d  M  UGS   GW:w  d  M)  UPM-     Gn!nGU!GR9                  S	GWGWGS.5        GU!GR;                  GW 5        [        R*                  " GSGSGU!005      R9                  5       Gn"GWR7                  GWGU"GWGSGS9nGUR;                  UGSS79 Gn[        R                   " GUR                  5       5      Gn#S S S 5        GW#R                  GS5      (       dI  GW#R                  GS/ 5      Gn$U R-                  SSGU$(       a  GW$S	   R                  S5      OGSSy.5        g [        R*                  " GSGWGW GS3SS&GS.5      R9                  5       Gn%GSGW GS3Gn&GWR7                  GU&GU%GWGSGS9n GUR;                  UGSS79 Gn[        R                   " GUR                  5       5      Gn'S S S 5        GW'R                  GSS5      Gn(U R-                  SSGWGW(GS.5        g U R                  GS:X  Ga   S	S KGn*S	S KGn+U(       a%  [        R                   " UR                  S5      5      O0 nUR                  GS5      =(       d    UGn,G[A        GU,R                  S5      =(       d=    UR                  GS+5      =(       d$    GS[        R                  " 5       GR                   35      nTG[C        UT5      Gn-GU-GS-  Gn.GU.R                  SSS9  UR                  GS5      =(       d    UR                  GS5      =(       d    Sn'U'(       d  U R-                  SGSGSSy.5        g GW*GRE                  U'5      Gn/GW.GS-  Gn0GU0R                  GU/5        UR                  GS5      =(       d    UR                  GS5      =(       d    SGn1GU1(       d  GSGn1GW-GS-  Gn2GU2R)                  GW1SS9  GW.GS-  Gn3G[G        GW0GU35        G[I        WTGW,GU0GU25      Gn4[        GW+R=                  5       S-  5      Gn5SUTGU5GU5GSS0 GU,EGU4GS   [/        GU05      [/        GU25      GU4GS   GS.EGU4GS   GU4GS   [/        GU05      [/        GU35      [/        GU25      GS.GS.
nG[K        G[M        UT5      U5        U R-                  S0 G[O        UTU5      EGSGSUT GS30E5        g U R                  GS:X  Ga   [        R                   " U5      n[/        UR                  SwS5      5      R                  5       n,G[Q        UR                  GSS	5      5      Gn6G[Q        UR                  GSS	5      5      Gn7[/        UR                  GSS5      5      R                  5       Gn8U,(       d,  GW8(       a$  GW8R                  GS5      S	   R                  5       n,U,(       d  GSn,GW6S	:X  d  GW7S	:X  a  U R-                  SGSGSSy.5        g [/        [        R                  " 5       5      S S nTG[R           GSGSGSU,GW6GW7GW8S S / GS.
G[T        UT'   S S S 5        G[V           G[X        R                  WT5        S S S 5        U R-                  SSWTGS.5        g U R                  GS:X  Ga	   [        R                   " U5      nUR                  GSS5      nUR                  GS0 5      Gn9U(       a  GW9(       a  G[2        R                  SSS9  G[2        [K        W5      GRZ                  GS-   -  Gn:S	S KDGn;GU:R)                  [        R*                  " UGW9GU;R                  R                  5       R                  5       GS.SSS95        U R-                  SSS05        g U R-                  SGSGSSy.5        g U R                  GS:X  a   S	S KDGn<[        R                   " U5      n[K        [&        5      GS-  n
GU<R                  R                  5       R                  5       US='   U
R)                  [        R*                  " USSS9SS9  UR                  GS5      (       a:   S	GSKJGn=  UR                  GSS5      Gn>GSGU> GSUS=    3Gn?GU=" GSGSGU?5        U R-                  SSS05        g U R                  GS:X  a   G[`           G[b        R                  S5      GS:X  a!  U R-                  SSGSGS.5         S S S 5        g GSG[b        S'   GSG[b        GS'   SG[b        GS'   SG[b        S'   S S S 5        [        R                  " G[d        [&        4SGS9nWUWR                  5         U R-                  SSGSGS.5        g U R                  GS:X  a   U(       a  [        R                   " U5      O0 n[K        [&        5      GS-  n
S	S KDGnAGUAR                  R                  5       R                  5       US='   [        U
SSS9 nbUbR                  [        R*                  " USGS9S-   5        S S S 5        U R-                  SSS05        g U R                  GS:X  Ga   U(       a  [        R                   " U5      O0 nUR                  GSS5      GnBG[f           G[h        R                  S5      GS:X  a!  U R-                  SSGSGS.5         S S S 5        g GSG[h        S'   GSG[h        GS'   SG[h        GS'   SG[h        S'   GWBG[h        GS'   S S S 5        [        R                  " G[j        [&        GWB4SGS9nWUWR                  5         U R-                  SSGSGS.5        g U R                  GS:X  aq   [        GRl                  " 5       GnC[P        RR                  " GSGSGSGSGUC GS3/[P        RT                  [P        RT                  GS9  U R-                  SSGSGS.5        g U R                  GS:X  Ga   S	S KGnDS	S KGnEU(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GSS5      5      R                  5       GnF[        UR                  GSGS5      5      GnG[/        UR                  S.S5      5      R                  5       GnH[/        UR                  GSS5      5      R                  5       GnI[/        UR                  GSS5      5      R                  5       =(       d    SGnJGWF(       a  GWH(       a  GWI(       d  U R-                  SGSGSSy.5        g GWERK                  [&        5      GS-  GUERK                  [&        5      GS-  /GnKGUK Vbs/ s H%  nbUbRw                  5       (       a  M  [/        Wb5      PM'     GnLnbGUL(       a  U R-                  GSSGSGWL 3Sy.5        g GWDGRs                  5       GnMGUMGRu                  GUDGRw                  5       5        GUMGRy                  GWFGWGGWHGWIGSGS 9  GUMGR{                  5       GnN GUNGR}                  GWJ5        / GnPGWK HF  nbGWNGR                  [/        Ub5      UbR                  5        GWPR                  UbR                  5        MH     GWNGR-                  5         GWMGR-                  5         U R-                  SSGWPGS.5        g U R                  GS:X  a   U(       a%  [        R                   " UR                  S5      5      O0 n[&        RN                  GS-  GnQS	S KnUR                  GS0 5      UR                  GS0 5      [        UR=                  5       S-  5      GS.nGUQR)                  [        R*                  " USSS9SS9  U R-                  SSS05        g U R                  GS	:X  a   U(       a%  [        R                   " UR                  S5      5      O0 nUR                  GSvS5      GnRS	S KGnS[&        GS
-  GnTGUTR)                  [        R*                  " GUR[        GUSR=                  5       S-  5      GS.SGS95        U R-                  SSGURGS.5        g U R                  GS:X  Ga    U(       a%  [        R                   " UR                  S5      5      O0 nU GR                  5       (       d  U R-                  GSSGSSy.5        g UR                  GSvS5      GnRS	S KGnS[&        GS
-  GnT[        GUSR=                  5       S-  5      GnUGUTR)                  [        R*                  " GURGUUGSGS.SGS95        GURGS;   Ga  GSGWR-   GURGWU[        GWSR=                  5       5      GSGS.GnV G[        Rw                  5       (       a  G[        Ry                  SS9GnW[        GR                  " 5       GR                  GUW5      u  GnXGnYGS H&  GnZGUZGWX;   d  M  GWXR                  GWZ5      GWVGUZ'   M(     GWXR                  GS5      GWVGS'   G[        R                  SSS9 nbUbR                  [        R*                  " GWVSGS9S-   5        S S S 5        U R-                  SSGWRGS.5        g U R                  GS:X  Ga   U GR                  5       (       d  U R-                  GSSGSSy.5        g U(       a%  [        R                   " UR                  S5      5      O0 nG[Q        UR                  GS5      5      Gn6G[Q        UR                  GS5      5      Gn7S	S KGnSGSGSGSS[        GUSR=                  5       5      GU6GU7UR                  GS5      UR                  GS5      UR                  GS5      UR                  S5      =(       d    GS[        GWSR=                  5       S-  5      GSGW6 GSGW7 3GS.nHG[        R?                  S>5      Gn[GU[R)                  [        R*                  " UHSSS9SS9  GU[RA                  G[        5        0 UHEUHGS    GS!GS".EGn\G[        R                  SSS9 nbUbR                  [        R*                  " GU\SGS9S-   5        S S S 5        U R-                  SSWHGS#.5        g U R                  GS$:X  Ga,   U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  SS5      5      R                  5       Gn][/        UR                  GS-S5      5      R                  5       Gn^GU](       d  U R-                  SGSSSy.5        g 0 nBG[        Rw                  5       (       a)   [        R                   " G[        Ry                  SS95      nBGW^WBGW]'   G[        R)                  [        R*                  " UBSSS9SS9  U R-                  SSS05        g U R                  GS%:X  Ga    U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  SS5      5      R                  5       Gn]GU](       d  U R-                  SGSSSy.5        g 0 nBG[        Rw                  5       (       a)   [        R                   " G[        Ry                  SS95      nBUWBGW]'   G[        R)                  [        R*                  " UBSSS9SS9  U R-                  SSS05        g U R                  GS&:X  a   U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GSS5      5      R                  5       nU(       d  U R-                  SGSGS'Sy.5        g G[        W5        U R-                  SSS05        g U R                  GS(:X  Ga(   U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  SS5      5      R                  5       nSG[        UR                  GS)S5      5      Gn_US(       d  U R-                  SGSGS*Sy.5        g S	S KVGn`S	S KYGna[/        GU`R                  5       5      S S GnbG[           GUbWSGSSGS+.G[        GUb'   S S S 5        GWaR                  G[        GWbWSGW_G[        4SGS9R                  5         U R-                  SSGUbGS.5        g U R                  GS,:X  Ga   S	S KJGnc  S	S KJGnd  U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GS-S5      5      R                  5       GneGUe(       d  U R-                  SGSGS.Sy.5        g GS/GWeG[        GS0GS1.GnfG[         GS2GWdGR                  GUf5       3nSGWcR;                  USGSS79 n[        R                   " UR                  5       5      nS S S 5        U R-                  SSWGS3.5        g U R                  GS4:X  Ga   U(       a%  [        R                   " UR                  S5      5      O0 nUR                  GS55      (       aP  G[        RN                  R                  SSS9  G[        R)                  [        R*                  " GS6UGS5   05      5        UR                  GS75      (       Ga:  UR                  GS85      (       Ga"  S	S KJn  S	S KGngS	S K(nS	S Kn[K        GS95      Gnh UR;                  G[         GS:G[         GS;3SS79  GUgGR                  S5        UGS7   GnFGS<GUF GS=GUF GS>UR                  GS?GS@5       GSAUR                  GSBS5       GSCUR                  GS8S5       GSDGUF S3GniGWhRy                  5       ntGSEUt;   a/  WR%                  GSFGWiR                  5       WtUGR                  GSG9ntOWtGWi-  ntGWhR)                  Wt5        WRS                  GSH/5        U R-                  SSS05        g U R                  GSI:X  Ga   S	S KVGnjS	S KYGnkU(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GSJS5      5      R                  5       GnlGUl(       d  U R-                  SGSGSKSy.5        g [/        GWjR                  5       5      S S GnbG[           GUbGWlGSSGSL.G[        GUb'   S S S 5        GWkR                  G[        GWbGWl4SGS9R                  5         U R-                  SSGUbGS.5        g U R                  GSM:X  Ga   U(       a%  [        R                   " UR                  S5      5      O0 n[/        UR                  GSNS5      5      R                  5       Gnm[/        UR                  GSOS5      5      R                  5       Gnn[/        UR                  GSPS5      5      R                  5       GnoGUm(       d  GWn(       d  U R-                  SGSGSQSy.5        g GWo(       d  U R-                  SGSGSRSy.5        g G[        5       (       d  U R-                  SGSGSSSy.5        g [/        [        R                  " 5       5      S S nTGWm=(       d    GWnS S GS(-   GnpG[           WTGSGUpGWo/ GSS GST.G[        UT'   S S S 5        [        R                  " G[        WTGWmGWoGWn4SGSUUT 3GS(9R                  5         U R-                  SSUTGS.5        g U R                  RI                  GSV5      (       a  U R                  [        GSV5      S  R                  S5      nTG[           UTG[        ;   a=  GSWG[        WT   S'   G[        R)                  [        R*                  " G[        SSS95        S S S 5        U R-                  SSS05        g U R                  GSX:X  a   [&        GSY-  GnqGUqRw                  5       (       d  U R-                  GSSGSZSy.5        g [P        RR                  " G[        GR                  [/        GWq5      /[P        R^                  [P        GR                  [/        [&        5      GS[9GnrGUrGR                  GSS79u  n
GnYU
R                  SSS9GnPGUrR`                  S	:H  GnsU R-                  SGUsGUPGS\S  GUrR`                  GS].5        g U R                  GS`:X  a  [&        GSa-  GntGUtGSb-  GnuGUuRw                  5       (       aj  [        R                   " GWuRy                  5       5      n[i        GSc URm                  5        5       5      GnvU R-                  SSGUv[        U5      UGSd.5        g U R-                  SSS	S	0 GSd.5        g U R                  GSe:X  Ga:   [        R                   " U5      nS	S K(GmS	S KGnwGUwGR                  GSf5      =(       d    GSgGnx[/        [&        RN                  GSh-  GSi-  5      GnqGTR[                  GUxGUq[        R*                  " U5      /SSSm0 G[        GSj5      R                  ESGSk0EGSl9GnrGUrR`                  S	:w  d   GWrR                  R                  5       (       d*  U R-                  SSGWrRb                  =(       d    GSm05        g U R-                  S[        R                   " GWrR                  5      5        g U R                  GSn:X  a   U(       a  [        R                   " U5      O0 GnyGUyR                  GSo/ 5      Gnz[|        GSp-  Gn{GU{R)                  [        R*                  " GUzSSS95        U R-                  SS[        GUz5      GSq.5        g U R                  GSr:X  Ga`   U(       a  [        R                   " U5      O0 Gny[/        GUyR                  GSS5      5      R                  5       Gn|[|        GSs-  Gn{GU{Rw                  5       (       a$  [        R                   " GW{Ry                  SS95      O0 Gn}GStGWy;   aK  [        GWyGSt   [        5      (       a  GWyGSt   O/ Gn~GU~(       a	  GW~GW}GW|'   OhGW}GR)                  GW|S 5        OR[/        GWyR                  SS5      5      R                  5       GnGU(       a
  GW/GW}GW|'   OGW}GR)                  GW|S 5        GW{R)                  [        R*                  " GW}SSS95        [|        GSp-  GnGURw                  5       (       a$  [        R                   " GWRy                  SS95      O/ GnGW}R                  GW|/ 5      Gn[        GU[        5      (       a  GWOGW/GnGSuGU;   a  GW|GW;  a  GWR                  GW|5        O$GSuGW;  a  GW|GW;   a  GWGR                  GW|5        GWR)                  [        R*                  " GWSSS95        U R-                  SSS05        g U R                  GSv:X  Ga3  S	S KJGn   [|        GSp-  GnGURw                  5       (       a$  [        R                   " GWRy                  SS95      O/ GnSGn G[        Ry                  SS9GR                  5        HV  GnGUR                  5       GnGURI                  GS5      (       d  M0  GWR                  GSS&5      S&   R                  5       GnMX     GW(       d7  [P        RZ                  " / GSwQSSGS9GnGUR                  R                  5       Gn/ Gn/ GnGW HI  Gn GWR7                  GSxGU 3GSyGW0GSzGS{9GnGUR;                  GUGSS79  GWR                  GU5        MK     GWR)                  [        R*                  " / SGS95        [|        GSs-  GnGURw                  5       (       al  [        R                   " GWRy                  SS95      Gn}GW H  GnGW}GR)                  GUS 5        M     GWR)                  [        R*                  " GW}SSS95        U R-                  SSGWGWGS}.5        g U R                  RI                  GS~5      (       Ga  S	S KYGnS	S KJGm   U R                  [        GS~5      S  R                  S5      GmSGm G[        Ry                  SS9GR                  5        HV  GnGUR                  5       GnGURI                  GS5      (       d  M0  GWR                  GSS&5      S&   R                  5       GmMX     GT(       d7  [P        RZ                  " / GSwQSSGS9GnGUR                  R                  5       Gm[|        GS-  GnGURw                  5       (       a$  [        R                   " GWRy                  SS95      O0 Gm[|        GS-  Gm/ GSQGmGSGS/GmGU4GS jGmGUGUGUGUGUGUGU4GS jGnGWR                  GUSGS9R                  5         U R-                  SSGTGSGS.5        g U R                  GS:X  Ga   S	S K(GnU(       a%  [        R                   " UR                  S5      5      O0 nUR                  GSS5      R                  5       GnZGUZ(       a  GWZRI                  GS5      (       d  U R-                  SGSGSSy.5        g [&        RN                  GS-  GS-  GnGUR)                  GWZSS9  GWR[                  GSGSGSGSGSGSGSGUZGS/	SGS9  S	S KGnGUGR                  GSf5      =(       d    GSgGn[&        RN                  GS-  GS-  Gn[        [/        [&        RN                  GS-  GS-  5      S5      GnGWRS                  GU[/        GU5      /[/        GURN                  5      GUGU0 G[        GSj5      R                  ESGSk0EGS9  U R-                  SSS05        g U R                  GS:X  Ga   S	S K(GnS	S KGnS	S KGnS	S KVGnU(       a%  [        R                   " UR                  S5      5      O0 nUR                  GSS5      R                  5       nUR                  GSS5      R                  5       Gn[K        GS5      GnGUU-  GnU(       a  GW(       d  U R-                  SGSGSSy.5        g GWRw                  5       (       d  U R-                  GSSGSW 3Sy.5        g GWGS;  a  U R-                  SGSGSGW 3Sy.5        g S	S KGnGUGR                  GSf5      =(       d    GSgGn[&        RN                  GS-  GS-  GnGWR=                  5       Gn0 G[        GSj5      R                  ESGSk0EGnGWR[                  GU[/        GU5      [/        GW5      GW/SSGSGU[/        [&        RN                  GS-  5      S9Gnr[        GUR=                  5       GU-
  S-  5      GnGUrR`                  S	:w  a   [        R                   " GWrR                  R                  5       5      GnGUR                  SGUrRb                  R                  5       GSS  =(       d    GS5      GnU R-                  SSGWSy.5        g [        R                   " GWrR                  R                  5       5      nU R-                  SSUGWGS.5        g U R                  GS:X  Ga   S	S KYGnU(       a%  [        R                   " UR                  S5      5      O0 nUR                  GSS5      nUR                  GSS5      GnU(       a  GW(       d  U R-                  SGSGSSy.5        g [&        RN                  GS-  GS-  Gn[/        GU5      GS-   Gn0 nBGURw                  5       (       a$  [        R                   " GWRy                  SS95      nBWWB;  a  0 WBW'   [        UR                  GSS	5      5      [/        UR                  GSS5      5      UR                  GSS5      GS.WBW   GW'   GWR)                  [        R*                  " UBSSS9SS9  U R-                  SSS05        g U R                  GS:X  GaU   S	S K(GmS	S KYGnS	S K=GnS	S KCGmU(       a%  [        R                   " UR                  S5      5      O0 nUR                  GS+S5      nTUT(       d  U R-                  SGSGSSy.5        g [&        RN                  GS-  GnGUGS-  WT S3-  GnGUGS-  UT S3-  GnGURw                  5       (       d  U R-                  GSSGSSy.5        g [        R                   " GWRy                  5       5      GnGWRw                  5       (       a%  [        R                   " GWRy                  5       5      O0 Gn/ GnGUR                  GS5      =(       d    GWR                  SbS5      GnGU(       a;  [K        GW5      Rw                  5       (       a  GWR                  [/        GW5      5        GWR                  GS/ 5      Gn[        GU[        5      (       a  [        GWRm                  5       5      Gn[        GWGS GS9 Hm  GnGU(       d  M  GWR                  GS5      (       d  M(  [K        GWGS   5      Rw                  5       (       d  MM  GWR                  [/        GWGS   5      5        Mo     GW(       d  U R-                  GSSGSSy.5        g GS GmSXR                  GU4GS jGW 5       5      GnGSGU GS3GnqGWR                  SGSSSGS9nCUCR                  GUq5        UCGR-                  5         [        GU5      GnGUGU4GS jGnGWR                  GUUCR                  4SGS9R                  5         U R-                  SSGUGSGS.5        g U R                  GS:X  Ga   S	S KVGnS	S KGnU R                   R                  GSFS5      GnS2GU;   Ga  S	S KGn[        R                   " UR                  S5      5      nUR                  GSGS5      nUR                  GSS5      GnGUGRE                  GU5      Gn[K        U5      GR                  R                  5       =(       d    GSn]GWR                  5       GR                  S GS GnC[J        R                  " 5       GS-  GnGUR                  SSS9  GUGUC U] 3-  nGUGR                  GW5         U]GS;   a  S	S K(GnWGR?                  GS5      GnGUR[                  GSGSGSGSGSGSGS[/        UG5      GS[/        GU5      /
SGS9nUR`                  S	:X  a)  GWRw                  5       (       a  WGR                  SGS9  GWnGOW]GS;   a  S	GSKJGnJGn  GUR                  WG5       GnGUGR                  GU5      Gn0 GnW]GS;   a0  GSSGS.GnGWGR                  GS:w  a  GWGR                  GS5      GnGWGR                  " WG40 GWD6  S S S 5        O S	S KGnG[        WG5      GnG[           G[        5       GnGUGU;   a8  GWGW   nBWGR                  SGS9  U R-                  SSWBGS   UBGS   SGS.5        OeGWS S
 Gn[/        WG5      GUW[        GWR=                  5       5      GS.GWGU'   G[        GU5        U R-                  SS[/        UG5      GUSGS.5        S S S 5        g GWR                  GSGW5      GnGSGU;  d  GW(       d  U R-                  SGSGSSy.5        g GWGR                  S&5      R                  GSH5      R9                  5       nS GnGSnUR                  GSU-   5       H  nGSKU;  a  M  WR                  GSKS&5      u  GnntUtGR                  GS5      (       a  WtS GS ntGSGW;   d  MK  GWR                  GSGW5      GnGU(       a!  GWGR                  S&5      R                  SSS9nWtGn  O   GWc  U R-                  SGSGSSy.5        g [K        W5      GR                  R                  5       =(       d    GSn]GWR                  5       GR                  S GS GnC[J        R                  " 5       GS-  GnGUR                  SSS9  GUGUC U] 3-  nGUGR                  GW5         U]GS;   a  S	S K(GnWGR?                  GS5      GnGUR[                  GSGSGSGSGSGSGS[/        UG5      GS[/        GU5      /
SGS9nUR`                  S	:X  a)  GWRw                  5       (       a  WGR                  SGS9  GWnGOW]GS;   a  S	GSKJGnJGn  GUR                  WG5       GnGUGR                  GU5      Gn0 GnW]GS;   a0  GSSGS.GnGWGR                  GS:w  a  GWGR                  GS5      GnGWGR                  " WG40 GWD6  S S S 5        O S	S KGnG[        WG5      GnG[           G[        5       GnGUGU;   a8  GWGW   nBWGR                  SGS9  U R-                  SSWBGS   UBGS   SGS.5        OeGWS S
 Gn[/        WG5      GUW[        GWR=                  5       5      GS.GWGU'   G[        GU5        U R-                  SS[/        UG5      GUSGS.5        S S S 5        g U R                  GS:X  GaX   S	S KGnS	S KVGnU(       a%  [        R                   " UR                  S5      5      O0 n[        GWR=                  5       5       SGWR                  5       GR                  S SN  3nT[        GUR=                  5       S-  5      GnG[        U5      GnG[        UGU5      u  GnGnGU(       d  U R-                  SGSGWGWGS.5        g G[        GW5      u  GnGnG[        UWTGWGU5      GnG[K        GUUT S3-  GUGU[/        GU5      GS.5        G[K        GUUT S3-  GU5        U R-                  SSUTGU[/        GU5      SGS.5        g U R                  GS:X  Ga   S	S KGnS	S KVGnU(       a%  [        R                   " UR                  S5      5      O0 nGS[        GWR=                  5       5       SGWR                  5       GR                  S SN  3nT[&        RN                  GS-  GnGUGS-  GnGUR                  SSS9  [        GUR=                  5       S-  5      GnUR                  GS5      Gn[        GU[        5      (       a  GWOS Gn0 SWT_GSGS_GSGS_GSUR                  GSGS5      _GSGS_SbUR                  SbS5      _GSUR                  GSS5      _GSUR                  GSS5      _GSUR                  GSGS5      _GS[        UR                  GSS&5      5      _GSUR                  GSS5      _GSUR                  GSGS5      _GSUR                  GSGS5      _GSUR                  GS[/        [J        R                  " 5       GS-  GS-  5      5      _GSUR                  GSS5      _GSUR                  GSS5      _SUR                  SGS5      _GWGSGS.EGR+                  5        VVs0 s H  u  nnU(       d  M  WW_M     GnnnGWb  GWGWGS'   UR                  GS5      =(       d    S GWGS'   GWGS-  GnGUR                  SSS9  GUWT S3-  R)                  [        R*                  " GWGSGSGS.SSS9SS9  GWUT S3-  R)                  [        R*                  " GUSSS9SS9   S	S K(GnS	S KGnGUGS-  GnGURS                  GUGR                  [/        GU5      GS /GURT                  GURT                  GS9  U R-                  SSWTGSGS.5        g U R                  RI                  GS5      (       Ga   S	S KGnU R                  [        GS5      S  R                  S5      nTUTRI                  GS5      (       d  U R-                  SGSGSSy.5        g [&        RN                  GS-  GnGUGS-  WT S3-  GnGUGS-  UT S3-  GnGURw                  5       (       d  U R-                  GSSGSSy.5        g [        R                   " GWRy                  SS95      GnU(       a%  [        R                   " UR                  S5      5      O0 nSGWGS'   [        GWR=                  5       S-  5      GUGS'   UR                  GS5      =(       d    GS	GWGS'   GWR)                  [        R*                  " GUSSS9SS9  0 GnGWRw                  5       (       a%  [        R                   " GWRy                  SS95      GnGWR                  GS
GSGWGS   GS.5        GWRN                  R                  SSS9  GUR)                  [        R*                  " GUSSS9SS9   S	S K(GnS	S KGnGWGS-  GnGURS                  GUGR                  [/        GU5      GS /GURT                  GURT                  GS9  U R-                  SSWTGS
GS.5        g U R                  RI                  GS5      (       Ga   U R                  [        GS5      S  R                  S5      nT[&        RN                  GS-  GnUTRI                  GS5      GnGUGU(       a  GSOGS-  WT S3-  GnGWGW(       a  GSOGS-  WT S3-  GnGURw                  5       (       a   [        R                   " GWRy                  5       5      GnGUR                  GS5      (       dH  GWR                  GS5      (       d0  GWR                  GS5      (       d  GWR                  GS5      (       a  U R-                  GSSGSSy.5        g  / GnGWRw                  5       (       a$  GWR                  5         GWR                  GS5        GWRw                  5       (       a$  GWR                  5         GWR                  GS5        GW(       d  U R-                  GSSGSSy.5        g U R-                  SSGWGS.5        g U R                  GS:X  a   S	S K(GmU(       a%  [        R                   " UR                  S5      5      O0 nUR                  GSS5      GnoGSGn[/        [K        GUo5      GR                  5       5      GnGUo(       ab  GWRI                  GW5      (       aJ  [K        GWo5      Rw                  5       (       a+  GTRS                  GSGWo/5        U R-                  SSS05        g U R-                  SGSGSSy.5        g U R                  GS:X  a   U(       a%  [        R                   " UR                  S5      5      O0 n[&        RN                  GS-  GS-  GnGUR)                  [        R*                  " USGS9SS9  U R-                  SSS05        g U R                  GS:X  Ga   G[        U R                   5      (       d  U R-                  GSSGSSy.5        g [        U5      G[        :  a$  U R-                  SGSGSG[        S-   GS 3Sy.5        g G[        5       u  GnGnGU(       d"  U R-                  GS!SGS"G[         GS#3Sy.5        g S	S KVGn`U(       a%  [        R                   " UR                  S5      5      O0 n/ GS$QGnGU Vbs/ s H  nbUR                  Ub5      (       a  M  WbPM     GnLnbGUL(       a*  U R-                  SGSGS%SXR                  GWL5       3Sy.5        g UR                  GS&5      GS';  a  U R-                  SGSGS(Sy.5        g [/        UR                  GS)S5      5      GnG[         HD  GnGUR                  5       GWR                  5       ;   d  M*  U R-                  SGSGS*GW 3Sy.5          g    S	S KDGn;UR                  S5      =(       dN    GW;R                  R                  5       R                  GS"5       GS#GW`R                  5       GR                  S SN  3nmUmUR                  GS+GS5      UGS&   [/        US   5      S S GWS G[         UR                  SGS,5      UR                  GS/GW;R                  GR                  5       R                  5       GS--   5      GU;R                  GR                  5       R                  5       GS--   S	GS..	Gn[&        RN                  GS-  GnGUR                  SS9  GU;R                  R                  5       R                  GS"5       SUm S3nGUU-  R)                  [        R*                  " GUSSS9SS9  G[        5         U R-                  SSUmUGSGS/.5        g U R                  GS0:X  Ga   S	S K=nXS	S KpGnU R                   R                  GSFS5      n[K        [L        5      RN                  RN                  GS1-  GS2-  GnGUR                  SSS9  S nUR                  S5       HN  nUR                  5       nURI                  GSG5      (       d  M,  WGS3S  R                  5       R9                  5       n  O   W(       d  U R-                  SGSGS4Sy.5        g UR                  GS5      GnS nS GnSGn/ Gn[        GU5       H  u  nnWU;   a?  GW(       a/  GSR                  GW(       a  GWGS_   (       d  GWS GS_ OGW5      Gn/ GnSGnMK  GS5W;   aF  ["        R                  " GSW5      n%U%(       a%  U%GR                  S&5      R                  SSS9nSGnM  M  GS6W;   a
  GW(       a  M  GW(       a  WS:X  a
  GW(       d  M  GW(       d  M  GWR                  W5        M     GW(       a  GWc  GSR                  GW5      GnW(       a  GWc  U R-                  SGSGS7Sy.5        g ["        R$                  " GS8SW5      GnGWGU-  nUR                  GW5        U R-                  SS[/        U5      GUGS9.5        g U R                  GS::X  Ga   S	S KGnGUR                  GR9                  S	[/        [K        [L        5      RN                  RN                  5      5        S	GS;KJGn  U(       a  [        R                   " U5      O0 n[/        UR                  GSS5      5      R                  5       nG[        UR                  GS<S5      5      GnU(       d  U R-                  SGSGS=Sy.5        g GWGR                  WGWGS>9nU R-                  SU5        g U R                  GS?:X  a{   S	S KGnGUR                  GR9                  S	[/        [K        [L        5      RN                  RN                  5      5        S	GS;KJGn  GUGR                  5       nU R-                  SU5        g U R                  GS@:X  a{   S	S KGnGUR                  GR9                  S	[/        [K        [L        5      RN                  RN                  5      5        S	GS;KJGn  GUGR                  5       nU R-                  SU5        g U R                  GSA:X  a   U(       a  [        R                   " U5      O0 nUR                  GSB/ 5      Gn[        GU[        5      (       a  GW(       d  U R-                  SGSGSCSy.5        g G[        (       a  G[        GR                  " GW5      OS	GnU R-                  SSGUGSD.5        g U R                  GSE:X  a?   G[        (       a  G[        GR                  " 5       OS	GnU R-                  SSGUGSF.5        g U R                  GSG:X  a   U(       a  [        R                   " U5      O0 nG[        (       aE  G[
        GR                  " U5      GnU R-                  SSG[
        GR                  " 5       GSH.5        g U R-                  GSISGSJSy.5        g U R                  GSK:X  a?   G[        (       a  G[
        GR                  " 5       O0 GnU R-                  SSGUGSL.5        g U R                  GSM:X  a9  S	S KJn  S	S GK	GJ
Gn   UR;                  GSNSS79  U R-                  SSGSOGSP.5        g U R                  GSW:X  Ga'   U(       a  [        R                   " U5      O0 n[/        UR                  SS5      5      R                  5       n/[/        UR                  GSXS5      5      R                  5       =(       d    S GnU/(       d  U R-                  SGSGSYSy.5        g [K        [L        5      RN                  RN                  GSZ-  GS[-  GnGURw                  5       (       d  U R-                  GSISGS\Sy.5        g S	S K(GmS	S KGnGUGR                  [/        GW5      U//GmGW(       a  GTR                  GW5        GUGU4GS] jGmS	S GKGnGUGR                  5       GmGUGU4GS^ jGn[        R                  " GUSGS9nWUWR                  5         UWR                  SS79  UWGR                  5       (       d[  GTGR                  5       u  Gnsn
n1GUs(       a  U R-                  SSGS_GSP.5        g U R-                  SSU1S GS =(       d    GS`Sy.5        g U R-                  GSaSGSbGScGSd.5        g U R                  GSe:X  Ga   S	S K(nS	S KJGnc  S	S GK	GJ
Gn  U(       a  [        R                   " U5      O0 n[/        UR                  GSfS5      5      R                  5       Gn[/        UR                  GSgGSh5      5      GnGU(       d  U R-                  SGSGSiSy.5        g WGR7                  / GSQURT                  SGSj9R                  5       GnGU(       d  U R-                  GSISGSkSy.5        g [        R*                  " GS8GWGSlGWGSm./GSn.5      R9                  5       nGWcR7                  GSoUGSGW 3S2GS.GSGS9nGUcR;                  US6S79 Gn[        R                   " GUR                  5       5      nS S S 5        Sne/ GnWR                  GSp/ 5       Hz  Gn GU R                  GS&5      S:X  d  M  GW R                  S9/ 5       HF  GnGUR                  GS&5      GSq:X  d  M  GWR                  S:S5      neGUR                  GSr/ 5      GnMH     M|     UR                  GSs0 5      GnU R-                  SSWeGWS GS UR                  GSS5      UR                  SS5      GUR                  GStS	5      GUR                  GSuS	5      GSv.GSw.5        g U R                  GSx:X  Ga   S	S K(GnS	S KJn  U(       a  [        R                   " U5      O0 n[/        UR                  SS5      5      R                  5       n/[/        UR                  GSyS5      5      R                  5       =(       d    S Gn[/        UR                  GS9S5      5      R                  5       GnU/(       d  U R-                  SGSGSYSy.5        g GWGR7                  / GSQGURT                  SGSj9R                  5       GnGU(       d  U R-                  GSISGSkSy.5        g GS8U/GSz.GnGW(       a  GWGWGSy'   GW(       a  GWGWGS{'   [        R*                  " GW5      R9                  5       nWR7                  GSoUGSGW 3S2GS.GSGS9nUR;                  UGS|S79 Gn[        R                   " GUR                  5       5      nS S S 5        SneWR                  GSp/ 5       He  Gn GU R                  GS&5      S:X  d  M  GW R                  S9/ 5       H1  GnGUR                  GS&5      GSq:X  d  M  GWR                  S:S5      neM3     Mg     UR                  GSs0 5      GnUR                  SS5      GnG[        (       a  We(       a  S	S KGnGUR                  GR9                  S	[/        [K        [L        5      RN                  RN                  GSZ-  5      5        S	GS}GKGJGn	  GU	" U/SGS~GSGSGS0GS9Gn
GU	" WeGS~SGSGWGSU/S S GS.GS9GnG[        GR"                  " G[        GR$                  " 5       GU
5        G[        GR"                  " G[        GR$                  " 5       GU5        U R-                  SSWeGWUR                  GSS5      GWR                  GStS	5      GUR                  GSuS	5      GSv.G['        GUR                  GStS	5      GS-  GUR                  GSuS	5      GS-  -   SN5      GS.5        g U R-                  GSSGS05        g ! [         a     GM4  f = f! [         a'  nU R-                  SS[/        U5      05         S nAg S nAff = f! [         a'  nU R-                  SS[/        U5      05         S nAg S nAff = f! [         a'  nU R-                  SS[/        U5      05         S nAg S nAff = f! , (       d  f       GN= f! [         a'  nU R-                  SS[/        U5      05         S nAg S nAff = f! [         a'  nU R-                  SS[/        U5      05         S nAg S nAff = f! , (       d  f       GNp= f! [         a'  nU R-                  SS[/        U5      05         S nAg S nAff = fs  sn%f ! , (       d  f       GN= f! [         a'  nU R-                  SS[/        U5      05         S nAg S nAff = f! , (       d  f       GN= f! [         a	    SU*Sp.n+ GN{f = f! [         a'  nU R-                  SS[/        U5      05         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [P        Rd                   a    U R-                  SSSSy.5         g [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SGS[/        U5      Sy.5         S nAg S nAff = f!    GN= f! [         a  n>U R-                  SSS05         S n>A>g S n>A>ff = f! [         a    0 nB GN7f = f! , (       d  f       GN= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GN	= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [P        Rd                   a>    [J        R                  " 5       S-  nRU R-                  SURRw                  5       SS.5         g [         a+  nU R-                  SS[/        U5      S S Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a    Sn^ GNf = f! , (       d  f       GNo= f! , (       d  f       GN = f! [         a     g f = f!  [        R                  " WC5        f ! [         a     f f = f= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GN= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = fs  snnf ! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GN= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GN= f! , (       d  f       GNr= f! [         a     g f = f! [        R                  " W{5        f ! [         a     f f = f= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GN\= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a     GNf = fs  snf ! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a    Sn GNnf = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = fs  snnf ! [         a     GNf = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a*  nU R-                  SSS[/        U5      GS.5         S nAg S nAff = f! , (       d  f       GN= f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [P        Rd                   a    U R-                  SSGSSy.5         g [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GN= f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a   nU R-                  SSSGS.5         S nAg S nAff = f! [         a+  nU R-                  SS[/        U5      S S Sy.5         S nAg S nAff = f! [P        Rd                   a    U R-                  SSSSy.5         g [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a     GNf = f! , (       d  f       GN= f! [         a  n U GR                  S5        U GR                  GSFGS5        U GR                  5         U GR                  5         U GR                  R                  [        R*                  " S[/        U5      S GS Sy.5      R9                  5       5         S nAg ! [         a      S nAg f = fS nAff = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! , (       d  f       GN= f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a    0 n GNwf = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = fs  snf s  snf ! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a     GNf = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = fs  snf s  snf ! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a     GNf = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a     GNf = fs  snnf ! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a     GNf = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = fs  snf s  snf ! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a     G|N%f = fs  snnf ! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a     GyNf = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a     GyN@f = fs  snnf ! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a    0 n GwNf = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a     GuN,f = f! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a     GtNf = fs  snnf ! [         a,  nU R-                  SS[/        U5      S GS Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GrN'= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GnN= f! , (       d  f       GmN= fs  snf s  snf ! , (       d  f       GlN= f! , (       d  f       GkN= f! [         a  Gn)SGn( S Gn)GA)GkNS Gn)GA)ff = f! [P        GR<                   a    U R-                  SSGSSy.5         g [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GhN!= f! , (       d  f       GhN= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a  Gn@ S Gn@GA@GfNzS Gn@GA@ff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GfN)= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GeNv= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GdN= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = fs  snbf ! G[~         a     GWNR                  GWJ5        GUNGR}                  GUJ5         GbNg! [         aS  GnOU R-                  SGSGSGWJ GSGUO 3Sy.5        GWNGR-                  5         GWMGR-                  5          S GnOGAO g S GnOGAOff = ff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a     G_Nf = f! , (       d  f       G_Nl= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       G]N= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a    0 nB G\Nf = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a    0 nB G\Nf = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GZN= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GYN= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a     GXNf = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GWN8= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GUN= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GUN
= f! [P        Rd                   a    U R-                  SSGS^GS_GS].5         g [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a'  nU R-                  SS[/        U5      05         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a     GONf = f! [         a,  n>GWR                  GW[/        U>5      GS|.5         S n>A>GNM  S n>A>ff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a     GMNGf = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         aT    GWrRb                  R                  5       GSS  =(       d)    GWrR                  R                  5       GSS  =(       d    GSGn GHNf = f! G[        GS5      Rd                   a    U R-                  GSSGSSy.5         g [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a     GGNf = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       GBN= f! [         a!  GnG[        GSGU 35         S GnGAGBN9S GnGAff = f! [         a     GBNf = f! , (       d  f       g = f! , (       d  f       G>N= f! [         a!  GnG[        GSGU 35         S GnGAG>NS GnGAff = f! [         a     G>Nf = f! , (       d  f       g = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = fs  snnf ! [         a     G9Nf = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a    0 Gn G8N
f = f! [         a     G7Nff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a     G6N8f = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = fs  snbf ! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! [         a     S	S K(GnGURS                  GSQGSRGSS[J        R                  " 5        GST3GSU/GURT                  GURT                  GS9  U R-                  SSGSVGSP.5         g ! [         a/  GnU R-                  SS[/        GU5      Sy.5         S GnGA g S GnGAff = ff = f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       G(N= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f! , (       d  f       G&NI= f! [         a(  nU R-                  SS[/        U5      Sy.5         S nAg S nAff = f(  NzTransfer-Encodingr   chunkedTasciirA  r'  ;r   r9  rp   r   r  /api/wohnungen/ratings
[^a-z0-9_]r  addrr  ratingswohnungen_ratings_r  Fr#  r%  r   r  r>  r   z/api/wohnung/savewohnung_data.jsonz/api/netzwerk/savenetzwerk_data.jsonz/api/lernbegleiter/hilfetopic
Mathematikblatt	block_numrq   zKein Anthropic-KeyuR   Du erklärst Emil (14 Jahre, ADHS, Klasse 8, Mathe-Schularbeit morgen) das Thema 'z' (z, Block u"   von 6).

Schreib eine Schritt-für-Schritt-Erklärung in einfacher Alltagssprache:
1. Das Grundprinzip in 2-3 Sätzen — mit einem Alltagsbild oder Vergleich
2. Die wichtigste Formel oder Methode — klar und groß
3. Ein durchgerechnetes Beispiel — jeden Schritt einzeln kommentiert
4. Der häufigste Fehler — und wie man ihn vermeidet
5. Ein Merksatz (1 Satz) der alles zusammenfasst

Schreib auf Deutsch. Keine Fachbegriffe ohne Erklärung. Maximal 350 Wörter. Formatiere mit kurzen Abschnitten und Zeilenumbrüchen — kein Fließtext.r  i  r*  rS  rW  rZ  r\  r[  )r`  r^  r_  )r  r  r&  r  
erklaerungrU  r   z/api/lernbegleiter/savelernbegleiter_state.json	_saved_atr"  z/api/lernbegleiter/kurzcheckquestionanswerz;Emil (14, ADHS, Klasse 8, Mathe-Arbeit morgen) hat gerade 'u
   ' geübt (z).

Frage: z

Emils Antwort: u:  

Bewerte seine Antwort kurz und freundlich:
- Was ist richtig daran? (immer zuerst)
- Was fehlt oder ist ungenau? (konkret, ein Satz)
- Die vollständige richtige Antwort in 2-3 Sätzen — einfach, klar, ohne Fachjargon
- Ein kurzer aufmunternder Abschluss

Maximal 6 Sätze gesamt. Warm, direkt, kein Lehrerton.r  	kurzcheck)rT  rV  r[  r\  feedbackr^  z/api/lernbegleiter/fragehistorytotal_blocksr  elapsed_pct
phase_typeworkzDu begleitest Emil durch seinen gesamten Lernabend. Emil ist 14 Jahre alt, hat ADHS (diagnostiziert), und schreibt morgen eine Mathe-Schularbeit in Klasse 8 Gymnasium (aktuelle Note: 4).

Aktueller Stand: Block z von z
, Thema: ''r  r  r  u  % des Blocks sind rum.

Die 5 Themen heute Abend (in dieser Reihenfolge):
1. Lineare Funktionen — y=mx+n, Steigung m, y-Achsenabschnitt n, Gleichung aus 2 Punkten, Nullstelle
2. Satz des Pythagoras — a²+b²=c², alle 3 Varianten, Höhe im gleichschenk. Dreieck, Raumdiagonale
3. LGS algebraisch — Gleichsetzen-Verfahren, Einsetzen, Addition
4. LGS grafisch — Wertetabelle, Geraden mit Lineal einzeichnen, Schnittpunkt ablesen
5. LGS Textaufgaben — Variablen benennen, Gleichungen aufstellen, Antwortsatz

Wie du mit Emil sprichst:
- Du bist der ruhige ältere Freund, nicht der Lehrer — warmherzig, nie ungeduldig
- Schritt für Schritt, maximal 3-4 Sätze pro Erklärungsschritt
- Alltagssprache — jeden Fachbegriff sofort mit einem Bild oder Beispiel erklären
- Wenn etwas falsch ist: zuerst was richtig war, dann sanft korrigieren, dann Lösungsweg zeigen
- Nie: 'Das ist doch einfach', 'Das hatten wir schon', 'Das solltest du wissen'
- Am Ende jeder Antwort: eine kurze Einladung — 'Macht das Sinn?' oder 'Magst du es kurz selbst versuchen?'
- Wenn Emil nachhakt: anders erklären, neue Analogie finden, Geduld zeigen
- Du kennst seinen Fortschritt: was er schon geschafft hat, was noch kommt
- Wenn er frustriert klingt: erst kurz anerkennen, dann sachlich weiterhelfenr  rT  )r*  rV  )rP  rO  r'  rX  c              3   @   #    U  H  oS    S:X  d  M  US   v   M     g7f)rT  r*  rU  Nr  r-  s     r'   r  )CockpitHandler.do_POST.<locals>.<genexpr>6  s"     !a8I1vYZ`M`,!I,8Is   chat)rT  rV  rW  r`  r[  r\  z/api/lernbegleiter/fotor<  zdas Rechenblattz	Kein BildzDu bist Emils freundlicher Mathe-Nachhilfelehrer. Emil ist 14 Jahre alt, hat ADHS und schreibt morgen eine Schularbeit in Klasse 8 Gymnasium. Er hat gerade 'un  ).

WICHTIG — prüfe zuerst die Lesbarkeit:
Wenn die Handschrift so unleserlich ist, dass du eine oder mehrere Aufgaben nicht auswerten kannst, antworte AUSSCHLIESSLICH mit diesem JSON (keine Korrektur):
{"illegible": true, "illegible_detail": "Ich kann [was genau] leider nicht entziffern."}

Nur wenn alles ausreichend lesbar ist:
Analysiere das handgeschriebene Rechenblatt sorgfältig und gib eine ausführliche, warme Korrektur in vier Abschnitten:
1. ✓ Was Emil richtig gemacht hat (konkret, mit echtem Lob)
2. → Welche Fehler passiert sind (Schritt für Schritt erklären, wo genau)
3. → Wie man es richtig macht (kurzer, klarer Lösungsweg)
4. Ein persönlicher, aufmunternder Abschlusssatz für morgen.

Schreibe auf Deutsch, in einfacher warmer Sprache — keine Fremdwörter, keine Lehrerdistanz. Kurze Absätze. Antworte NUR mit dem Korrekturtext, kein JSON.i  base64
image/jpeg)r  
media_typer  )r  r+  )r  r   rr  rt  z"illegible")	illegibleillegible_detailfotorl  )rT  rV  rk  rl  	image_b64)rT  rV  rk  
correctionrn  ro  z/api/sancho/startr   zname requiredr  r   zSancho starten.commandbash)r   r   r;  )r  r   z/api/sancho/sendr  rt  zsession requiredzmessage requiredz^[a-zA-Z0-9_\-:\.]+$u#   session enthält ungültige ZeichenzSession u$    nicht gefunden — Sancho schläft?	send-keysr  Enterr  r  ztmux Fehler: ztmux Timeoutz/api/prefetch_photosc              3   4   #    U  H  oS :X  d  M
  Sv   M     g7fr  rq   Nr  r  s     r'   r  rf         M%:9n!!%:   		c              3   4   #    U  H  oS :X  d  M
  Sv   M     g7fr   rq   Nr  r  s     r'   r  rf         G"7Q;qq"7rw  )r  r  r   z/api/alarms/ackr'  rF  zid requiredrH  r_  P   r  )rH  r  )r  rP  r  z/api/alarms/creater4  r<  r  rZ  i  r=  r   rn  r+  r[  r   r,  r>  r?  r@  )r4  rt  r=  r+  r,  r?  notifytoolszsystem_alert.sh)r  rC  z/api/apple/device-tokenz/api/version/bumprY  r  changeversion_bumps.jsonr  )versionr~  rI  )r  r  )r   r  r  /api/stimmen/feedbackstimmen_bewertungen.jsonzstimmen_bewertungen.jsonlr  r  )rw  r  deletedirr  r  )rI  r  )z/api/feedbackz/api/design_feedbackzexpected arraydesign_feedback.jsonl)r  savedz/api/design_evalzexpected objectdesign_eval.jsonlz/api/design_standarddesign_standards.jsonl/api/inbox/rM  c              3   X   #    U  H   oR                  5       =(       d    US ;   v   M"     g7fz-_Nisalnumr  s     r'   r  rf  P        "JT99;#;!t)#;T   (*invalid rolesenderwatsonz%Y-%m-%d %H:%Mr  .mdr  z
---
**z** (z):
r  )r  toz/api/zotify/authu   Zotify nicht verfügbarz/api/votify/setupsp_dczsp_dc erforderlichz"Library/Application Support/Votifyr   zcookies.txtzF# Netscape HTTP Cookie File
.spotify.com	TRUE	/	TRUE	9999999999	sp_dc	votify--cookies-path--session-typewebz--no-exceptionsz5https://open.spotify.com/track/11dFghVXANMlKmJXsNCbNlr   /opt/homebrew/bin:/usr/bin:/binz/tmpr  r   r  r   r   invalidu   sp_dc ungültig oder abgelaufenu   Spotify verbunden ✓)r  rt  .Library/Application Support/Votify/cookies.txtzGespeichert (Timeout OK)z/api/votify/downloadrY   r  r   zhttps://open.spotify.com/zSpotify-URL erforderlichu"   Nicht eingerichtet — sp_dc fehltr  r   )r   rY   rx   r   c                     [         R                  " SS[        U5      SSSSS[        U5      U/
SSS	0 [        R                  ES
S0E[        U5      S9nUR
                  S:X  a  SOS[        U    S'   UR                  UR                  -   SS  [        U    S'   g ! [         a+  nS[        U    S'   [        U5      [        U    S'    S nAg S nAff = f)Nr  r  r  r  r  z"vorbis-high,aac-high,vorbis-medium--outputTr  r   r  r  r   r   r   r   0rx   
r   r  r   r   r   r   ZOTIFY_JOBSr   r   r#   )jidspotify_urlrL  cfiler   r7  s         r'   
run_votify*CockpitHandler.do_POST.<locals>.run_votify  s    :)~~%-s5z-u.0T'Z(* ,0dD Y2:: Yv7X Y #J
  @DRS?SVY`C(237;;3Lef2UC(/$ :5<C(225b'C(/:s   BB 
C#!C		Cr<  )r  r   z/api/voice/transcribez
Kein Audioz&Kein OPENAI_API_KEY in credentials.env)OpenAI)rM  zX-Audio-ExtwebmzX-Vocabularyvictor_inputglossaryglossary.jsonrN  mp4	audio/mp4r  r  r  r  r  gpt-4o-transcribezaudio.r  )rP  r  r*  r  r  r   z/api/voice/save_transcripttranscriptsr@  transcript_.txt[] z/api/voice/intakez	Kein TextzWATSON_AUFGABEN.mdVE1z\bVE(\d+)\bVEr  rl  z| u    | **Sprach-Entwurf** — z
 | Diktat u	    | — |
u1   
## Voice-Entwürfe (Diktat — unklassifiziert)
z7| # | Aufgabe | Kontext | Deadline |
|---|---|---|---|
u   Voice-Entwürfe (Diktatu9   (## Voice-Entwürfe \(Diktat[^\n]*\n\|[^\n]+\n\|[-| ]+\n))r  task_idz/api/voice/debug_logdebugzvoice_debug.logr  z%/api/victor_input/transcribe_polishedzKein OPENAI_API_KEYry  r'  us  Du korrigierst Spracheingaben auf Deutsch. Regeln:
- Schreibe Zahlen als Wörter (1 → eins, 7 → sieben)
- Korrigiere offensichtliche Spracherkennungsfehler
- Eigennamen unveränderlich: Watson, Sancho, ChatGPT, Magnific, ElevenLabs, Dispatcher, Vibe Coding, Victor, Melanie
- Füge sinnvolle Satzzeichen ein
- Gib NUR den korrigierten Text zurück, keine Erklärungen)r  ro  polishedz/api/victor_input/save_audior  %Y-%m-%d_%H-%M-%S)r  r   /api/victor_input/glossary)r  termscorrectionsrN  r  r  updatedz/api/voice/save_audior`  z	boundary=rs  z%Y-%m-%d_%H-%M-%S-%fs   Content-Type: s   

zcontent-disposition)headerchunk_.webm)rg  r  z/api/mikrofon-v2/session/startr  ext
recordings
signalraumzVoice Input Final	recording)r  appr  startedr   z	meta.json)r  r  z/api/mikrofon-v2/chunkr  000z/api/mikrofon-v2/saveraw_textpolished_textedited_textactive_viewroute_statusztranscript.txtzraw.txtzpolished.txtz
edited.txtr  	last_saver  editedzchunk_*)r  r  r  save_statusr  r  r  r  
final_textr  audio_fileszsession.jsonz/api/mikrofon-v2/polishu;  Du bekommst einen Spracherkennungstext von Victor. Korrigiere NUR klare Diktierfehler (falsch erkannte Wörter, Buchstabendreher) und setze sinnvolle Absätze. Verändere NICHT Victors Sprache, Stil oder Formulierungen. Füge KEINE Sätze hinzu. Kürze NICHT. Antworte nur mit dem korrigierten Text, nichts sonst.

zWichtige Namen und Begriffe: r  zText:
zgpt-4or  )rP  rX  rO  r  equalsamer  )rA  insert)r  origr  r  )r  r  diffz/api/mikrofon-v2/router  z%Y%m%d_%H%M%ScherryCHERRY_WATSONOUTBOXVOICE_INPUT_FINAL_nosidrm  u,   # Voice Input Final → Cherry / Codex

ts: z

session: u   —z

---

SR1z\bSR(\d+)\bSRu    | **Voice Input Final** — u   Voice-Entwürfeu0   (## Voice-Entwürfe[^\n]*\n\|[^\n]+\n\|[-| ]+\n)uh   
## Voice-Entwürfe (Diktat — unklassifiziert)
| # | Aufgabe | Kontext | Deadline |
|---|---|---|---|
notiznotizennotiz_z]
zUnbekanntes Ziel: _no_session	routed_tosent)r   r   rI  )r  r  )r  r  r   z/api/mikrofon-v2/verify-router   zSIGNALRAUM_*.mdc                 6    U R                  5       R                  $ r   r   r   s    r'   r   (CockpitHandler.do_POST.<locals>.<lambda>  s    RSRXRXRZRcRcr   r   znotiz_*.txtc                 6    U R                  5       R                  $ r   r   r   s    r'   r   r    s    affhN_N_r   r  )r  foundr   previewzDatei nicht gefunden)r  r  r   z/api/deepgram/transcribez(Kein DEEPGRAM_API_KEY in credentials.envz\https://api.deepgram.com/v1/listen?model=nova-3&language=de&smart_format=true&punctuate=truer  rq  ra  rb  r>  r  r  r  r  r  z/api/transkript/savetranskript_state.jsonsaved_atz/api/zotify/downloadc           
          [         R                  " SS[        US-  5      SSSSU/SSS	0 [        R                  ES
S0E[        U5      S9nUR
                  S:X  a  SOS[        U    S'   UR                  UR                  -   SS  [        U    S'   g ! [         a+  nS[        U    S'   [        U5      [        U    S'    S nAg S nAff = f)Nspotdlr  z{list-name}/{title}.{ext}r  mp3z	--bitrate320kTr  r   r  r  r   r   r   r   r  rx   r  )r  r  rL  r   r7  s        r'   
run_spotdl*CockpitHandler.do_POST.<locals>.run_spotdl  s    :)~~%z3zD_7_3`'(&(* ,0dD Y2:: Yv7X Y #J  @DRS?SVY`C(237;;3Lef2UC(/$ :5<C(225b'C(/:s   BB 
C!CCz/api/song/recognizez"song_erkennung-Modul nicht geladenmikrofonr&  r%  )r  	blackhole)r+  r&  )r  r  r&  r+  z/api/song/saveartistisrcztitle erforderlich)r4  r  r  saving)r  r  z/api/watson/save_hf_tokenr  z
Token leer)r   r  r   huggingfacer  r   r  r   r  r   r   r  u#   Token im Schlüsselbund gespeichertz/api/elevenlabs/agent_configagent_idzagent_id leerelevenlabs_agent_config.jsonr  r  r  z/api/pi/wifissidpassword)r   r   r   Victors WLANr   r   r   r   r  "acct".*?"(.+?)"u1   Kein Eintrag "Pi WLAN" im Schlüsselbund gefundenz["\\\$`]u(   Ungültige Zeichen in SSID oder Passwortsshr  zConnectTimeout=10zBatchMode=yeszStrictHostKeyChecking=nozpi@raspberrypi.localzsudo nmcli dev wifi connect "z" password "r  zPi ist jetzt mit "z&" verbunden. Ethernet-Kabel kann raus.r  u   Timeout — Pi nicht erreichbarz/api/openai_realtime_sessioni  u2   Veraltet — bitte /api/openai_realtime_sdp nutzenz/api/openai_realtime_sdpsdprP  zgpt-4o-realtime-previewz	sdp fehltr   r   r   r  r   zKein OpenAI API Key gefundenz)https://api.openai.com/v1/realtime?model=rp  zapplication/sdp)r  r	  /api/deepgram/statusr  r  )r  key_setz/api/deepgram/proxy_urlzKein Deepgram Keyzwss://api.deepgram.com/v1/listen?model=nova-2&language=de&encoding=linear16&sample_rate=16000&channels=1&interim_results=true&endpointing=2000&utterance_end_ms=2000&smart_format=true&punctuate=true&diarize=false&token=)r  ws_urlz/api/candy/sendztext erforderlichcandyu   Candy schläftz/api/candy/interrupt)rr  r  r	  zC-cr   z/api/tts
text/plains+   {"ok": false, "error": "text erforderlich"}Eklc9nt4PIDiT8PWGy1hELEVENLABS_API_KEY=voice_ids1   {"ok": false, "error": "Kein ELEVENLABS_API_KEY"},https://api.elevenlabs.io/v1/text-to-speech/z/streameleven_multilingual_v2r   g      ?	stabilitysimilarity_boostr   model_idvoice_settings
audio/mpeg
xi-api-keyr`  Acceptz/api/anruf/uploadr  r  r  m4aoggz%Y%m%d-%H%M%Sr  ru   
processing)r   r  r   r  mimerI  zanruf-r  r=  r  r   )r  r'  z/api/jobs/dispatchr   	job_titlecommentr#  rI  2   r  )r   r	  r 	  rI  r   z/api/rode_clip_tagclip_idzclip_id requiredz^(f\d+_)?clip_\d+$u   ungültige clip_id)	erzaehleractionwegz%tag muss erzaehler/action/weg/"" sein
rode_clips	tags.jsonz/api/rode_emotion_tagemotionrT  )ruhig	neugierigironischernstwarm	aufgeregt   wütend	belustigt   überheblichgenervt
verwundertu   verschwörerbesorgtentschlossenmisstrauischu   ungültige emotionemotion_tags.jsonz/api/rode_not_clean_tagdirtynot_clean_tags.jsonz/api/holmes_tagz^fall\d+_clip_\d+$)dialogmonologr%	  r   z#tag muss dialog/monolog/weg/"" seinholmes_clipsz/api/holmes_emotion_tag)
analytischr5	  r1	  r+	  r6	  gespanntr,	  r)	  u   verschwörerischr*	  r.	  r2	  r-	  r4	  kaltz/api/holmes_not_clean_tagz/api/brueckner_clip_tagz
^clip_\d+$)gutmusikr%	  ztag muss gut/musik/weg seinbrueckner_clipsz/api/brueckner_export_selectionr@	  zKeine Gut-Clips markiert)rw  r  r  .mp3zfile 'z'
christian_bruecknerzsource_best.mp3r  r  z-fconcatz-safer  r  r  
libmp3lamez-q:a2)r  r@	  r   z/api/brueckner_gf_clip_tagbrueckner_gf_clipsz/api/brueckner_gf_emotion_tag)r)	  
bedrohlichr?	  r/	  u	   amüsiertsarkastischnachdenklichr5	  r-	  u
   flüsternddominantu   überzeugendu   nervösr+	  u
   verärgertz/api/brueckner_gf_not_clean_tagz"/api/brueckner_gf_export_selectionzsource_gf_best.mp3z/api/elsholtz_clip_tagz^[a-z0-9_]+_clip_\d+$elsholtz_clipsz/api/elsholtz_export_selectionarne_elsholtzz/api/rode_export_selectionselectedr#	  r$	  )r  r#	  r$	  z/api/voice_clip_tagvoice^[a-z0-9_]+$u   ungültiger voice-Nameztag muss gut/musik/weg/"" sein_clipsz/api/voice_export_selectionz/api/lebensstationenlebensstationen.jsonz/api/glossar/feedbackzglossar_feedback.jsonlz/api/quellen_bewertung_savequellen_bewertung_bsl.jsonz(/api/reisebericht/quellen_bewertung_saver  z
stem fehlt_debug..z_quellen_bewertung.jsonz/api/keychain/setr   r   zservice und token erforderlichc              3   X   #    U  H   oR                  5       =(       d    US ;   v   M"     g7f)z-_.Nr  r  s     r'   r  rf  p  s      Fg99;4!u*4gr  u   ungültiger service-namer  z/api/cloudflare/add-hostname	subdomainzhttp://localhost:8089u   Ungültiger Subdomain-Namer   r   r   zcloudflare-apir   r      Kein Token im Schlüsselbund 4063400905adb9cae4a6de2a32841545$75d3bc4e-18b5-442e-ac28-ff4850efbd4fbeachorchestra.com0https://api.cloudflare.com/client/v4/zones?name=r  successr  zZone nicht gefunden.https://api.cloudflare.com/client/v4/accounts//cfd_tunnel//configurationszTunnel-Config nicht lesbarconfigingresshostname)re	  r   r  r  zPUT fehlgeschlagenCNAMEz.cfargotunnel.com)r  r   rU  proxiedttlz+https://api.cloudflare.com/client/v4/zones/z/dns_records)r  re	  dns_createdz/api/time-camera/jobsr  ri  r  image_base64imageBase64zimage_base64 fehltr  prompt_text
promptTextzTime Travel - Past. Transform this exact image 100 years backward while preserving viewpoint, composition, people, faces, light and mood.z
prompt.txtr  r  r  rL  )r'  r<  r=  rL  r  )r  r  rN  )
r  r   r  r  r   r  r  r  r  r  manifest_urlry  z	/manifestz/api/reisebericht/startrs   r   r   r  Reiseberichtzlat und lng erforderlichr   u   Wartet in der Queue…)
r   r   r   r   rs   r   r   r   r   r   z/api/reisebericht/bewertung	bewertungz_bewertung.json)r   rp	  r  zmissing fieldsz/api/sommerurlaub/saver  final)send_apple_mail_summaryu6   Mathias hat den Sommerurlaub-Fragebogen ausgefüllt.

z

---
Gespeichert: zvictor@hotelgalaxy.deu1   Sommerurlaub 2025 — Mathias hat geantwortet ✓z/api/sommerurlaub/buildr  already_running)r  r   u   Wird gestartet…r   r  r  z/api/sommerurlaub/deeperz"sommerurlaub_deeper_requests.jsonlz/api/sommerurlaub/deeper_buildr  z/api/server/restart	launchctl	kickstartz-kzgui/z)/dev.beachorchestra.sancho-cockpit-serverr   r   zNeustart eingeleitet)r  r  z/api/ftp/uploadr-  port   remote_pathz$host, user und password erforderlichzdispo2026.htmlzdispo_save.phpr  zDateien fehlen: )rx	  usernamer  r  z%Ordner konnte nicht erstellt werden:     — )r  r  z/api/stimmen/savestimmen_choices.jsonrs  r  )rs  r  r  z/api/narration/controlznarration_control.json)r$	  rI  )r  r$	  z/api/flaneur/controli  unauthorizedflaneur_public_app)r$	  rI  r+  )r{  stoppauseresumetell_nowapp_)rC  r$	  route_tsr  r+  )rs   r   accuracyspeedcoursemapsUrlz/api/flaneur/location/pushlive_locationflaneur_ios_appr	  r	  r	  flaneur_ios_publiczhttps://maps.google.com/?q=)r  fromr  fromMer  rs   r   r	  r	  r	  r+  received_atr	  r	  	gps_point)r	  rC  )r  r  z/api/reise_commentz/api/reise_annotation/api/realdebrid/configztoken requiredz/api/ytdlp/downloadrz  zurl required)r'  rY   r   r  z/api/sabnzbd/add_nzbrp  znzb_url requiredaddurlr  )rw  r   r%  re  rf  )r  r  z/api/sabnzbd/config_savenzbgeek_keyrM  usenet_hostusenet_passzD/Users/victorholland/Library/Application Support/SABnzbd/sabnzbd.iniz/api?mode=shutdown&apikey=z&output=jsonz
[servers]
    [[z]]
        host = z
        port = usenet_porti3  z
        username = usenet_userz
        password = z
        connections = 8
        ssl = 1
        ssl_verify = 2
        ssl_ciphers = ""
        enable = 1
        optional = 0
        retention = 0
        send_group = 0
        timeout = 60
        priority = 0
        displayname = z	[servers]z\[servers\].*flagsz0/Applications/SABnzbd.app/Contents/MacOS/SABnzbdz/api/audible/downloadr  zasin required)r'  r  r   r  z/api/realdebrid/addrJ  rK  r  z magnet oder torrent_url requiredzfolder requiredu+   Kein API-Key — bitte zuerst konfigurieren)r'  r   rJ  r  r  r  r   zrd-z/api/realdebrid/cancel/	cancelledz/api/linkedin/fetchzlinkedin_foto_fetch.pyzScript nicht gefunden)r   r   r   iH)r  rx   r   zTimeout nach 5 Minutenr  z/api/linkedin/statusr4  zfetch_report.jsonc              3   6   #    U  H  o(       d  M  S v   M     g7f)rq   Nr  r  s     r'   r  rf    s     9mq11ms   
	)r  fetchedr  reportz/api/bahn/searchnodez/opt/homebrew/bin/nodebahnzbahn_search.mjsr   ./opt/homebrew/bin:/usr/local/bin:/usr/bin:/binr  r   r  r   zNode script fehlgeschlagen/api/voice_audit/weg_batch	voice_idsvoice_audit_weg_batch.json)r  r  /api/voice_audit/sortvoice_audit_sort.jsonr  r%	  z!/api/voice_audit/delete_weg_batch)r  r  z-op://Automation/ElevenLabs API Key/credentialz$https://api.elevenlabs.io/v1/voices/r	  DELETE)r  rc  )r'  r   )r  deletedr  z/api/voice_audit/generate/voice_audit_sentences.jsonvoice_audit_clips	typical_1	typical_2	typical_3r.	  rJ	  r3	  flehendenc                   > TR                  U 0 5      R                  U0 5      nUR                  S5      (       a?  [        UR                  S5      S   5      S-
  nUR                  S5      =(       d    / SQU   $ UR                  US5      $ )Ntypical_r  rq   typical)r   r   r   r   )r   rU  rB  r  )vidlangctldr  _va_sentences3s        r'   _va_get_text3-CockpitHandler.do_POST.<locals>._va_get_text3]  sv    '++C488rBB}}Z00!"((3-"23a7 "y 1 A\3GG66"b>)r   c            
        > SS K n T GH  nT
 GH  nTT-  U SU S3-  nUR                  5       (       a   UR                  5       R                  S:  a  MG  T" TX5      nU(       d  MY  US;   nU(       a  SOSn[        R
                  " USUS	S
.S.5      R                  5       nTR                  ST 3UTSSS.SS9n UR                  R                  SSS9  TR                  USS9 n	UR                  U	R                  5       5        S S S 5        U R                  S5        GM     GM     g ! , (       d  f       N*= f! [         a     N9f = f)Nr   r  rC	  r  )r.	  rJ	  r3	  r	  r)  r   r	  皙?r	  r	  r	  r\  r	  r	  ra  rb  Tr   rr  r  )r   r  r   r  r  re  rf  r  r   r   r  r  r  r#   r   )	_va_time3r	  r	  op3txt3
emotional3stab3payload3req3rr3_va_clip_types3_va_clips_dir3_va_el_key3r	  
_va_langs3	_va_ureq2_va_vid3s             r'   _va_gen_worker3/CockpitHandler.do_POST.<locals>._va_gen_worker3d  sP   , *"1B"08";at4>P"PC"zz||
0B0BT0I (#04#DD#' ()+/d)dJ+5C3E'+zz(,,D@E[^2_3 (  &vx	 %
 $-#4#4"Nxj Y%-7BTfr~('-	 $5 $D% #

 0 0 0 M%.%6%6tR%6%HC$'OOCHHJ$? &I &OOC05 #2 !+. &I%H#, % $%s0   <*D;& D*D;*
D84D;8D;;
EEr  zGenerierung gestartet)r  r	  r  z/api/naming/vision-keyr   AIzau6   Kein gültiger Google API Key (muss mit AIza beginnen)r  vision_key.txtzgoogle-visionr  z-Uznaming_test.mjsvision_pass.log)r   r   r   r   z/api/naming/analyze-oner*  H/Users/victorholland/Vibe Coding/The Camera/Testumgebung/Benennungstestszfilename + generator requiredzBild nicht gefunden: )r  visionzUnbekannter Generator: znaming_analyze_one.mjsrd  i)r  r  
elapsed_msr   i  zTimeout nach 90s/api/naming/feedbacknaming_feedback.jsonz.lockstarsnotessavedAt)r	  r	  r	  z!/api/kameramotor/export-to-photosjob_id fehltr   r  Job nicht gefundenr  r  c                 &    U R                  SS5      $ )NoutPathr   r  r  s    r'   r   r    s    iQS@Tr   rs  r	  zKeine Bilddateien gefundenc                 &    U R                  SS5      $ )Nrs  z\")rA  r   s    r'   _esc$CockpitHandler.do_POST.<locals>._esc  s    		#u0E)Er   c              3   <   >#    U  H  nS T" U5       S3v   M     g7f)zPOSIX file "rs  Nr  )r  r   r	  s     r'   r  rf    s!     2fVeQR\$q'!3LVes   ztell application "Photos"
  activate
  if not (exists album "The Camera") then
    make new album named "The Camera"
  end if
  set theAlbum to album "The Camera"
  import {z3} into theAlbum skip check duplicates yes
end tell
z.applescript)rw  r  r  r  c                    >  TR                  SU /SSS9  TR                  U 5        g !    g = f! TR                  U 5        f !    f = f= f)N	osascriptTr  r  )r  r  )r   _ph_os_ph_sps    r'   _run_import+CockpitHandler.do_POST.<locals>._run_import  sI    !1$*JJT/BSWadJ$e)/t)<$0D *0t)<$0Ds(   / ( ,A	AA	AA		importing)r  r  r   z/api/kameramotor/upload-imagez	image.jpgr  r  z.kameramotor_uploads.heic.heifr  r  r[   r  r  92r  
missing_okr}  )ImageImageOps)r  r~  \   )qualityoptimizeRGBz&[upload-image] EXIF-Normalize failed: r   rO  )r  r   rO  is_existing)r   rO  r   rI  zboundary=([^\s;]+)zmultipart/form-dataz)multipart/form-data mit boundary erwartets   --s   
s   name="file"s   filename="([^"]+)"zKein file-Feld im Uploadz/api/kameramotor/job)r  r   r(  )rD  r(  r  )r  r   r(  r  legacy_blockedz/api/kameramotor/openai-joboai_openai_jobsrM  chatgptr(  r  openai_modelzgpt-image-2official_apizopenai-imagesr=  rF  r  rG  r	  r6  output_formatrL   rM  rN  r  rK  waiting_for_openai_worker)rD  r   openai_statezGOfficial OpenAI API route prepared; no API call made by cockpit server.)rD  r   r  zopenai_image_worker.pyz--oncequeued_openai)r  r   r   z /api/kameramotor/openai-approve/zKein OpenAI-JobzOpenAI-Job nicht gefundenallow_paid_apiapproved_atapproved_byVictorapproved_for_openai_apiuB   Victor-Go erteilt; OpenAI-Worker darf genau diesen Job ausführen.)r   r  r 
  z/api/kameramotor/cancel/r  identifiersmagnific_submit_at
started_atopenai_request_id  zalready submitted to providerjob not found)r  removedz/api/kameramotor/open-folder/Users/victorhollandr  u   Ungültiger Pfad/api/kameramotor/settingssettings.jsonr  u2   Unauthorized — Bearer-Token fehlt oder ungültigzPayload zu gross (max. z KB)i  zTageslimit erreicht (z Tasks/Tag))r  r4  rh  zFehlende Felder: r  )taskdecisioncontextz*type muss task, decision oder context seinrh  u$   Payload enthält verbotenes Muster: r	  normalr  )	r'  r	  r  r4  rh  r=  rI  r	  rx  )r  r'  r   r   z/api/chatgpt/uploadchatgpt_importeruploads	   zKein Boundary gefundens   Content-Dispositions   Content-TypezDatei nicht gefunden im Uploadz[^a-zA-Z0-9._\-])r  r   r   z/api/chatgpt/importcoreskip_pii_checkzpath erforderlich)r
  z/api/chatgpt/redact-reportz/api/chatgpt/summarize-profilez/api/cherry/inbox/mark-readidszids-Liste erforderlich)r  r  z/api/cherry/inbox/poll)r  new_messages/api/cherry/notify/configr  rc	    Cherry-Modul nicht geladenz/api/cherry/notify/test)r  r  z/api/cherry/bridge/starthttp://localhost:9225/jsonu   Bridge läuft bereits)r  r  z</Applications/Google Chrome.app/Contents/MacOS/Google Chromez--remote-debugging-port=9225z--user-data-dir=z/.cherry-chromezhttps://chatgpt.comu'   Chrome startet — ChatGPT öffnet sichz/api/cherry/send
thread_urlzmessage erforderlichr   z	bridge.pyzbridge.py nicht gefundenc                     >  TR                  TSSSS9n U R                  S:H  U R                  U R                  4$ ! [         a  nSS[        U5      4s S nA$ S nAff = f)NTi  r  r   Fr   )r  r   r   r   r#   r   )r  r  r   r%   s     r'   _run_bridge+CockpitHandler.do_POST.<locals>._run_bridgeN  s`    1!$TVY!Z%00A5v}}fmmSS$ 1$b#a&001s   7; 
AAAAc                  @   > T" 5       u  pnTR                  XU45        g r   )put)r  r  errr!
  result_queues      r'   _bridge_thread.CockpitHandler.do_POST.<locals>._bridge_threadZ  s     #.=LBS $$bs^4r   zGesendet, Antwort in InboxzBridge-Fehler   sendingu,   Bridge sendet — Antwort erscheint im Inbox)r  r   r  z/api/cherry/web_searchr  context_sizer!  zquery erforderlich)r   r   u"   OpenAI-Key nicht im Schlüsselbundweb_search_preview)r  search_context_size)rP  r  r}  z#https://api.openai.com/v1/responsesre  output_textannotationsr  r  r  )r  re  )r  r   r/
  rP  response_idtokensz/api/cherry/send_via_apiprevious_response_id)rP  r  instructionsr  )make_messagezgpt-apiz
API-Sendenchannelresponses_api)r  from_r  subjectr  zAPI-Antwort)r0
  r5
  rN  gv!>gv!>)r  r   r0
  rP  r1
  r  r  r  (  r  r   r?  rfilereadlinerg  r"   rB  r  r   r  r#   r  rB  r   r  r  r   r  r  r  re  r
  r   r  r  r  r  rf  r  r   r$  rA  r  r	  reversedrU  r   r  r   r   r   r!   r?  r  r  r  r   r   r   TimeoutExpiredr  sumr  r  r`  rX  r]  rm  r  r  tempfiler  r   NamedTemporaryFiledumpr   r   r  r2  r  r  r  r  r  LEXIKON_DIRrA  r  r  	INBOX_DIRr   r  r  r  r   r   rj  rk  r  rB  rC  r{  r  r  r  r  transcriptionscreater   r  r@  r  r   r  rg  completionsrs  rt  rU  r  r  r  emailmessage_from_byteswalk	get_paramget_filenameget_payloadr	   r   r  r   r   difflibSequenceMatcherget_opcodesrv  r   r  _SONG_MOD_OKr  	_song_modrun_recognition_flowrun_save_flowr   r  r  rB  r  r  r  r  r  rl  r  r  r   JOBS_QUEUE_FILEr   r   r  shutilcopy2r   r  r    r  extendCalledProcessErrorrh  rn  rr  	b64decoder  r  r&  ru  r  r   r   r   r   r   r  lib.notify_sendrr	  r  r  r  ri  r  r  r  paramikopathlib	SSHClientset_missing_host_key_policyAutoAddPolicyr  	open_sftpchdirr  r$
  _flaneur_token_okFLANEUR_LOCATION_FILEJSONDecoder
raw_decodeFLANEUR_ROUTE_LOG_FILEREISE_COMMENTS_FILEREISE_ANNOTATIONS_FILEr  r  r  r  STIMMEN_YTDLPr  r  rg  rh  r
   rt  r   DOTALLr  r  r  r  r  r  r   r   r   communicatewhichr   remover  PILr	  r	  exif_transposerw  convertsaver  rf  _originals_registry_lockrY  r\  endswithr5  rA  rV  rP  r  r  TASK_MAX_PAYLOAD_BYTESr  r  TASK_PAYLOAD_BLACKLISTutcnowr  r
  r
  import_exportredact_reportsummarize_profile
_CHERRY_OK_cherry_inbox	mark_read
force_poll_cherry_notifysave_config
get_confignotify_testr  r   r  Queueis_alive
get_nowaitmessage_schemar4
  _store_messageinit_dbr  (  r?  techunks	size_line
chunk_sizer  lengthr  rO  rP  r  r  rT  rV  rW  
claude_key_urlreqH_jsonHrN  rh  r  rK  r  r   _tmpr[  r\  _urlreq3_json4feedback_textr_  r`  ra  rb  _urlreq2_json3
system_msgr   	last_userrn  _urlreq_json2ro  
parsed_rawr   launcherr  rt  r   r%
  r  r   rF  rP  rC  _vt_vj_vdata_vpage_vmsg_vfile_vstore_ve_tf2	dest_json
dest_jsonlexistingr%  tmp_pathr  r.  r  r  rT  r  r  r  rI  
inbox_filer1  r  cookies_dircookies_filerY   r   r{  r  rJ  _tfr  rz  _OAIclientr  vocabglossary_filer  r	  r  afr  r   _dt_vsr   date_strtranscript_file_dt_vi_re_vi
tasks_filer  r   ve_numsr  
entry_linesection_headertable_headerrU  
insert_poslog_pathmsg_text_OAI2client2f2tmp2af2kwargs2
raw_resultr  polish_respr  _dt_via	audio_dirr   _dt_gl_dt_sa_emailr  boundarypartarchive_dirr  r  _dt_sv2sidsess_dirr  qsr  
chunk_path_dt_sv2sr  r  r  r  	meta_pathnow_isor   session_doc_diff_OAI_v2
_client_v2glossary_promptpolish_promptresp_v2r  	raw_words	pol_wordssm
diff_partsr,  i1i2j1j2spacedr|  _dt_sv2rr  ts_filerB   fname_re_v2rsr_nums	notes_dirrouted_filemeta_p	session_ppath_to_checkr  matchesr  r{  r  req_dgresp_dg	result_dgr  _dt_tr_data_state_filer  r+  r&  r4  r  r  	song_infor  r  config_filer  r  kc_pwkc_acct_re2r   r   req_data	offer_sdprP  rk  kcr9  req2resp2
answer_sdpr   r	  _ur_ttsCANDY_VOICE_IDel_keyr	  el_url
el_payloadel_reqel_respext_hdr_dt_ar  r  r  r"	  	tags_filer  r(	  rT  VALID_EMOTIONSefetagsr  r8	  nfntagsHOLMES_EMOTIONSr  r  	gut_clipslstcid_osGF_EMOTIONS_shutilerzaehler_dir
action_direrzaehler_countaction_countsrcrP	  	clips_dirfeedback_file	save_pathr  	safe_stemr   r   r  rX	  
CF_ACCOUNT	CF_TUNNELCF_ZONE_NAMEre	  r  r  zdatazone_idcfg_urlcfg_datard	  catchallrulesput_bodyput_dataerrsdns_bodydns_urldns_datadns_okr  _ttc_b64r  r  job_dirr  image_bytesr  rl	  r  
thumb_pathsubmitnow_msrs   r   r   rp	  bew_filer  _dt_surr	  r  	mail_body_me_dtdr  r  rZ
  _plr-  rx	  r*  pwremotefiles_to_uploadmissingr	  sftp	mkdir_errrx   choices_filer$	  r/  	ctrl_fileevent_tsroute_eventloc_rawrE  r  r   tmp_locroute_entryeidr 	  rz  _uuid_thrr  r  r8  rp  rY  _time2_iniblock_uuid2_thr2r  rJ  rK  r  r[  scriptr   r  
photos_dirr	  ok_n_shr	  _va_data_va_ids_va_file_va_vid_va_sort_va_tags_va_tag_va_weg_file_va_weg_va_cur_tags_va_ureq
_va_el_key_valine_rr	  r  _va_vid2_va_del_req_va_sort_file
_va_thread_valine3r  _va_sentences_file3r	  _vk_spkey_file_vk_shnode_binmjslog_f_an_sp_an_t_an_re_an_uuidr*  img_dirimg_path_an_sht0r   r	  err_dataerr_msg_fb_tfb_file	lock_path_ph_th_ph_tmpkm_dirjob_file
state_filer   r  paths_to_importr  dl_listr  
posix_listr  r	  _up_uuid_up_rer	  _b64b64_data
field_datauploads_dir_sp_njpg_dest_Im_IO_src_rotatedsave_kwargs	_exif_err_up_time	file_hashr[  rO  bmhdr_rawfn_m_up_time_mp_km_t_km_uuidrB  r(  r  r   r  r  _oai_t	_oai_uuidseeds_inseeds_clean_oai_sp_oai_sysworker	is_openair  r

  	home_baserealsfok_limitrequiredpayload_strbannedr
  outbox_emr  file_contentin_file
file_lines	safe_namer   _cgiskip_piir
  	new_countr  r  r  _bsp_ber
  bridge_pathr  r'
  r  r  r
  oai_keyr/
  r.  r}  r  _sp3prev_idr'  payload_dictresp_id_sys2r4
  msg_outmsg_inr	  r	  r	  r!
  r   r	  r	  r	  r	  r	  r	  r	  r	  r%   r&
  s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              @@@@@@@@@@@@@@@r'   do_POSTCockpitHandler.do_POSTp  s   \\126
"F
 $

 3 3 5 < <WY < W ] ] _I$ !$Y__S%9!%<b!AJ!QMM$**//*"=>JJOOA&  88F#D))*:A>?F::??6*D  &&99003zz$'vvmS488F3C3Py2W2W2YZ((9b1!&8e$DDtzz'!%PQ

34 01 YY--3zz$'!$77tzz$quMN

34 01 YY..3zz$'!$88tzz$quMN

34 01 YY44"3zz$',7"- HH[!4	.0
!JJsW.B$CDfAAhinhoorsxry  zB  CL  BM Mb b  1"%*0V!D E
 &&;g.557-?jo{| ' 
 %%c2%6!#\\!&&(3F 7

3vi/@/CF/K LM YY33
3zz$'!$>>$$)JJL[!v.

4 NOS!

34 01 YY88(3zz$'88J3(B/,7"-.0
!JJsW.B$CDfAAQRWQXXbchbi j&Z (&&,X .MM  1"%*0V!D E
 &&;g.557-?jo{| ' 
 %%c2%6!#\\!&&(3F 7 &y 1! 4V <" (F.  

3] ;< YY44C3zz$'((9b1,7"- HH[!4	#xx:"hh}a8!XXlF;
.0
!JJsW.B$CDfAA..7[l^:V[U\\]_ ).E7!}27 3{+, -d d	d . BA0"%( ")!!(AV9(== E6q|D!(!		 &&;g.557(:%/-9 '  %%c2%6!#\\!&&(3F 7	*1-f5 !a8I!acef	"!*L )V) 
 

36 23 YY33M3zz$' HHWb1	,7*;< JJsWk$:;V.0
!JJsW.B$CDf@@&&+WJug >UU & 1"% &%,(0.:(19 
 &,V<$
" 
! oo;g.557(:%/-9 &  __S"_5#\\!&&(3F 6Y'*6288:>>#&&=C+?R%+\\#%6
 $F!&%),6NN;Mr,R%.	-  JJsJ/#F!&%*&)%.	-  JJs\3$78 YY--@+/tzz$'R488FB/0668JJs5?$KL>0077:RR  S]D1%--%--&*	 

3tT :; YY,,#@+/tzz$'Rdhhy"56<<>dhhy"56<<>JJs5;M$NOJJs5;M$NO yy!8'BBJJs5;`$ab*733JJs5Xg[Pt;u$vw $K;gw"PP%--%??	 $$) --..i.@FFHCJJs5]3%;P$QRJJsT4L1
 YY00 "M\%8%8%:MMGG,"5"5"7GGDJJs4GTJKYY++@+/tzz$'Rtxxb1MTXXj"5MNTTVJJs5=$IJ dhhw9EXFsKTXXfb17R8#>
 

3tC,. QR YY..@+/tzz$'R%dhhw?@#F4P QRSXTXY *f!=>sCtxx)<=dsCDHHUI67<!$((;8c"defjgjk 88H%%$$[//'9<MMNwy)95<zIZ\abj\kmrs~mA)11)11*. 

3te <= YY33@+/tzz$'R5d;

3' YY--2/<@4;;w#78bFI6Hb1$++.BB==??#&99V-=-=-?#@.1#((*t2C.DPU]`]e]e]g"h!!#))GA)">?

34GTZO\eLf gh YY11@'+/tzz$'R-0JJ	.1LL
##%%&#'::i.A.A7.A.S#T %,,wu-.v -  IIh%J"xxH 

8S^4'j1B1B1D1N1N1PZ^*_`

3t- YYCC@**T*gt,,&iG!'400JJs5;K$LM"%<<$E!%..%dE2 % 

3tc'l CD YY,,@

4(eT**(-E!H2E!%..JJs5;L$MN"%88dE*

3t- YY00@

4(eT**(-E!H2E"%==dE*

3t- YY!!-0099S/0177<Ds"JT"JJJ

3u~ FG@+/tzz$'R$((9b1288:TXXh9:@@BJJs5;M$NO&&**,556FG.&D65
__S7_;rHHyRDSEDE <

3t4 89 YY,,JJs53LMNYY--F+/tzz$'RDHHWb1288:JJs5;O$PQ"iik,PP!!$!>*]:''GGLgRQ
 $/\1B%u.?LN $(dBQ2::Qv/PQ }}v}}4;;=c>i3&6JJs5;\$]^JJs4<S$TU YY00'@+/tzz$'R$((5"-.446488FI67==?#..1L"M"MJJs5;U$VW#yy{-]]#**,,JJs5;_$`aTZZ\*2A.1:3r&RF#+m;dBdT::& $$Jfc7T`=ajno	

3tv >? YY11.@&!
!JJs5<$HI-/
!JJs5;c$de1j1ll&&}f=((<BBD#(,X(=(=(D(D~(UXb(bet(t(//11'+zz-2I2ISZ2I2['\H$'Xr(B$C$I$I$KE '*Ul{++Qse9U+KqGGJ'&&C Lc4B!%"5$*3%."d!;,2%)	" !/4F8,!'!<!<!C!C!Mf!M ) .8-D-D6<<>&++J[J[J]DJJs4$>?		# YY66@);?tzz$++g"67Rxx+H~,,33nD}T

4$
7!??..099*E"&;xj)E"E/3AQGGa 3 3 5 ? ? AB"TF"MN B

3t- YY-- @)#;?tzz$++g"67R488FB/0668JJs5;$GH&!(^2299<PP
__((*334DE$$&&)33W3EH/5~~nh/WX/W!s1v/WGX"SWW)9!%LLG25d)c/4:-t!'*DWIZXZW[[ef
!VZ$$&&(22G2DG0G;"MM*fhop)*J&-kz&:Z&G'R\R]J^&^G#z1G>L#@:#MM))'G)D

3t @A YY00	@;?tzz$++g"67R>0077.H7RUff%%dT%B(C(A#xx	488E23FGHGGxjO, ) 

3t- YYAA0@'!
!JJs5<$HI6-/
!JJs5;P$QRTZ2
3ll&&}f=((<BBD&)Ul{,,auIe,LPRHHZ(77D M+dD)S"&-@&QTPUX[]aGb7=#N 05GH-%,]]%A%A%H%H%S7%S
 * 6@
C5P5Pz//1V`VeVeVkVkVmH"),,":":"A"A+#&%-!^ &,A" #B #K  %0$7$7$:$B$B$J$J$P$P$RMJJs4m$\]4
 YY88@*!
!JJs5<$HI6ll&&}f= N1188>IGS	t<%%))+445HI T3%=X%22:>

3t BC YY66@;?tzz$++g"67R $X 5 5 < <~ MPZ Z]l l$$**4$*G ''))#zz-*A*A7*A*STH+,r"XZ[Hd?(,WHW% D(]+2243FGt#)-hHX&)&,kk&7&7&9&C&C&E#((H5YZ)[fm(n

3t- YY11@)&#||//C(..s3D::<D{33#'K(8(9#:#@#@#E	 4
 "&x."7"7">">"ORY"YK%%dT%B,,.778NOB+l.A.A.CCkQTXXC 33C8C!E #
>>&9N>OSZZ'+'8'8':'Prd%>PH'2vbT8*5M'MH&*&6&6d&6&CG&%)(D%9Q$%GGG$4 &:(,! !+ 

3t-
 YY::@*;?tzz$++g"67R$((<45;;=$((5&1288:#H~44;;lJ\Y\__HNN4$N?&)2"#*#3#3#7#7#9#C#C#E"-D +77

4eAFQX 8  

3t3 ?@ YY!!":;;@htyy1778"&&RD1!45;;="&&034::<"&&1!45;;=4#H~44;;lJ\Y\__HNN4$N?!)fSE3%,@!@J**40

3t- YY116@+;?tzz$++g"67R$((<45;;=488FB/0668txx
B7=2>DDF #DHH_b$A$GR H N N P!$((=""="CDJJL!$((=""="CDJJL#xx;DH#H~44;;lJ\Y\__HNN4$N?!,!Q!Q!QJ 00<<ZRY<Z!I-99(W9U$!N2>>}W^>_"!L0<<[SZ<[ (; 6ID ''))!#'::i.A.A7.A.S#TD '//335??AG"5DK(/D%%,DN*5*T-QS9TD'#/;^,((DuUV)Wbi(j&)2#*'.'2'>h$,)6'2'@j&08B<QU8V8V\^'-x}}Y?W.X?W!qvv?W.X'Y#K .::

;U1MX_ ;  

3t- YY33>@';?tzz$++g"67Rtxx34::<JJs5;$GH-/
!JJs5;P$QR4$Z8
"$)$(N$9$9$@$@>$QT^$^ap$pM$++--#'::m.E.Ew.E.W#X*-hll8R.H*I*O*O*QP Ve5G&Pjln  !))  %//55<<"'--HI"8}q036 #	 =  #??1-55==CCE$NN,	$NN,	**4IF
+->>+;'CRRg~"))6388IVXY[L\C]*^_ 55"))$,$'HHYr"-=$>(+2b1A(B+ 
  ,< %j1DAq1uvs&CDMM!$ 2 

3t6 RS YY22U@+;?tzz$++g"67RTXXh34::<BBDTXXfb1288:TXXlB78>>@JJs5;$GH&&&**,556FG"++//1::?KH~,,33X%"_4x?GMM$M>0	CN7CR;P:QQTUE!d+clU^;tfBP  u_0070Kx'(!%(<!<J#G!((**#-#7#7#7#I3:??>S[3\"]3\a3q63\"]"&S\A-=a)P"P69$i#otDSzE14G 	)FwizZ\Y]]ghE!((**","6"6"6"H,7 '/bdk lA *1(1557*;e*CgaeeghFW*W '5 0#  (V  Y^  (^  ^G"--g-Hw& $~ 5	 AIOOD4O@$WIT2E&22Qrd#dV23FQX2YJJs5=OPVx;X$YZ\b X%"%go"6Kw&"%i%&7"8Kx'"%j/K,.=AUV??$$!)K!7AGtzz&*:*:*<=VXR8??G&,(3"*"3"3"7"7"9"C"C"EG;FC
 ))$**TVW*Xcj)k$,~$=	$++--*.**Y5H5HRY5H5Z*[K9<EX*YK&,(3"*"3"3"7"7"9"C"C"EN..~rB6J
 2:1B1B1F1F1H1R1R1TI.!,,TZZRW`a-bmt,u 

3tv; WX YY99"P;?tzz$++g"67Rtxx"56<<>DDFtxx
B78>>@txxb9:@@B>0077 $$(NMx'.9Axxzz"(0A)BHcmq"r",3AJMw&~-	9Axxzz"()>D_im"n",3AJMx'$(+?$?M ]%9%9%;%;+55wy5YZ^[^_GJJs4$-0-?-G-GD	SU-V07%9 : JJs4%.D%F G
 YY44F!
!JJs5<$HI+-JJs5;e$fgll&&}f=#||//M-w#+1&):(4 " &  \\&"\5 $

7<<>+@+@+I JI 6&y1*=a@PQRST`a


3tZ @A YY00@)<@

4;;w#78b),CC$*OO$7$7$9$C$C$Ej!&&tzz%eTU'Vah&i

3t- YY00!@+/tzz$'R$((5"-.446488FI67==?#..1L"M"MJJs5;U$VWTZZ\*2A.1:3r&RF#+m;dBdT::" $$Jfc7=S\`a	

3tv >?
 YY//<

3u7[ \]
@+/tzz$'RTXXh
;<txx
B78!::'Fq#b("34..fxP

3tkxci jk YY**<

3u7[ \]@+/tzz$'RDHHWb1288:TXXh34::<488FB/0668JJs5;O$PQ&+vtL	''	2

3th ?@
 YY55@zz$'DHHWb1288:JJs5<$HI(Teij!7}dT\^bdij#'d !  $$)JJs4<a$bcJJs56==;N;N;P$QR
 YY88
@zz$'txx
B78>>@JJs5?$KL),JJ&&tzz:x2HW\']^

3t BC YY.(-@ +/tzz$'R488FB/0668txx
B78>>@ 8&NNY'+$8E )nnS'+$8G ''1,#(<<#5#5#7) KK(;W^^L-.qwwqzD8JJs5;n$op::k400CJJ{H4U4UJJs5;e$fg 4!4dO4*3D6hZqQ	 $D"M--gi-HNNP--gi-HNNP$$)JJs4>PQUPVV|<}$~ BFB.BCJJs53$?@ YY88 JJs53ghiYY44
F/34::d+UB 78>>@	HLL2KLMSSU JJs5;$GH-/
!-"]15D " BB68mmq6H!2bJ!JJs5;Y$Z[-A%I||"))'2+2:,)?(9 " $  \\$\3u!&!4!4W!=J 4

3tJ ?@ YY00	@,666HSSUD::<D':;;!%C!3A!6!<!<!>	 V
 

3tV EF YY33F,666HSSUD::<D':;;!%C!3A!6!<!<!>	 V
 JJs5;N$OP %X'  

3tv >?
 YY++@+/tzz$'R488FB/0668JJs5;N$OP*733JJs5;K$LM#K;gtW"MM%--%??	 $$) --..i.@FFHCJJs5]3%;P$QRJJsT4L1 YY00@*733JJs5;K$LMK"II%--%--	 

3t- YY*$@0+/tzz$'R488FB/0668&&s+$$^\BJJL$$&JJ$$%ST!7 0 : :G : L W W Y#zz|??+@AA%)ZZQ%7%:%@%@%BF !Z txx
B78>>@RN&&s+$$^\BJJL$$&JJ$$%YZGzQXY!ZZ  8%(,0')  6'?  !#&,(:".
 " ) 	 __VR_8G!(J 9""3'  >  !13z?C

  "

  , YY-- F!
!S_s%:JJs5;W$XY#||//M]Q]<<++M2>D"KKMSSU"??','<e&G(^^'');;7#=

@P@PQSRS@TT&1	t<&H:Qwi)@@
&&z28LT&)*oLR\\^] $$)"J=!(,	 	

3t8 <= YY..FT\\--.>BCNTtzz$**//&"9"@"@"IJZ\!$((8R"89!$TXXk2%>!?!E"488Ir#:;ETBdhhtR01#26' /3AQGGDJJu5ADHI B

3t- YY..F;?tzz$++g"67Rdhhy"56<<>$((5"-.446JJs5;M$NO yy!6@@JJs5;O$PQ3&DDJJs5;b$cd-<{J	##%%"#zz)*=*=w*=*OP $'DMHHWd+$$TZZ5QR%S^e$f

3t- YY11F ;?tzz$++g"67Rdhhy"56<<>dhhy"56<<>(D1 "Pcii0Ew&O&OJJs5;O$PQSYwn<JJs5;O$PQSY&58KK=?YY[[

2<<#89bii,c3''#&3%BC~"c>S1QSL!S31Q3$'7)Oc"#-SG9_s*->#Qgq#>gii.djjU1MwW

3t- YY33F ;?tzz$++g"67Rdhhy"56<<>TXXgu56cii0Ew&O&OJJs5;O$PQSY&58MM=?YY[[

2<<#89b4%.ii.djjU1MwW

3t- YY++F ;?tzz$++g"67Rdhhy"56<<>$((5"-.446cii0Ew&O&OJJs5;O$PQSY3&FFJJs5;`$abdj->L	##%% $

9+>+>+>+P QWhhw-$$TZZ5QR%S^e$f

3t- YY33F ;?tzz$++g"67Rdhhy"56<<>dhhy"56<<>(D1 #Qcii0Ew&O&OJJs5;O$PQSYwo=JJs5;O$PQSY&7:MM=?YY[[

2<<#89bii,c3''#&3%BC~"c>S1QSL!S31Q3$'7)Oc"#-SG9_s*->#Qgq#>gii.djjU1MwW

3t- YY55F ;?tzz$++g"67Rdhhy"56<<>TXXgu56cii0Ew&O&OJJs5;O$PQSY&7:OO=?YY[[

2<<#89b4%.ii.djjU1MwW

3t- YY33F ;?tzz$++g"67Rdhhy"56<<>$((5"-.446ciiw&G&GJJs5;O$PQSY3&==JJs5;X$YZ\b-0AAKO	##%% $

9+>+>+>+P QWhhw-$$TZZ5QR%S^e$f

3t- YY;;F99-0AAKO	##%% $

9+>+>+>+P Q"$**,#M,$!Q!u*A,#MN	 JJs5;U$VWY_,,#fU,S$C),==3%tLAxxzz399vc!fXS-A#B % 		'*??BSS3T47TWsxxL&#sSVxY'+  - !#**SXX"6

3tC	NCPSH UV YY66F ;?tzz$++g"67Rdhhy"56<<>$((5"-.446ciiw&G&GJJs5;O$PQSY3&==JJs5;X$YZ\b-0DD{R	##%% $

9+>+>+>+P QWhhw-$$TZZ5QR%S^e$f

3t- YY99F ;?tzz$++g"67Rdhhy"56<<>dhhy"56<<>(D1Q ciiw&G&GJJs5;O$PQSYwk9JJs5;O$PQSY&)==@SS=?YY[[

2<<#89bii,c3''#&3%BC~"c>S1QSL!S31Q3$'7)Oc"#-SG9_s*->#Qgq#>gii.djjU1MwW

3t- YY;;F ;?tzz$++g"67Rdhhy"56<<>TXXgu56ciiw&G&GJJs5;O$PQSY&)==@UU=?YY[[

2<<#89b4%.ii.djjU1MwW

3t- YY>>F99-0DD{R	##%% $

9+>+>+>+P Q"$**,#M,$!Q!u*A,#MN	 JJs5;U$VWY_,,#fU,S$C),@@cU$<OAxxzz399vc!fXS-A#B % 		'*??BVV

   =3T47TWsxxL&#sSVxY'+  - !#**SXX"6

3tC	NCPSH UV YY22F ;?tzz$++g"67Rdhhy"56<<>$((5"-.446cii0H'&R&RJJs5;O$PQSY3&==JJs5;X$YZ\b-0@@;N	##%% $

9+>+>+>+P QWhhw-$$TZZ5QR%S^e$f

3t- YY::F99-0@@;N	##%% $

9+>+>+>+P Q"$**,#M,$!Q!u*A,#MN	 JJs5;U$VWY_,,#fU,S$C),<<#d|KAxxzz399vc!fXS-A#B % 		'/9<MM3T47TWsxxL&#sSVxY'+  - !#**SXX"6

3tC	NCPSH UV YY66F(-<{J	##%%"#zz)*=*=w*=*OP !2L @: MP[ [.=
JXU
##D4#@   ="# $(JJLLGS+l:y=MMC::<< k)c#hMwitDT4T0UV'1,c#hJG9DAQ4Q0RS$) %1 

3t/Ua bc
 YY//F ;?tzz$++g"67Rdhhw"56<<>dhhy"56<<>dhhu"56<<>CIIou$E$EJJs5;S$TUW]cii&I&IJJs5;O$PQSY3&==JJs5;[$\]_e-5'0@@	t<%3	##%% $

9+>+>+>+P QW$/$$TZZ5QR%S^e$f

3t-
 YY77FDD<@

4;;w#78bDHHWb1288:CIIou$E$EJJs5;S$TUW]-5'0@@	%3	##%% $

9+>+>+>+P Q"$**,#M,$!Q!u*A,#MN	 JJs5;U$VWY_,,#fU,S$C!se4L0Axxzz399vc!fXS-A#B % 		+e3dT: 113T47TWsxxL&#sSVxY'+  - !#**SXX"6

3tC	NCPSH UV
 YY00@zz$'!$::tzz$quMN

3t-
 YY11@+/tzz$'R $X 5 5 < <?W Wzz$U;-w?1GGD4K( @

3t-
 YY77@zz$' N114PP	$$TZZ5QR%S^e$f

3tc)n EF YYDD@zz$'xx+JJs5<$HI6 LL26>>sCHPPQUWYZ	(i[8O+PP##DJJt%PQ$R]d#e

3t-
 YY--@zz$'((9b1((9b1"-eJJs5;[$\]FgFFFJJs5;U$VW!:D'J#' $!7w7-gtU<#'d
 $$)JJsT4L1JJs56==;N;N;P$QR YY88?@.zz$' HH["5;;=CCE	 HHY0GHNNP 	(9(9#b(A(I(I(K(KJJs5;W$XY[a"//Wj&8&8::?%'  JJs5;Y$Z[]c@
D	3'[,8.5eW,=Oabmm&VWcVd$eovmw]]3]3t JJtyy{3E 4yy++599X3F3FJJs5;P$QRTZ/!,T2J:,Vbclbmm|}mmGWm=]]3]3t#zz$))+6H 4||I..JJs5;W$XY[a",,x4882FJJ9VXY'.Hw!aeeJ6GAwH$+_GqquuZ/@Qz]V^E^G_QX' JKX&::x)U1C&DELLNmmG(GTYmZ]]3]3t#zz$))+6H 4||I..#<<"5DJJs5UY47;;y;Q_s$tuw}::#X"+,=>#A'  68	 
 HyP\]mmG(GTZm[#sB74#'::diik#: 8%\\)U;F 

3tRX YZ YY11*@<<;?tzz$++g"67R((9-5)'++d*;*ntxx?Q*nW[\`\f\f\h\l\l[mUno&v.$x/
   = HH^4U8OUSU	 JJs5;O$PQ&00;'.8
&&{3"hh}5U,9OUSU" #nK%4&&{W&E'+5
#J
;1&':{[Y^^-45$"("(&.2  n'   n8L1MX[\fXgx{  }H  yI  Y_  `l  Ym   n*01E*F#G_+.z?Zdghsdtu #>&#94@

3 }?64#@ }.Tjkqjrr{R| }~ YY33@zz$'488FB/0668TXXeQ/0TXXeQ/0dhhy"56<<>"==-a0668D)D!8saxJJs5;U$VWTZZ\*2A."*I":D"3#*t%''GFO  #OOF+ #

3tv >? YY77@zz$'R0 HH["5	Y!''t'D,U0@0@CT0TUH*''

$)%.$'LL$4$4$6$@$@$B4 %*!	)5 6
 JJsT4L1JJs5;K$LM YY22@)zz$';'*FF$*OO$7$7$9$C$C$E[!tzz$quMX_`88G$$C"&((:r":&^_f^gg}  C  DO  P  ~Q  %R	'(?Atv  A 

3t- YY33@# }}X.*<

3t?P(QR $^ +5Ih'(;If%,-Ij))+Ig& $ $$,<K>Z^_	

3ty AB YY44	@+/tzz$'R;'*NN'$(MM$5$5$7$A$A$C[!#sW5GGDJJt%@4GH 6

3t- YY::@+/tzz$'R(B/$!~~h/:=

3t?P(QR %_ ,6Jx()<Jv&-.Jz**,Jw'+1Jx( % $$,=[RXDYbfg	

3ty AB YY//
@iik   +tC5 IJL%--%--	 

3t4J KL YY++(@//;?tzz$++g"67RTXXfb1288:TXXfb12TXXfb1288:TXXj"56<<>TXXmS9:@@BIc4rJJs5;a$bcHH[),<<HH[),<<# ,;M?a!((*63q6?MJJs5=MgY;W$XY((*//0F0F0HIDtdRQST}}	JJv& (AHHSVQVV,JJqvv& ) 

ciik

3t => YY--@;?tzz$++g"67R*114JJ$!%)r!:!%+r!:!$UZZ\D%8!9
 ''

7WX(Ydk'l

3t- YY22@;?tzz$++g"67R(B/!'*BB	$$TZZ$bggi$./1 !&&' ( 

3tv >? YY00$@;?tzz$++g"67R--//JJs5>$JK(B/!'*BB	rwwy4/0$$TZZ$"21 !&	&' (
 MM!'&"($,%(^"6#K	07799&;&E&Ew&E&WG%)%5%5%7%B%B7%KFC'T#&#:7:wws|K$4 (U 69WWY5GK	2 044S74Kq

;U Kd RS L

3tv >? YY66#@--//JJs5>$JK;?tzz$++g"67RDHHUO,DHHUO,!+-,"!$RWWY $ 4!XXg."hhx0"hhx0H4H#&rwwy4'7#8!<SE3%H 0;;FC""4::e%PQ#R]d"e 56 %m 4(
 ,00w0G1GGDJJ{G$NO H

3t ?@ YY..@;?tzz$++g"67R$((4,-335dhhy"56<<>JJs5=$IJ&--//&#'::.A.K.KU\.K.]#^ !(#..tzz(QV_`/als.t

3t- YY11@;?tzz$++g"67R$((4,-335JJs5=$IJ)0022&#'::.D.N.NX_.N.`#a !%&11$**XTYbc2dov1w

3t- YY22	@;?tzz$++g"67RDHHWb1288:JJs5;K$LMu%

3t- YY//@;?tzz$++g"67R$((5"-.446!$((<">?
JJs5>$JKV77%++-(!, .1#_a'bK$ !=S*m7\eijppr

3ts ;< YY00@BB;?tzz$++g"67Rdhhy"56<<>JJs5;M$NOQW"*G{^de$U4>>&+A*BC[[b[1Q!ZZ1F 2

3tv >? YY44.@;?tzz$++g"67R88M**&&,,TD,I**4::y$}BU6V+WX88M**txx/F/Faaa fgD}4N{m[g%hrstQ  .D!!% '**. 0**.((=#*F)G H..2hh}b.I-J K..2hh}b.I-J K1 26b!: & #nn.G"g-"&((+;U[[]G[_[f[f("g5(OOG,JJ RST

3t- YY11@99;?tzz$++g"67R488FB/0668JJs5?$KLf&,,.)"1- .148ac'dK$ !$<C;W[\bbd

3ts ;< YY//@;?tzz$++g"67R!$((8R"89??A!$((=""=>DDF!$((8R"89??AkJJs5;]$^_JJs5;L$MN {{JJs5;h$ijTZZ\*2A..;4u<$E"(2CVae'GFO 
   (;'-vv{&K(,S>CCH57

3tv >? YY!!";<<YYs#<=>?EEcJFW$0;GFOH-%00GRW`a1bc  JJsT4L)YY//@$'??}}JJs5;R$ST!''^^S[1%??:3D3DK(
 ))#)6Qjjj;__)

3r#ef+T__ ]^ YY00$x/J"55F}}zz&"2"2"459dkkm99

3ts4y\` ab

3uQRT UVYY,,3zz$'77yy(D,D[//&8;LLMww64::d#34#'dBn:d+33nV=mn  
 ??a't{{/@/@/B/BJJsWdkk.Y=Y$Z[JJsDJJt{{$;< YY66@/34::d+",,{B7,/KK##DJJwUST$UV

3tc'l CD YY11@/34::d+hll:r:;AAC,/FFOWO`O`4::h&8&8'&8&JKfhX%3=hv>NPT3U3Ux/[]H,4) Wd3!(,,ub"9:@@BG-4I) Wd3##DJJxeTU$VW03OOR^ReReRgRg$**\%;%;W%;%MNmo'||GR8/9,/M/M|T`SaL(WG-CNN7+,.7g3ENN7+''

7WX(YZ

3t- YY==-%@03OOR^ReReRgRg$**\%;%;W%;%MNmo
#3#=#=w#=#O#Z#Z#\")--/"--.CDD)0sA)>q)A)G)G)IJ $] "#(g7;$HB!#!2J 'H	K&.&6&6B8*M%1:$>#+ '7 '
 !((b(Ax0 !( ''

2E(JK 14K K ''))#zz-*A*A7*A*STH$+ Xt4 %,!,,TZZu]^-_`

3t6 RS YY!!">??GG=@99S)E%F%GHNNsS $4$>$>$>$P$[$[$]#+>>#3#../DEE*2..a*@*C*I*I*KK %^ #$..)h8<4IC"%**"2"2"4K&7:V&V#`s`z`z`|`|,?,I,ISZ,I,[!\  CE!25H!H"~"D\
* *1 1 1> !!!FLLN

3tJa bc YY22@+;?tzz$++g"67Rhhub)//1#.."8"8JJs5;s$tu*11MADTTH''g'>JJ#%;6FsD* (,	   ,%||F3O7OH%,,}<?PPC [%7%7-%GJ[%[!\^abELL(CH!53szz?).u&|D)9)A)A&|6K{&| ! ~ JJsT4L1 YY33(@ZZZ;?tzz$++g"67R HHZ4::< HH["5;;=	 !kl#h.yJJs5;Z$[\!**JJs5=RS[R\;]$^_&::JJs5=TU^T_;`$ab+%||F3O7OH%,,}<?WWC**,BUZ-55 U!#SUC!::!3s8S]IF'+$ 2 2] BC & D
 "%ejjlR&74%?!@J!+w'+zz$++2C2C2E'FH&.ll7DKK<M<M<OPTPU<V<nZn&oG 

3uw(GH!%DKK,=,=,?!@

3tvU_(`a YY00@);?tzz$++g"67R88J3 HH["5	yJJs5;Z$[\)00=@CYYG #Gw 6I!H~~''(,

73D3Dg3D3V(WXx/-/*!$TXXgq%9!:!$TXXgr%:!;#'88Ir#:5HX&y1
 &&tzz(WX'Ydk&lJJsT4L1 YY==8@ccc;?tzz$++g"67R(B/JJs5>$JK(//-?F!'&fXU3C!CH!''!1vhe4D!DJ#??,,

3u?S(TU $

8+=+=+? @FPFWFWFYFY

:+?+?+A B_a*,$yy9QSWWWb=QDJ$5$5$7$7+223t9="'))L""=%gt44&*7>>+;&<G"(6T"UB!rbffY&7&7DI<O<V<V<X<X / 6 6s2i=7I J #V  / JJs5C_,`a F)-2fVe2f)fJ!. /9\ :-!- # #*"<"<%(X_ #= #aCIIf-syy{$'$8E1 1 #MMCHH;W[M\bbd JJs4%S^,_` YY99S@55\\%%nb9%+)::dkk'&:;D HHZ=E#xx3H!%!9Ju+,,224>C"..*..s3C"&))+0F"FK%%dT%B&C56D$$Z0T"446'+'7'7'?H %		6?Hf+:OT+.t9gs8}+N :> !* !?A  !||q0X__5F5F $t <'/ $FFII!$$4+.+=+=d+C.0#&*;#;>@d2SK'/}}'=3;3C3CE3J (d Bk B "0 G , / 5I1#;#=$0'/	':H!%!= JJs4&AQ8@8L;?-A B (1"~H,/I,4,1,/,@	3HY/ 5X> JJs4T8@;@-B C% 2* ]]#8"=(2"JJs5;f$gh!xx{005<<>H!%J'E $

58+; <&d2$+/::k1+E("++G44&-crlG)W4#)==1G#QD#(,

1(<(<WY(<(W)0J! != ")

3u?Y(Z["5k00668BF&nn.223B7&*iik4J&J#))$)F*uSE]:((4X"&88 :+/+;+;F+C$)IIvRX/>QU/24y'3x=/R >B %. %C $%<<1#49J9J$(KK4K$@+3D!$(J!J M M%(XXd^t/2/A/A$/GH24K'*.?'?BDRV6W+3==E+A7?7G7G7NH$,MM$$F+$F &4^ "K 3$3D$9	5'?'AH(H4+3I+>%)[[D[%A $

3tXfEU<DZ<P?C1E !F ,5Sb>03D	080503K4D4D4F0G	7" 3 !9 B $

3tSY<D?D1F !G% 650 YY00@66;?tzz$++g"67R

-.a0@0D0DRa0H/IJ"5::<$#67=dC<T8LuJJs55h$WX&>x&H#),T6<R"9&/?#?$0 ( ]B 
 #8.>#>D

3$ ( ]&*!  YY776@88;?tzz$++g"67RFKKM 231Y__5F5J5J2A5N4OP$++m;!M1td;"6;;=4#7888G,*4Xt*D*Dh$)f)i) h) #dhh~}&M	)
 #o) dhhw&;) dhhx&<) "dhh}b&A) dhhw&?) !c$((<*C&D) dhhy&&A) dhhvv&>) $dhh&F) !dhh|SyAX[hAh=i&j) dhhvr&:)  dhhx&<!)" dhhx&F#)$ '3&A')( %'))   )1( ) q!t )  * *;CL"&((:"6">$J"^3	t<xu--99JJ(4"= i   e	5
 % : & vhe,,88JJs15A$ 9 &AA#&>>FMM8#6#6FX"N)0 " R 

3tv YZ YY!!"DEE&@%3'I#J#KLRRSVW((00JJs5;L$MN$++m;!M1vhe4DD#n4&7GG
((JJs5;V$WXjj!3!3W!3!EF;?tzz$++g"67R(,$%%()=%>M"%)XXm%<%HM"##DJJs15$Q\c#d$$&&!%J,@,@',@,R!S7`#&}#5 
 !!''t'D%%djjqu&U`g%hAA#&>>FMM8#6#6FX"N)0 " R 

3tvIb cd YY!!"<==@3'A#B#CDJJ3O$++m;"--f5	#	}vNTZS[[`Qaa#~PV\U]]bScc
$$&&!ZZ
(<(<(>?66-00BFF;O4P4PTVTZTZ[gThThlnlrlr  tG  mH  mH JJs5Cb,cd" mH
 ??$$(9W^^F=S$$&&
(9(9(;W^^G=TJJs5?$KL

3t @A YY88@(;?tzz$++g"67R&"-2	4<//12dooi88T&\=P=P=R=RIIvv./JJsT4L1JJs5;M$NO YY55@;?tzz$++g"67R ''-7/IdjjEBWU

3t- YY,,2@'55JJs5;o$pqt955JJs5=TUkmqUqTrrv;w$xy"9";%JJs5=RScRddo;p$qr$;?tzz$++g"67R7&.Bhdhhqk1hBJJs5=NtyyY`OaNb;c$de88F#+JJJJs5;g$hi!$((9b"9:44F||~):):)<<

3uAeflem?n(op 5 '((4.us||/?/?/A/J/J?/[.\\]^c^i^i^k^o^oprqr^s]t,u! HHVY7 L g/5*+B,BC $X >((4)<)<)>)H)H)JS)PQ#&<<#6#6#8#B#B#Ds#J
 %++h6d+<<++-66GH'RWX%++DJJtATY,Zel+m+-

3t7Ya bc
 YY//0@44#||//C"8n33::=OOR[[!!$!>(..s3D::<D{33#'8>>#3#:#:#<	 4
  JJs5;S$TU

7+#
(/GAt4'%+2<<:^hik^l
3Br|+}L%'
"'/47II&<dC'(wwqz'8'8'8'SH&*G  )D0W TS[ "))$/!  0" ,"6#*<<
#;L<#7JJs5;[$\]FF#6XF	&2$$\2

3tS]PY Z[ YY//@"		  CX(=(=(D(D$EF9+/tzz$'RTXXfb1288:)95 ABJJs5;N$OP++F8+L

3' YY66@"		  CX(=(=(D(D$EF9++-

3' YY::@"		  CX(=(=(D(D$EF9//1

3'
 YY77	@+/tzz$'Rxxr*!#t,,CJJs5;S$TU8B
//4

3t >? YY22@:D*M446!	

3tY GH YY55@+/tzz$'R:,88>GJJs4>;T;T;V$WXJJs5;W$XY YY33@:D*.446"

3t AB YY44??F91E

3t5L MN YY,,1@.2$**T*dhhy"56<<> ,!;<BBDL
JJs5;Q$RS"8n33::=MMP[["))++JJs5;U$VW("K(8'BJJz*1 1 #!xxz5 5 $$N4H	q!zz||#/#:#:#<LBS

3t=Y(Z[

3us4Cy?[O(\] JJs49N|$}~
 YY22/@UUU.2$**T*dhhw34::<dhh~x@AJJs5;O$PQ++O<<d ,  %'  JJs5;_$`a***"';T[\]&  68	 
 kk907y.ASef! " 
 [[b[1T!ZZ		4F 2  "JJx4Dxx'94!%)R!8A uuV}='(uuVR'8./eeM2.F "9 5 

7B/

3 #.s#3#ZZ4#)::dB#7(-		.!(DPUPYPYZiklPmn!  YY447@AA.2$**T*dhhy"56<<>dhh'=rBCIIKStdhhx45;;=JJs5;Q$RS++O<<d ,  %'  JJs5;_$`a)6I;BL!7839L0**\299;ll907y.ASef! # 
 \\#r\2d!ZZ		4F 3"JJx4Dxx'94!%)R!8A uuV}='(uuVR'8 "9 5
 

7B/ **T2.:$'JJ%%aT(^-B-B-I-IL\-\)]^;;*xI_ks|  N  sO  PG*I(\i  AH  Ud  pw  x|  y|  p}  q~  F!001F1F1H'R!001F1F1H&Q

3 #*#ZZ4(-		.!(DPUPYPYZiklPmn*/		.!0Lz0Y\a\e\efuwx\y  }F  ]F  1F  HI  +J!  JJsWk23As !    3

3#a& 1223  3

3#a& 1223  3

3#a& 1223B 76  3

3#a& 1223  3

3#a& 1223D 76  3

3#a& 1223X! 76  3

3#a& 1223p 65 % R37S%Q
R"  3

3#a& 1223"  @

3us1v >??@J ,, H

3u~ FG @

3us1v >??@(  @

3us1v >??@,  @

3us1v >??@  @

3us1v >??@ !D  2

34 0112 % &#%&   @

3us1v >??@"  @

3us1v >??@  @

3us1v >??@  @

3us1v >??@$ <;  @

3us1v >??@D ,, f#yy{-]]

3|':':'<Ic de F

3us1vds| DEEFT  @

3us1v >??@4 % # "# LK ) % 		#$  @

3us1v >??@ BA  @

3us1v >??@  Y&  @

3us1v >??@ )(  @

3us1v >??@$ ML
 *)8 %*d* 4$*d* @

3us1v >??@"  @

3us1v >??@.  @

3us1v >??@: &:%9
  @

3us1v >??@0  @

3us1v >??@  @

3us1v >??@<  ) ! !* /Y  @

3us1v >??@. ! )&(O)T  @

3us1v >??@> #^l %   @

3us1v >??@J  P

3uus1v NOOP4 65  F

3us1vds| DEEF  @

3us1v >??@J  @

3us1v >??@"  @

3us1v >??@$  @

3us1v >??@,  @

3us1v >??@  @

3us1v >??@\ ,, [

3u7X YZ @

3us1v >??@P 43  F

3us1vds| DEEF  @

3t >??@4  F

3us1vds| DEEF2 ,, H

3u~ FG @

3us1v >??@   @

3us1v >??@4 ! : 98  &&s+$$^\BJJL$$&JJ$$TZZus1vds|0T%U%\%\%^__  V  F

3us1vds| DEEF BA  F

3us1vds| DEEF2 % "!"  F

3us1vds| DEEF0 2R
 ?
  F

3us1vds| DEEF"  F

3us1vds| DEEF" %*d*
  F

3us1vds| DEEF, 2R
 ?
  F

3us1vds| DEEF"  F

3us1vds| DEEF" %*d*
  F

3us1vds| DEEF %*d*#M  F

3us1vds| DEEF" %*d*
  F

3us1vds| DEEF0 2R
 ?
  F

3us1vds| DEEF"  F

3us1vds| DEEF %*d*#M  F

3us1vds| DEEF" %*d*
  F

3us1vds| DEEF %*d*#M  F

3us1vds| DEEF % "!"&  F

3us1vds| DEEF0 %*d*
  F

3us1vds| DEEF$ %*d*#M   F

3us1vds| DEEF  @

3us1v >??@ @?  @

3us1v >??@  @

3us1v >??@  @

3us1v >??@<  @

3us1v >??@. 43 43 I_ 43 87 ! #"FF# 00 X

3u7U VW @

3us1v >??@Z  @

3us1v >??@& W #]  @

3us1v >??@(  @

3us1v >??@  %   @

3us1v >??@
 $^  @

3us1v >??@ 65  @

3us1v >??@ %_  @

3us1v >??@  @

3us1v >??@& N  

6*

6*$ 

3uAfgmfnnst}s~?  )A  B

ciik	  @

3us1v >??@   @

3us1v >??@  @

3us1v >??@D % KK  @

3us1v >??@F HG  @

3us1v >??@ % &#%&
  @

3us1v >??@ % &#%&
  @

3us1v >??@  @

3us1v >??@ ![  @

3us1v >??@ 21  @

3us1v >??@$ % >  @

3us1v >??@ ![  @

3us1v >??@( W  @

3us1v >??@
 * ,, b

3u5M]_ `a @

3us1v >??@8  3

3#a& 1223  @

3us1v >??@D  @

3us1v >??@ ! " % KXC&IJJK  @

3us1v >??@ ! h  @

3us1v >??@:  @

3us1v >??@L  ) w&*kk&7&7&9$%&@&vDKKDUDUDWX\X]D^&vbvGw l+:: L

3u7I JK @

3us1v >??@$  ).$.  @

3us1v >??@v  @

3us1v >??@B "0 % T FykRSST $-2d2 21* ^ &4^  ) X "$J9+"VWWX (1 6$ 6 65*  @

3us1v >??@:  @

3us1v >??@ P !   @

3us1v >??@4 %0be0 !   @

3us1v >??@$ %   @

3us1v >??@   @

3us1v >??@  @

3us1v >??@* C@  @

3us1v >??@j  @

3us1v >??@   @

3us1v >??@  @

3us1v >??@  @

3us1v >??@  @

3us1v >??@  @

3us1v >??@  @

3us1v >??@  @

3us1v >??@  F
F-JJV6*499;-G-	 
 #ll4<<  A JJs49b$cd  FJJs53s8$DEEFF~  @

3us1v >??@> 21(  @

3us1v >??@@ 326  @

3us1v >??@s,&  =Lh$ $Lh$ 7ALh$ 8B,Lh6 6ALi*  ALj A1Lk$ =A"Lk$  Lk?%Lk$ 6BLl BLm A%Lm  Lm#8Lm .B9Ln) (ALn) /Ln
 Ln
ALn)  Ln6ALn) A'Lp %Lp ,A+Lp  Lo7=Lp 5Lo/ 3Lp :%Lp 1A$Lp9 A:Lp9 #BLq. 1Lq. 0Lq. ?*Lq. *BLq. =Lq. A=Ls A3Ls  E)Lt <Lt7 *A?Lu4 A)Lu, BA,Lu4 DALw E#Lv E71Lw F($Lv2GA5Lw IALw9 J,!Lw9 K.Lw9 LA#Lx. M5)Lx. N0A"Ly# RBLz* TALz* U:LzVLz* W,A$L{ YCL{ \L{ ]B#L}' _%AL}' `(BL}' c#M@ c/'M@ dAM@ e6BL~ h"M@ h)L~/iM@ iL# iALj(AL# lL l0B?MA o/AMAp0MA q A<MB sBMB u)MBu>C3MB zBMC |8MC|?MC }/#ME+ ~'ME+ ~;A9ME+ @4MDAME+ AME  A(AMDB3B?ME  E2MD0 F#MF  F?B5MF  JE"MG O>A MH Q"C.MH UAMH V#MH
V5"MH W+D;MI ]
D1MJ bI&MK k6#MJ; lCMK o4MKp
AMK q$A8ML s'ML tML tBML v'EML {?AML }2CMM$ AD*MM$ E7MMFD?MM$ KA,MM$ L9F!MM SMM$ TH
MN \MN \<MO" ](MO" ^A2MO" _74MO`+6MO" a4B MP d(B#MQ gBMQ jB*MR m1B9MR: p+6MR: q4AMS/ sA!MS/ t4-MS/ u4AMT$ wAMT$ x.EMU }2AMU ~9B1MU A+*MU CBMW E$A3MW GA	MW H! MV9IMW I2AMX KAMX LAMX1 M/AMX1 N5MX1 O%A%MY) Q'MY) Q3BMY) TMY) T.'M[ UAM[ V?B;M\  Y;M\  ZAM[= [(M[= [8B M\  ^A#M\  _<M\`B	M\  b*.M_# cF M_# i-C9M`. m&)M`nM`. n?BMa: q2Ma: r$Ma: r6%Ma: s#Ma' s?AMa: u+CMb= x=#Mb= y!BMb= {2	Mb3{?Mb3|"Mb= |'	Mb8|4Mb8|:AMb= ~*B.Mc6 AB$Mc6 DB:Me  G$Me  G1%Me  H#Md/ H9AMe  J%CMf M7#Mf NBMf P,	Me9P9Me9P?"Mf Q!	Me>Q.Me>Q4AMf S$B.Mf< VB$Mf< YB:Mh \$Mh \+%Mh ]#Mg5 ]3AMh _.Mi `#Mh? `0Mi a	Mi
aMi
a!'Mi b	A Mi cCMi f0B:Mj  i+$Mj  j%Mj  j5#Mj kAMj  mCMk# p$Mk# p<BMk# s	MksMks "Mk# t	MktMktAMk# vB.Ml x4B$Ml {,.Mm, |#Mm |=Mm, }Mm&
}(Mm&
}.'Mm, ~A Mm, C)Mm, CB:Mn6 F$Mn6 F7%Mn6 G#Mn% G?AMn6 I+.Mp J#Mo/ J<Mp KMp 
K'Mp 
K-'Mp LA Mp MCMp P<*Mq Q'#Mp? R
CMq U!AMq WC'Mr Z05Mr [&$Mr \>Mr ]	#Mr ],AMr _BMs, a6-Ms, b##Ms cMs, cMs&
c1Ms&
c7'Ms, d9Ms, eC!Ms, iAMt% j<A)Mu, l%Mul:Mu, m)A8Mv! o4AMw p=A=Mw sA6Mx u/Mx u5A2Mx w(-Mx x)B6Mz2 { AMz2 |5AMz2 ~(My ~)AMz2 8AMz2 @;(MyA#6Mz2 B<Mz2 CMy$C5My$C;Mz2 DMy)D"	My)D/My)D5BMz2 F<(My.G$A(Mz2 IAMz2 J#Mz J5(Mz KMz K:Mz2 L'D+M| QE:M| W!DM}, [)(M}, \M}\.M}, \=M}]M}, ^C0M~! a7M~! b BM3 d69M e/M3 fN@: f4N@(gN@: g,N@(hAN@: i)A.NB k)NA/l NB l0:NC m*4NB6nNC n'8NB6oANC qA/NC= sD8NG x :NG x:ND2yND2y&&NG zA$NG {2ND7 |BNG ~$CNH A:B/NH; D=ANJ FB#NJ H=A(NI0 J)4NI0 KNJ K2*NJLNJ M-NK M=FNK S>*NKT(NK UB NL" W;NL" X(NL Y ANL" ZA5NM* \NM* \+(NM ]ANM* ^)A5NN ` NN aBNO& c&/NO& dNOd)ANO& fBNP- hANP- i%NPi:NP- j,C%NQ3 n5NQ" oC NQ3 r;BNR: t=%NR: u"NR(u7A	NR: wCNT z*NT {	&NT {0=NT |-NS/}ANT *A	NT6A"8NU BB?NU H+DNV+ L21NV+ M6BNW PINX Z
ANZ [ANY	 \)*NY	 ]ANZ ^ ANY_$CNZ c$,N[ dAN[ e$*N[ fC7N[ jBN\ l%D N\ qB>N^$ t0N^$ u	"N^$ u,C.N^$ yA+N] {N^$ {AN^$ |8A?N` ~8AN` :$N` @BN` C	A2Na D<ANa FD6Na KNa K/!Na LANa MCNa P0D.Ne UBNb W.Ne W/$Nb XA'NbY:Nb ZNe ZNcZ9Nc[	BNc]Ne ]<Ne ^BNe `,A Ne bBNe d%BNc; f4Ne f5$Nc; gA'Nc)i Nc; iNe i#Nd:i?Nd)jBNd:lNe l1CNf  pBNf  rINg {9Nf5|Nf5|B(Ng ~;ANf; @Ng AANh& B'ANh& DCNh& G"%Nh HANh& I'ANh J<Nh& K8BNi, NBNi P/BNi, SNi, S1CNj! WNj! W4B Nk Z2Nl Z;7Nl [39Nl \->Nl ]+Nl^	Nl^4Nl _-Nl _2A
Nl a Nl aGNl h6BNm kANm lC1Nm pANm q)ANm sCNm: v+&Nm: w$A9Nn/ y0A9No$ {<A'Np }$?Np ~6=Nq @A/Nr A6Nr B =Nr8 C?(Ns- D;BNv GANv H/C2Nv L"#Nv MNv M4BNw& PANw& QA"Nw& S 'NwS'9Nw& T$-Nw& UB,Nw& XCNx- [%ANx- \6A<Nx- ^2'Nx_6Nx- `-Nx- aGNx- h$
Lh3h2Lh3h6
Li'i Li"i"Li'i*
Lji4LjjLjj
Lkj(Lk
k
Lkk
Lk!kLk$ k$
Llk.LllLll
Lm	l"LmmLm	m
LmmLm m
Lnm(Ln
n
LnnLn) n
Ln&n!Ln) n)
Lon3LooLoo
Lo,o'Lp o/Lpo>Lp pLppLp p
Lp6pLp1p1Lp6p9
Lq+qLq&q&Lq+q.)Ls
r	Ls
r"LssLs
s
Ls?sLs:s:Ls?t
Lt4tLt/t/Lt4t7
Lu)uLu$u$Lu)u,Lu1u.Lu4 u4
Lvu>LvvLvvLv/v+Lw v.Lv/v/Lw v2
Lwv<Lw w
Lw6wLw1w1Lw6w9
Lx+xLx&x&Lx+x.
Ly x8LyyLy y#
Lzy-LzzLzz
Lz'z"Lz* z*
L{z4L{{L{{AL}$|0	L}$|9!L}}L}$}'
L~}1L~~L~~L~,~(M@ ~+L~,~,M@ ~/
L~>~9M@ 
LL# 
L M@ L  M@ #M@%L<;M@<
M@	@M@@M@	@	M@@M@ @
MA@M@<@<MAA
MAAMA A
MBA MBBMBBMB B
MCBMB=B=MCC
MCCMC C
MD	C!MDDMD	D
MDDME+ D
MD-D(ME  D0
MD=D:ME+ D<MD=D=ME+ E ME(EMEEME(E
ME%E"ME(E$ME%E%ME(E(ME+ E+
MFE5MFFMFF 
MGF*MGGMGG
MHGMHHMHH

MH	HMH H
MIH&MI	I	MII
MJIMI>I>MJJ
MJ8JMJ3J3MJ8J;
MK	KMK KMK	K	MK K
MLKMK>K>MLLMLLML LMLLML L
MML#MMMMMMMM$ M
MM!MMM$ M MM!M!MM$ M$
MNM.MNNMNN
MON# MOOMOO
MOOMO" O"
MPO,"MPPMPP
MQP%MQQMQQ
MRQMQ=Q=MRR
MR7RMR2R2MR7R:
MS,SMS'S'MS,S/
MT!S9MTTMT!T$
MUT.MUUMUU*MV6V	MV6VMV1V1MV6V9
MWWMW W
MXW"MW<W<MXX
MX.XMX)X)MX.X1
MY&X;!MY!Y!MY&Y))M[Z	M[ZM[ [ M[[
M[:[M[5[5M[:[=
M\\M\  \
M\\M\  \
M\\M\  \ 
M_ \+BM__
M__M__M__M__M_ _#
M`_-"M``M``
M`+`&M`. `.
Ma$`8"MaaMa$a'Ma7a3Ma: a6Ma7a7Ma: a:
Mb0b"Mb+b+Mb0b3
Mb= b=
Mc3c"Mc.c.Mc3c6
Md,d "Md'd'Md,d/
Md=d9Me  d<Md=d=Me  e 
Me6e
"Me1e1Me6e9
Mf f
Mf9f"Mf4f4Mf9f<
Mg2g"Mg-g-Mg2g5
Mhg?Mh hMhhMh h
Mh<h"Mh7h7Mh<h?
Mii	Mi iMii	Mi i
Mji "MjjMjj
MjjMj  jMjjMj  j 
Mkj*"MkkMkk
Mk# k#
Mlk-"MllMll
Mml&"MmmMmm
Mm#mMm, m"Mm#m#	Mm, m,
Mn"m6"MnnMn"n%
Mn3n/Mn6 n2Mn3n3Mn6 n6
Mo,o "Mo'o'Mo,o/
Mo=o9Mp o<Mo=o=	Mp p
Mp<p"Mp7p7Mp<p?MqqMq qMqqMq q
Mrq"MrrMrr
MrrMr rMrrMr r
Msr&"MssMss
Ms#sMs, s"Ms#s#	Ms, s,
Mt"s6"MttMt"t%
Mut/MuuMuu
Mu)u$Mu, u,
Mvu6MvvMvv!
Mwv+MwwMww
Mxw MxxMxx
Mx=xMx8x8Mx=y 
Myy
Mz2 y
My!yMz2 y.
My=y8Mz2 z 
Mzz
Mz zMz/zMz(z Mz2 z(Mz/z/Mz2 z2+M|{	M|{(M||M||
M}|M} } M}}
M}}M}, }
M})}$M}, },
M~}6M~~M~~!
M~+MMM0!M3 )M00M3 3
N@%=N@ @ N@%@(
N@7@2N@: @:
NA,ANA'A'NA,A/
NA>A9NB B
NB3BNB.B.NB3B6
NCC NC C
NC:CNC5C5NC:C=
ND/DND*D*ND/D2NG D7NGE'NE-E*NG E-NG
E8ANGF;NGGNG GNG
G
NGGNG G
NHGNG>G>NHH
NH8HNH3H3NH8H;
NI-INI(I(NI-I0
NI>I:NJ I=NI>I>NJ J
NJJNJ J
NKJNK K NKK
NKKNK K
NLK$NLLNLLNLLNL" LNLLNL" L"
NML,NMMNMMNM'M#NM* M&NM'M'NM* M*
NNM4NNNNNN
NON)NOONOO
NO#ONO& O&
NPO0NPPNPP
NP*P%NP- P-
NQP7NQQNQQ"
NQ0Q,NQ3 Q/NQ0Q0NQ3 Q3
NR%Q=NR R NR%R(
NR7R2NR: R:
NS,SNS'S'NS,S/
NS>S9NT T
NT3TNT.T.NT3T6
NUU-NV(U7	NV(V NV#V#NV(V+
NWV5NWWNWW
NXW)NXXNXX
NYXNYYNYY	
NYYNZ YNYYNZ Y
NZY$ NZZNZ ZNZZNZ Z
N[ZN[ [ N[[
N[[N[ [N[[N[ [
N\[#N\\N\\
N] \N\;\;N] ]AN^!^N^$ ^ N^!^!N^$ ^$2N`	_	N`	_!N``N`	`
N``N` `N``N` `
Na`'Na
a
Naa
NbaNa?a?Nbb
NbbNb bNe bNb bNcb$Nb=b5Ne b=NccNe c
NccNccNccNcc
Nc&c"Ne c&Ne c)
Nc8c3Nc; c6Ne c8Nc; c;Nd&dNddNe dNd&d&Ne d)
Nd7d3Nd:d6Nd7d7Nd:d:
NeeNe eNe e
Ne=eNe8e8Ne=f 
Nf2f
Nf-f-Nf2f5Ng f;
Ng	gNg gNg	g	Ng g
Ng>gNg9g9Ng>hNhhNh& hNhhNh& h
Nh#hNh& h"Nh#h#Nh& h&
Nih0NiiNii
Ni)i%Ni, i(Ni)i)Ni, i,
Nji6NjjNjj!
Nkj+NkkNkk
Nlk NllNllNl l
NmlNl=l=Nmm
Nm7mNm2m2Nm7m:
Nn,nNn'n'Nn,n/
No!n9NooNo!o$
Npo.NppNpp
Nqp#NqqNqq
Nr qNq;q;Nr r
Nr5rNr0r0Nr5r8
Ns*sNs%s%Ns*s-
Nvs8A%NuuNvu*Nvv	NvvNvvNvv
Nwv)NwwNww
Nw#wNw& w&
Nxw0NxxNxx
Nx*x%Nx- x-
Nyx7NyyNyc                 ı >G^FG^G^G^G^G^G^G^G^G^G^G^G^G^ [        U R                  5      nU R                  5       (       a  g UR                  R                  S5      (       GaE  UR                  R	                  S5      R                  S5      n[        U5      S:w  a  U R                  SSSS.5        g Uu  p4pVpxpUS:w  d  US	:w  d  U
R                  S
5      (       d  U R                  SSSS.5        g U
S S nUR                  5       (       a*  U	R                  5       (       a  UR                  5       (       d  U R                  SSSS.5        g [        R                  U5      nU(       a  X|R                  S0 5      ;  a  U R                  SSSS.5        g  UR                  S5      nUS:X  aW  [        US   UR                  SS5      5      nU(       d  U R                  SSSS.5        g US   U   nSU SU SU	 SU SU 3
nGOUS:X  aW  [        US   UR                  SS5      5      nU(       d  U R                  SSSS.5        g US   U   nSU SU SU	 SU SU 3
nGOSUS:X  aW  [        US   UR                  SS5      5      nU(       d  U R                  SSSS.5        g US   U   nS U S!U SU	 SU S"U 3
nGOUS#:X  a]  [        US   UR                  SS5      5      nU(       d  U R                  SSS$S.5        g US   U   u  nnS%U SU SU	 SU S&U S'U 3nGOUS(:X  a  US   U   n[        [        U5      [        U	5      [        U5      5      u  nnnnUS)   S*-   [        S+S,S-US.   SUR                  S/S05      UR                  S1S25      S3S4S4U S5U S5U S5U 3S6.5      -   nGOUS7:X  a  US   U   R!                  XUS89nOUS9:X  aV  [        US   UR                  SS5      5      nU(       d  U R                  SSS:S.5        g US   U   nS;U SU SU	 SU S<U 3
nOUS=:X  aV  [        US   UR                  SS5      5      nU(       d  U R                  SSS>S.5        g US   U   nS?U SU SU	 SU S@U 3
nO3USA:X  a  US   U   R!                  XUS89nOU R                  SSSBS.5        g ["        R$                  " USCSDSE.SF9n["        R&                  " USGSH9 nUR)                  5       nUR*                  R                  SIS05      nS S S 5        U R-                  SJ5        U R/                  SIW5        U R/                  SK[1        [        W5      5      5        U R/                  SLSM5        U R3                  5         U R5                  5         U R6                  R9                  U5        g UR                  SR;   a  [B        RE                  5       (       ar   [F        RH                  " [B        RK                  SSST95      nU R                  SJ[M        UR                  SU5      S L=(       a    UR                  SV5      S L5      USW.5        g U R                  SJS0 SW.5        g U R*                  R                  SXS5      nUR                  SY5      (       Ga"  SZS[S\S]S^S_S`SaS`Sb.	nURO                  5        H  u  nu  n n!n"UR                  U;   d  M  [Q        [R        5      U -  n#U#RE                  5       (       d  ME  U#RU                  5       n$U R-                  SJ5        U R/                  SIU!5        U R/                  SK[        U$5      5        U R/                  SLU"5        U R3                  5         U R5                  5         U R6                  R9                  U$5          g    ScS K+n%U%RY                  SdUR                  5      n&U&(       a  [        U&R[                  Se5      5      n'[Q        [R        5      SfU'Sg Sh3-  n(U(RE                  5       (       a  U(RU                  5       n)U R-                  SJ5        U R/                  SISi5        U R/                  SK[        U)5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U)5        g U R                  SSkSlU' Sm305        g UR                  Sn5      (       aT  UR                  So;   aD  U R-                  Sp5        U R/                  SqSr5        U R3                  5         U R5                  5         g UR                  Ss5      (       aT  UR                  So;   aD  U R-                  Sp5        U R/                  SqSt5        U R3                  5         U R5                  5         g UR                  Su5      (       aT  UR                  So;   aD  U R-                  Sp5        U R/                  SqSv5        U R3                  5         U R5                  5         g UR                  Sw5      (       aT  UR                  So;   aD  U R-                  Sp5        U R/                  SqSx5        U R3                  5         U R5                  5         g UR                  Sy5      (       aT  UR                  So;   aD  U R-                  Sp5        U R/                  SqSz5        U R3                  5         U R5                  5         g UR                  S{5      (       aT  UR                  So;   aD  U R-                  Sp5        U R/                  SqS|5        U R3                  5         U R5                  5         g UR                  S};   a  [Q        [R        5      S~-  n*U*RU                  5       n+U R-                  SJ5        U R/                  SISi5        U R/                  SK[        U+5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U+5        g UR                  S;   a  [Q        [R        5      S-  n,U,RU                  5       n-U R-                  SJ5        U R/                  SIS5        U R/                  SK[        U-5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U-5        g UR                  S;   a  [Q        [R        5      S-  n.U.RU                  5       n/U R-                  SJ5        U R/                  SISi5        U R/                  SK[        U/5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U/5        g UR                  S;   a  [Q        [R        5      S-  n0U0RU                  5       n1U R-                  SJ5        U R/                  SIS5        U R/                  SK[        U15      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U15        g UR                  S:X  ae  []        UR^                  5      n2 [        U2R                  SS/5      Sc   5      n3U R                  SJ[a        [c        Se[e        U3SJ5      5      5      5        g UR                  S;   a  [Q        [R        5      S-  n4U4RU                  5       n5U R-                  SJ5        U R/                  SISi5        U R/                  SK[        U55      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U55        g UR                  S;   a  [Q        [R        5      S-  n6U6RU                  5       n7U R-                  SJ5        U R/                  SIS5        U R/                  SK[        U75      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U75        g UR                  S;   a  [Q        [R        5      S-  n8U8RU                  5       n9U R-                  SJ5        U R/                  SISi5        U R/                  SK[        U95      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U95        g UR                  S;   a  [Q        [R        5      S-  n:U:RU                  5       n;U R-                  SJ5        U R/                  SISi5        U R/                  SK[        U;5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U;5        g UR                  S;   a  [Q        [R        5      S-  n<U<RU                  5       n=U R-                  SJ5        U R/                  SISi5        U R/                  SK[        U=5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U=5        g UR                  S;   a  [Q        [R        5      S-  n>U>RU                  5       n?U R-                  SJ5        U R/                  SISi5        U R/                  SK[        U?5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U?5        g UR                  S;   a  [Q        [R        5      S-  n@U@RU                  5       nAU R-                  SJ5        U R/                  SISi5        U R/                  SK[        UA5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  UA5        g UR                  S:X  Ga  ScS K#nBScS K3nC[Q        [R        5      S-  nD[i        SS/S9R]                  UR^                  5      n2U2R                  SUCRj                  Rm                  5       Ro                  5       /5      Sc   nEUDUE S3-  nF/ nGUFRE                  5       (       a  WFRK                  SSST9Rq                  5        H  nHUHR	                  5       nHUH(       d  M   WBRI                  WH5      nIUIR                  S5      S:X  a3  WIRO                  5        VJVKs0 s H  u  nJnKUJS:w  d  M  WJWK_M     nInJnKSUIS'   WGRs                  WI5        M     WG Vs/ s H  nUR                  S5      S:X  d  M  UPM     nLnWG Vs/ s H  nUR                  S5      S:X  d  M  UPM     nMnWG Vs/ s H  nUR                  S5      S:X  d  M  UPM     nNnU R                  SJWE[        WG5      WLWMUNS.5        g UR                  S:X  Ga  ScS K#nOScS K3nP[Q        [R        5      S-  nD[i        SS/S9R]                  UR^                  5      nQUQR                  SUPRj                  Rm                  5       Ro                  5       /5      Sc   nR[        UQR                  SS/5      Sc   5      nSUDUR S3-  nT/ nUUTRE                  5       (       aw  WTRK                  SSST9Rq                  5        HV  nHUHR	                  5       nHUH(       d  M   WORI                  WH5      nIUIR                  S5      S:X  a  WURs                  WI5        MV  MX     WS[        WU5      :  d  WUWS   R                  S5      (       d  U R                  SSkS05        g ScS K:GmGTRw                  WUWS   S   5      nVU R-                  SJ5        U R/                  SIS5        U R/                  SK[        UV5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  UV5        g UR                  S:X  aa  [Q        [R        5      S-  nWUWRE                  5       (       a#  [        WWRy                  5       Rz                  5      OScnXU R                  SJSUX05        g UR                  S:X  a  [Q        [R        5      S-  nYUYRE                  5       (       a  WYRU                  5       nZU R-                  SJ5        U R/                  SIS5        U R/                  SK[        UZ5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  UZ5        g U R                  SSS05        g UR                  S;   a  [Q        [R        5      S-  n[U[RU                  5       n\U R-                  SJ5        U R/                  SISi5        U R/                  SK[        U\5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U\5        g UR                  S:X  a  [Q        [R        5      S-  n]U]RU                  5       n^U R-                  SJ5        U R/                  SIS5        U R/                  SK[        U^5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U^5        g UR                  R                  S5      (       GaW  ScS K>GmUR                  [        S5      S  R                  S5      n_SU_;  Ga  S&W_;   a  W_R                  S&5      S   S;   a  [R        S-  W_-  n`U`RE                  5       (       a  W_R                  S&5      S   R                  5       nSSS0SS.R                  US5      naW`RU                  5       nU R-                  SJ5        U R/                  SIUa5        U R/                  SK[        U5      5        U R3                  5         U R5                  5         U R6                  R9                  U5        g U R-                  S5        U R5                  5         g UR                  S:X  ax   [Q        [R        5      S-  nbUbRE                  5       (       a9  [F        RH                  " WbRK                  SSST95      ncU R                  SJSUcS.5        g U R                  SJSS S.5         g UR                  S:X  a(  [           U R                  SJ0 [        E5        S S S 5        g UR                  S:X  aH  [           S[        S'   S[        S'   Sc[        S'   S[        Sk'   S S S 5        U R                  SJSS05        g UR                  S:X  a(  [           U R                  SJ0 [        E5        S S S 5        g UR                  S:X  au  [Q        [R        5      S-  nd UdRE                  5       (       a#  [F        RH                  " WdRK                  SSST95      O/ neU R                  SJS[        [        We5      5      S.5        g UR                  S:X  aS  ScS KGnf UfR                  / SQUfR                  S9R                  5       R	                  5       ngU R                  SJSUgS.5        g UR                  S:X  a;  ScSK3J3Gm  U R                  SJSSGTR                  5       Ro                  5       S.5        g UR                  S:X  a[   ScS KLGmScS KMGmGUGU4S jniGTR                  Ui" 5       5      njUjc  U R                  SJSSS.5        g U R                  SJSWjS.5         g UR                  S:X  a   [Q        [        5      R                  R                  S-  S-  S-  nkUkRE                  5       (       a:  [F        RH                  " WkRK                  SSST95      nU R                  SJSS0UE5        g U R                  SJS/ 0 SS.5         g UR                  S:X  a   ScSK3J3nl  UlR                  5       R                  S5      nm[Q        [        5      R                  R                  S-  S-  SUm S3-  nnUnRE                  5       (       aL  WnRK                  SSST9nj[        UnRy                  5       Rz                  S-  5      noU R                  SJSUjUoS.5        g U R                  SJSSScS.5         g UR                  S:X  aV   [        RE                  5       (       a'  [F        RH                  " [        RK                  SSST95      O0 nU R                  SJU5        g UR                  S:X  aV   [        RE                  5       (       a'  [F        RH                  " [        RK                  SSST95      O0 nU R                  SJU5        g UR                  R                  S5      (       Ga  UR                  [        S5      S  np[        Up-  nqUqRE                  5       (       a  WqR                  5       (       a  WqR                  S:X  a   WqRU                  5       nU R-                  SJ5        U R/                  SIS5        U R/                  SK[        U5      5        U R/                  SLS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g U R                  SSkS05        g UR                  S:X  a]  ScS KWnrUrR                  5       nsUsR                  Se5         UsR                  S5        UsR                  5         U R                  SJSSS.5        g UR                  S:X  a  [        S [        R                  5        5       5      nt[        S [        R                  5        5       5      nu[        S [        R                  5        5       5      nvU R                  SJUtUuUv[        [        5      S.5        g UR                  S;   a3  ScS K^nwU R                  SJS[        UwR                  5       5      SSS.5        g UR                  S:X  a2  U R                  SJSS[1        [        5      [1        [        5      S.5        g UR                  R                  S5      (       GaB   UR                  [        S5      S  R	                  S5      nxUx(       a  WxR                  S5      O/ n[        U(       a  USc   OS5      nyUy(       d  U R                  SSSS.5        g [        U5      Se:X  a  U R                  SJ[        Wy5      5        g [        U5      S:X  a%  USe   S:X  a  U R                  SJ[        Wy5      5        g [        U5      S:  GaF  USe   S:X  Ga<  [V        R                  " SSUS   5      nzUzS:X  a  [F        R                  " [        Wy5      SSGS 9R                  SS5      n{U R-                  SJ5        U R/                  SIGS5        U R/                  SK[1        [        U{5      5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  U{5        g [        Wy5      S-  Wz-  n|U|RE                  5       (       a  W|R                  5       (       d  U R                  SSGSS.5        g SnW|R                  R                  5       S
:X  a  S0nO"W|R                  R                  5       GS:X  a  GSnW|RU                  5       nU R-                  SJ5        U R/                  SIU5        U R/                  SK[1        [        U5      5      5        U R/                  SLWzR                  GS5      (       a  GSOSj5        U R3                  5         U R5                  5         U R6                  R9                  U5        g U R                  SSGSS.5        g UR                  GS:X  a   [        GS	-  n}[        R                  " [        R                  [1        U}5      GS
/SSGSGS9n[F        RH                  " UR                  =(       d    GS5      nUR                  UGS'   UR                  (       a  UR                  GSS  UGS'   U R                  UR                  S5      (       a  SJOGSU5        g UR                  GS:X  a  [        5       n~U~ Vss/ s H}  nsGSUsR                  GSS5      R                  5       ;  d  M+  GSWsR                  GSS5      R                  5       ;  d  MS  GSWsR                  GSS5      R                  5       ;  d  M{  WsPM     n~nsScS KoJpn  GS nUR                  SGS9 n[        UR                  UU~5      5      nS S S 5        U R                  SJW5        g UR                  GS:X  a  UR^                  (       a-  [        GS UR^                  R                  GS5       5       5      O0 n2[V        R                  " GSSU2R                  GS5      =(       d    GSR                  5       5      n[R        GSU S3-  nU R                  SJURE                  5       (       a$  [F        RH                  " WRK                  5       5      O0 5        g UR                  GS :X  aV  [R        GS!-  nU R                  SJURE                  5       (       a$  [F        RH                  " WRK                  5       5      O0 5        g UR                  GS":X  aV  [R        GS#-  nU R                  SJURE                  5       (       a$  [F        RH                  " WRK                  5       5      O0 5        g UR                  GS$:X  aU  [R        GS%-  nU R                  SJURE                  5       (       a#  [F        RH                  " WRK                  SSST95      O0 5        g UR                  GS&:X  a   [Q        GS'5      n/ n[        UR                  5       5       H  nUR                  5       (       a   WR                  R                  S5      (       a  M:  WGS(-  nWRs                  UR                  URE                  5       (       a  [1        W5      OSWRE                  5       GS).5        M     U R                  SJSWGS*.5        g UR                  GS+:X  a   [R        R                  GS,-  GmGTGS--  GmGU4GS. jGmGUGU4GS/ jnGU4GS0 jnU" GS15      n/ / ntnU Hh  nGT" UGS2   5      nUR                  GS35      (       a0  WR                  GS45      (       d  SWGS5'   WRs                  U5        MW  WtRs                  W5        Mj     U R                  SJSWWtW" GS65      -   W" GS45      U" GS75      -   U" GS85      U" GS95      -   GS:.5        g UR                  GS;:X  Ga   ScGS<KxJ.n  U" UR^                  5      nUR                  GS=S/5      Sc   nGS>nU(       a"  [1        [Q        W5      R                  5       5      OSnW(       a4  WR                  W5      (       a  [Q        W5      RE                  5       (       d  U R                  SSkS05        g S n[        [Q        W5      R                  5       5       Hk  nUR                  R                  5       GS?;  a  M$  WR                  R                  GS@5      (       a  MG  WR                  R                  S&5      (       a  Mi  WnMm     W(       d  U R                  SSkGSA05        g ScS KznScS KGnUR                  GSBSGSC9nUR                  5         UR                  GSDGSEGSF[1        W5      GSGS/GSHGSGGSIGSJGSKUR                  /SGSL9  [Q        UR                  5      RU                  5       nV[Q        UR                  5      R                  SGSM9  U R-                  SJ5        U R/                  SIS5        U R/                  SK[1        [        UV5      5      5        U R/                  SLGSN5        U R5                  5         U R6                  R9                  UV5        g UR                  GSO:X  a|  [R        R                  GS,-  GSP-  nURE                  5       (       a8  U R                  SJS[F        RH                  " WRK                  SSST95      GSQ.5        g U R                  SJSS GSQ.5        g UR                  GSR:X  Ga   ScGS<KxJ.n  ScS KGnScS K}nScS K>nU" UR^                  5      nUR                  GSSS/5      Sc   nGS>nU(       a"  [1        [Q        W5      R                  5       5      OSnW(       a4  WR                  W5      (       a  [Q        W5      RE                  5       (       d  U R                  SSkS05        g [1        WR                  R                  W5      5      nXWR                  UUX-   R                  5       5      GR                  5       n[R        R                  GS,-  GST-  nUGR                  SSGSU9  UUGSB-   -  nURE                  5       (       a  WRU                  5       nVGOWR                  5       GR                  S&Se5      S   nScS KznUGSV;   a  UGSW;   a  GSFOGSXnUGSW;   a  GSJOGSYnWR                  GSBSGSC9nUR                  5         WR                  GSDGSEWWGSGS/GSHGSGGSIUGSKUR                  /SGSL9  [Q        UR                  5      RU                  5       nV[Q        UR                  5      R                  SGSM9  O[Q        W5      RU                  5       nVWGR                  WV5        U R-                  SJ5        U R/                  SIS5        U R/                  SK[1        [        WV5      5      5        U R/                  SLGSZ5        U R5                  5         U R6                  R9                  UV5        g UR                  GS[:X  Ga  ScS K^nw[Q        GS\5      n U R-                  SJ5        U R/                  SIGS]5        U R/                  SLGS^5        U R/                  GS_GS`5        U R/                  GSaGSb5        U R5                  5         UwR                  5       GSc-   nUwR                  5       nUwR                  5       U:  Ga  WRE                  5       (       a}   WRK                  SSST9R	                  5       nU(       aX  WGR	                  SSSST9  U R6                  R9                  GSd5        U R6                  GR                  5         WwR                  5       nWwR                  5       W-
  GSe:  aG  U R6                  R9                  GSf5        U R6                  GR                  5         WwR                  5       nWwGR                  GSg5        UwR                  5       W:  a  GM  g UR                  GSh:X  Ga  ScGS<KxJ.n  U" UR^                  5      nUR                  GSiS/5      Sc   n[Q        GSj5      nUU-  nU(       a  WRE                  5       (       d  U R                  SSkS05        g  ScS KGnScS KznWR                  R                  5       nUGSk;   a  WR                  GSBSGSC9nUR                  5         WR                  GSDGSlS/GSHGSlGSIGSm[1        W5      GSKUR                  /
SGSL9  [Q        UR                  5      RU                  5       nV[Q        UR                  5      R                  SGSM9  SnaO8WRU                  5       nVSSS0GSGSn.R                  UR                  S&5      S5      naU R-                  SJ5        U R/                  SIWa5        U R/                  SK[1        [        WV5      5      5        U R/                  SLS5        U R5                  5         U R6                  R9                  UV5        g UR                  GSo:X  aN  [Q        GSj5      n1 GSpkGm[        GU4GSq jUR                  5        5       5      nU R                  SJSUGSr.5        g UR                  GSs:X  a  [R        R                  GS,-  GSt-  n[R        R                  GS,-  GSu-  nFURE                  5       =(       a.    WRK                  5       R	                  5       R                  GSv5      nSnWFRE                  5       (       a:  WFRK                  5       R	                  5       Rq                  5       nU(       a  WS   OSnU R                  SJSWWGSw.5        g UR                  GSx:X  au  [R        R                  GS,-  GSy-  nURE                  5       (       a5   U R                  SJ[F        RH                  " WRK                  SSST95      5        g U R                  SJ0 5        g UR                  GSz:X  a{  [R        R                  GS,-  GS{-  nURE                  5       (       a5   U R                  SJ[F        RH                  " WRK                  SSST95      5        g U R                  SJ/ ScScSGS|.5        g UR                  GS}:X  Ga%  G[           [        G[        5      nS S S 5        G[           G[        RO                  5        VVs/ s H   u  nnUR                  S5      GS~:X  d  M  WPM"     nnnG[        RO                  5        VVs/ s H   u  nnUR                  S5      GS4:X  d  M  WPM"     nunnG[        RO                  5        VVs/ s H  u  nnUR                  S5      Sk:X  d  M  WPM!     nvnnS S S 5        U R                  SJSWWWuWv[        U5      [        U5      -   GS.5        g UR                  R                  GS5      (       ay  UR                  R                  S5      S   nyG[           G[        R                  Uy5      nS S S 5        W(       d  U R                  SSGSS.5        g U R                  SJSS0WE5        g UR                  R                  GS5      (       a  UR                  GR                  S5      R                  S5      S   nyG[        R                  Uy5      nU(       d  U R                  SSkGS05        g U R                  SJSWR                  GS/ 5      UR                  S5      UR                  Sk5      GS.5        g UR                  R                  GS5      (       Ga  ScGSKxJn  U" UR                  [        GS5      S  R                  S5      5      n_SU_;   d  GSW_;   d  W_R                  GS5      (       d  U R                  GSSkGS05        g G[        W_-  n`U`RE                  5       (       d  U R                  SSkGS05        g W`Ry                  5       GR                  nU R*                  R                  GSS5      nScUSe-
  nnUR                  GS5      (       a]  WGSS  R                  GS5      n USc   (       a  [        USc   5      OScn[        U5      Se:  a  USe   (       a  [        USe   5      OWSe-
  nWW-
  Se-   nW(       a1  U R-                  GS5        U R/                  GSGSW GSW SW 35        OU R-                  SJ5        U R/                  SIGS5        U R/                  SK[1        W5      5        U R/                  GSGS5        U R/                  SLGS^5        U R3                  5         U R5                  5          G[!        W`GS5       nUGR#                  W5        UnUSc:  aU  WR)                  [e        GSW5      5      nU(       d  O1U R6                  R9                  W5        W[        U5      -  nUSc:  a  MU  S S S 5        g UR                  R                  GS5      (       Ga<  ScGSKxJn  U" UR                  [        GS5      S  R                  S5      5      npGSUpR                  S5      ;   d  Wp(       d  U R                  GSSkGS05        g G[        Wp-  R                  5       n`[1        U`5      R                  [1        G[        R                  5       5      S-   5      (       d  U R                  GSSkGS05        g W`RE                  5       (       d  U R                  SSkGS05        g W`R                  R                  5       nUSh:X  a  SinO,WGS:X  a  GSnO!WS:X  a  GSnOU R                  GSSkGS05        g WGS:X  Ga>  W`Ry                  5       GR                  nU R*                  R                  GS5      nScUSe-
  nnU(       a{  WR                  GS5      (       ad   WR                  GSSe5      Se   R                  S5Se5      Sc   nUR                  GSSe5      u  nnU(       a  [        W5      nW(       a  [        W5      n[c        Sc[e        WWSe-
  5      5      n[c        U[e        WUSe-
  5      5      nUU-
  Se-   nW(       a1  U R-                  GS5        U R/                  GSGSW GSW SW 35        OU R-                  SJ5        U R/                  SIU5        U R/                  SK[1        W5      5        U R/                  GSGS5        U R/                  SLSj5        U R3                  5         U R5                  5          G[!        W`GS5       nUGR#                  W5        UnUSc:  aU  WR)                  [e        GSW5      5      nU(       d  O1U R6                  R9                  W5        W[        U5      -  nUSc:  a  MU  S S S 5        g W`RU                  5       nU R-                  SJ5        U R/                  SIU5        U R/                  SK[1        [        U5      5      5        U R/                  SLSj5        U R3                  5         U R5                  5          U R6                  R9                  U5        g UR                  GS:X  Gao   G[        GR                  SSGSU9  / n[        G[        GR+                  GS5      GS SGS9S GS  GH  nUGR-                  UGR.                  GS-   5      nUR                  S SSGS.nURE                  5       (       ah   [F        RH                  " WRK                  SSST95      nUR                  GS5      WGS'   UR                  GSS5      UGS'   UR                  GSS5      UGS'   WGS   (       dA  WGR.                  R                  S5      n[        U5      Se:  a  USe   OWGR.                  WGS'   WRs                  W5        GM     U R                  SJSWGS.5        g UR                  GS:X  a  U R                  SJSGS05        g UR                  GS:X  ah  G[0        GS-  nURE                  5       (       a5   U R                  SJ[F        RH                  " WRK                  SSST95      5        g U R                  SJ0 5        g UR                  GS:X  a  [R        R                  GS-  n URE                  5       (       ao  [F        RH                  " WRK                  SSST95      nU R                  SJSUR                  GS0 5      UR                  GS0 5      UR                  GSSc5      GS.5        g U R                  SJS0 0 ScGS.5         g UR                  GS:X  a  U R                  SJG[3        5       5        g UR                  GS:X  aU  []        UR^                  5      n2U2R                  GSGS/5      Sc   nUGS;  a  GSn U R                  SJG[5        W5      5        g UR                  GS;   a+  G[7        G[8        GS-  5      nU R                  SJGSU05        g UR                  GS:X  a+  G[7        G[8        GS-  5      nU R                  SJGSU05        g UR                  GS:X  a+  G[7        G[8        GS-  5      nU R                  SJGSU05        g UR                  GS:X  a  []        UR^                  5      n2U2R                  GSS/5      Sc   n ScS K#n[R        R                  GS-  nURE                  5       (       a  WRI                  WRK                  5       5      O0 nUR                  W0 5      nU R                  SJUUR                  GS5      UR                  GSS5      GS.5        g UR                  R                  GS5      (       a  UR                  [        GS5      S  R	                  S5      nU(       a  G[;        GS W 5       5      (       d  U R                  SSGSS.5        g G[<        W GS3-  nURE                  5       (       a  WRK                  SSST9OSnU R                  SJWUGS.5        g UR                  GS:X  a  []        UR^                  5      n2U2R                  GSS/5      Sc   nyUy(       a&  WyG[>        ;   a  U R                  SJG[>        Wy   5        g [P        GR@                  " 5       GS-  nU R                  SJURE                  5       G[>        RO                  5        VJVKs0 s H   u  nJnKUJUKS   UKR                  S)S5      GS._M"     snKnJGS.5        g UR                  GS:X  aX   ScS KJn  UR'                  GSSSH9 n[F        RH                  " UR)                  5       5      nS S S 5        U R                  SJW5        g UR                  GS:X  ah  G[F        (       d  U R                  SSGSS.5        g G[H        GRJ                  " 5       nG[H        GRL                  " 5       UGS'   U R                  SJU5        g UR                  GS:X  aR  G[F        (       d  U R                  SSGSS.5        g  G[H        GRL                  " 5       nU R                  SJSUGS.5        g UR                  GS:X  aR  G[F        (       d  U R                  SSGSS.5        g  G[H        GRN                  " 5       nU R                  SJSUGS.5        g UR                  GS:X  aR  G[F        (       d  U R                  SSGSS.5        g  G[H        GRN                  " 5       nU R                  SJSUGS.5        g UR                  GS:X  d  UR                  GS:X  a  []        UR^                  5      n2U2R                  GSS/5      Sc   nU(       au  G[F        (       ai  G[H        GRP                  " W5      nU R-                  Sp5        U(       a  GSOGSnU R/                  SqU5        U R3                  5         U R5                  5         g U R-                  Sp5        U R/                  SqGS5        U R3                  5         U R5                  5         g UR                  GS:X  ay  [R        GS-  GS-  nURE                  5       (       a?   [        WRK                  5       R	                  5       5      noU R                  SJUoSGS.5        g U R                  SJScSGS.5        g UR                  GS:X  Ga   ScS KGnfScS K>GmG[0        GS-  n G[!        U5       n[F        GRR                  " U5      nS S S 5        [        W5      n/ n/ n/ nU H  GmFGTFGS   nzG[0        Uz-  GS-  nURE                  5       (       a  WRy                  5       GR                  nG[U        UGS-  GS-  Se5      nWRs                  WzGTFR                  GSUz5      UGS.5        UGS:  a3  WzGS:w  a*  WRs                  WzGTFR                  GSUz5      WGS.5        M  M  M  WzGS:w  d  M  WRs                  WzGTFR                  GSUz5      GS.5        M     WfR                  / GSQSSGS9nUR                  Sc:H  =(       a#    [M        WR                  R	                  5       5      nG[0        GS-  GS-  nURE                  5       (       a  WRK                  5       R	                  5       OS nU R                  SJW[        W5      WWWUGS.5        g UR                  GS:X  a  [R        GS-  nURE                  5       (       aM   [F        RH                  " WRK                  5       5      nU R                  SJSUR                  GSS5      GS.5        g U R                  SJSSGS.5        g UR                  GS:X  Ga  []        UR^                  5      n2U2R                  GSS/5      =(       d    S/Sc   R	                  5       nU(       d  U R                  SSGSS.5        g  ScS KGnScS KJn  UR                  / GSQSSGS9nUR                  Sc:X  a  WR                  R	                  5       OSnU(       dt  G[V        RK                  SSST9Rq                  5        HN  nHUHR	                  5       R                  GS5      (       d  M*  WHR                  GSSe5      Se   R	                  5       n  O   W(       d  U R                  SSGSS.5        g WR%                  GSW 3GSW0SF9nUR'                  UGSSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GSS5      nU(       a  U R                  SJSWGS.5        g U R                  SSGS [1        W5      GS.5         g UR                  GS:X  GaH  ScS KGn UR                  / GSQSUR                  GS9R	                  5       nW(       dv   G[V        RK                  5       Rq                  5        HN  nUR	                  5       R                  GS5      (       d  M*  WR                  GSSe5      Se   R	                  5       nMP     [F        R                  " [M        W5      U(       a  WOSGS.5      R                  5       nU R-                  SJ5        U R/                  SIS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g UR                  R                  GS5      (       Gac  ScS KGnScS KJn  ScS KxJn   UR                  / GSQSUR                  GS9R	                  5       n[]        UR^                  5      nUR                  GSS/5      Sc   nUR                  GSGS/5      Sc   nUR                  GS	GS
/5      Sc   n GSU GSU 3nU(       a  WGSWGR[                  W5       3-  nWR%                  WGSW0SF9nUR'                  UGSSH9 Gn GU R)                  5       n)S S S 5        U R-                  SJ5        U R/                  SIS5        U R3                  5         U R5                  5         U R6                  R9                  W)5        g UR                  R                  GS5      (       a  UR                  [        GS5      S  npG[0        Up-  GnGURE                  5       (       a  GWR                  GS:X  a  GWRU                  5       nU R-                  SJ5        U R/                  SIGS5        U R/                  SK[        U5      5        U R3                  5         U R5                  5         U R6                  R9                  U5        g U R                  SSkS05        g UR                  GS:X  au  G[0        GS-  GS-  GnGURE                  5       (       a9   U R                  SJGS[F        RH                  " GWRK                  SSST95      05        g U R                  SJGS0 05        g UR                  GS:X  a  G[0        GS-  GS-  GnGURE                  5       (       a&  [F        RH                  " GWRK                  SS5      5      O0 Gn0 GnGURO                  5        HD  u  nJnKG[]        UK[0        5      (       a
  WK(       a  WK/OG[]        WK[        5      (       a  WKO/ GWWJ'   MF     U R                  SJGSGW05        g UR                  GS:X  ac  G[0        GS-  GS-  GnGURE                  5       (       a&  [F        RH                  " GWRK                  SS5      5      O0 nU R                  SJSU05        g UR                  GS:X  ad  G[0        GS-  GS-  Gn	GU	RE                  5       (       a&  [F        RH                  " GW	RK                  SS5      5      O0 nU R                  SJGSU05        g UR                  GS:X  au  G[0        GS-  GS-  Gn
GU
RE                  5       (       a9   U R                  SJGS[F        RH                  " GW
RK                  SSST95      05        g U R                  SSkGS05        g UR                  GS :X  at  G[0        GS!-  GS-  Gn
GU
RE                  5       (       a8  U R                  SJGS[F        RH                  " GW
RK                  SSST95      05        g U R                  SSkGS05        g UR                  GS":X  ad  G[0        GS!-  GS-  GnGURE                  5       (       a&  [F        RH                  " GWRK                  SS5      5      O0 nU R                  SJGSU05        g UR                  GS#:X  a  G[0        GS!-  GS-  GnGURE                  5       (       a&  [F        RH                  " GWRK                  SS5      5      O0 Gn0 GnGURO                  5        HD  u  nJnKG[]        UK[0        5      (       a
  WK(       a  WK/OG[]        WK[        5      (       a  WKO/ GWWJ'   MF     U R                  SJGSGW05        g UR                  GS$:X  ad  G[0        GS!-  GS-  Gn	GU	RE                  5       (       a&  [F        RH                  " GW	RK                  SS5      5      O0 nU R                  SJGSU05        g UR                  GS%:X  ae  G[0        GS&-  GS-  Gn0 GnGURE                  5       (       a%  [F        RH                  " GWRK                  SSST95      GnU R                  SJGSGW05        g UR                  GS':X  at  G[0        GS&-  GS-  Gn
GU
RE                  5       (       a8  U R                  SJGS[F        RH                  " GW
RK                  SSST95      05        g U R                  SSkGS05        g UR                  GS(:X  ae  G[0        GS)-  GS-  Gn0 GnGURE                  5       (       a%  [F        RH                  " GWRK                  SSST95      GnU R                  SJGSGW05        g UR                  GS*:X  a  G[0        GS)-  GS-  Gn
GU
RE                  5       (       aW   [F        RH                  " GW
RK                  SSST95      GnU R                  SJG[]        GU[        5      (       a  GWOGSGW05        g U R                  SSkGS05        g UR                  GS+:X  a  G[0        GS)-  GS-  GnGURE                  5       (       a&  [F        RH                  " GWRK                  SS5      5      O0 Gn0 GnGURO                  5        HD  u  nJnKG[]        UK[0        5      (       a
  WK(       a  WK/OG[]        WK[        5      (       a  WKO/ GWWJ'   MF     U R                  SJGSGW05        g UR                  GS,:X  ad  G[0        GS)-  GS-  Gn	GU	RE                  5       (       a&  [F        RH                  " GW	RK                  SS5      5      O0 nU R                  SJGSU05        g UR                  GS-:X  ac  G[0        GS)-  GS-  GnGURE                  5       (       a&  [F        RH                  " GWRK                  SS5      5      O0 nU R                  SJSU05        g UR                  GS.:X  ae  G[0        GS/-  GS-  Gn0 GnGURE                  5       (       a%  [F        RH                  " GWRK                  SSST95      GnU R                  SJGSGW05        g UR                  GS0:X  at  G[0        GS/-  GS-  Gn
GU
RE                  5       (       a8  U R                  SJGS[F        RH                  " GW
RK                  SSST95      05        g U R                  SSkGS05        g UR                  GS1:X  a  G[_        GS5      (       d  U R                  SJGS2S05        g  [        R                  " G[a        5       / GS3Q-   [        GRb                  [        R                  GS4GS59nUR                  Sc:X  a  WR                  R                  GS6GS79OSnU R                  SJGS2U05        g UR                  GS8:X  a   [        R                  " / GS9QSSGS9GnGUR                  Sc:X  a  ScS K+GnGUGRe                  GS:GWR                  5      GnGU(       d!  GWGRe                  GS;GWR                  5      GnGW(       a  GWR[                  Se5      OGS<GnU R                  SJSGUGS=.5        g U R                  SJSS GS=.5         g UR                  GS>:X  a1   G[g        5       Gn[M        GU5      nU R                  SJSUUGS?.5        g UR                  R                  GS@5      (       Ga;  UR                  [        GS@5      S  R	                  S5      GnScS K+GnGURY                  GSAGU5      (       d  U R                  SSGSBS.5        g G[h        R                  GW5      GnGUcu  G[k        GW5      GnGU(       aF  GWR                  SGS45      nU R                  SJUUGS4:X  a  GWOS GWR                  Sk5      GSC.5        g U R                  SGSGSDGSE.5        g U R                  SJGWR                  SGSF5      GUR                  GSG5      GUR                  Sk5      GSC.5        g UR                  GSH:X  Ga  / Gn G[l        R                  5        GHN  nUR                  5       (       d  M  WUR                   S3-  nURE                  5       (       a   [F        RH                  " WRK                  SSST95      nGWRs                  UR                  GS2WR                  5      UR                  GS5      UR                  GSI5      UR                  S5      UR                  GSJ5      =(       d    SS GSK GSL.5        M  G[h        R                  WR                  0 5      GnGWRs                  UR                  GUR                  SGS5      GUR                  GS5      GSO.5        GMQ     GWGRo                  GSP SGS9  U R                  SJSGUGSQ.5        g UR                  R                  GSR5      (       Ga  UR                  [        GSR5      S  R	                  S5      GnScS K+GnGURY                  GSAGU5      (       d  U R                  SSGSBS.5        g G[l        GW-  GnGURE                  5       (       d  U R                  SSkS05        g S GnGSS H)  nGWGW S&U 3-  nURE                  5       (       d  M&  WGn  O   GW(       d  U R                  SSkGST05        g GWRU                  5       nGSUGSVGSVGSWGSS.R                  GUR                  R                  S&5      S5      naU R-                  SJ5        U R/                  SIUa5        U R/                  SK[        U5      5        U R/                  GSGS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g UR                  GSX:X  a   / GnG[p        RE                  5       (       ai  G[p        RK                  SSST9Rq                  5        HC  nHUHR	                  5       nHUH(       d  M   GWRs                  [F        RH                  " WH5      5        ME     GWGRs                  5         U R                  SJSGUGSQ.5        g UR                  GSY:X  GaQ   / GnScS K+Gn1 GSZkGn[        G[0        R                  5       5       GH  nUR                  5       (       d  M  WR                  nzUzGW;   dC  WzR                  GS[5      (       d,  WzR                  S5      (       d  WzR                  S&5      (       a  Ms  GWRY                  GS\Wz5      (       d  M  WGS-  RE                  5       GnGU(       d  M  ScGnG[0        Wz GS[3-  GnGURE                  5       (       aj  GWGS-  Gn GU RE                  5       (       aL   [F        RH                  " GW RK                  SSST95      Gn!G[]        GU![        5      (       a  [        GW!5      OScGnWGS]-  Gn"SGn#GU"RE                  5       (       a:  GW"R                  5       (       a$  G[u        GS^ GW"R                  5        5       5      Gn#S Gn$GW#(       a4  [        GS_ GW"R                  5        5       5      Gn%GU%(       a  GW%Sc   OS Gn$GWRs                  WzGWGWGW#GW$WGS-  RE                  5       GS`.5        GM     U R                  SJGSaGW05        g UR                  R                  GSb5      (       Ga   ScS K+Gn&UR                  R                  S5      S   nGU&RY                  GScU5      (       a  G[0        GS!-  W-  n`U`RE                  5       (       a  W`RU                  5       nU R-                  SJ5        U R/                  SIGS5        U R/                  SK[        U5      5        U R/                  GSGS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g U R-                  S5        U R5                  5         g UR                  R                  GSd5      (       a  ScS K+Gn&UR                  R                  S5      S   nGU&RY                  GScU5      (       a  G[0        GSe-  W-  n`U`RE                  5       (       a  W`RU                  5       nU R-                  SJ5        U R/                  SIGS5        U R/                  SK[        U5      5        U R/                  GSGS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g UR                  R                  GSf5      (       Ga  UR                  R	                  S5      R                  S5      nScS K+Gn&[        U5      S:X  a  US   GSg;   a  USe   Gn'GW&RY                  GS\GU'5      (       a  G[0        GW'-  US   -  n`U`RE                  5       (       a  W`RU                  5       nU R-                  SJ5        U R/                  SIGS5        U R/                  SK[        U5      5        U R/                  GSGS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g GO[        U5      GSh:X  Ga,  US   GS]:X  Ga!  US   R                  GS5      (       Ga  USe   Gn'US   nGW&RY                  GS\GU'5      (       a  GW&RY                  GScW5      (       a  G[0        GW'-  GS]-  W-  n`U`RE                  5       (       a  W`RU                  5       nU R-                  SJ5        U R/                  SIGS5        U R/                  SK[        U5      5        U R/                  GSGS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g GO\[        U5      S:X  Ga  USe   GSi:X  a  US   R                  GS5      (       a  US   nGW&RY                  GScU5      (       a  G[0        GSi-  W-  n`U`RE                  5       (       a  W`RU                  5       nU R-                  SJ5        U R/                  SIGS5        U R/                  SK[        U5      5        U R/                  GSGS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g GOF[        U5      S:X  Ga6  USe   R                  GS[5      (       Ga  US   R                  GS5      (       Ga   USe   Gn(US   nGW&RY                  GS\GU(5      (       a  GW&RY                  GScW5      (       a  G[0        GW(-  W-  n`U`RE                  5       (       a  W`RU                  5       nU R-                  SJ5        U R/                  SIGS5        U R/                  SK[        U5      5        U R/                  GSGS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g U R-                  S5        U R5                  5         g UR                  GSj:X  Ga  ScS KGn)ScS K3GmScS K>Gm[]        UR^                  5      n2 G[y        U2R                  SUS/5      Sc   5      Gn*G[y        U2R                  GSkS/5      Sc   5      Gn+U2R                  GSlS/5      Sc   nU2R                  GSmU/5      Sc   n[e        [        U2R                  SGSn/5      Sc   5      GS5      n3G[y        U2R                  GSoGSp/5      Sc   5      Gn,W(       d  U R                  SSkGSr05        g GTRg                  GSsSeSe5      GmGUGU4GSt jGn- GU-" W5      Gn.W(       a  GW-" W5      GSu-   OGW.GSu-   Gn/GTR                  GR{                  GSw5      Gn0GTR                  GR{                  GSx5      GmGUGU4GSy jGn1GSz Gn2/ Gn3ScGn4SGn5 GW)R                  GS{GU0 GS|3SGS}9Gn6GS~Gn7GW*Sc:X  a]  GW+Sc:X  aV  GW6GR}                  GSGW.GW/45      GR                  5       Sc   Gn4GU6GR}                  GSGU.GU/45      GR                  5       Gn8OGW6GR}                  GSGW.GW/GW*GW,-
  GU*GU,-   GW+GU,-
  GU+GU,-   45      GR                  5       Sc   Gn4GU6GR}                  GSGU.GU/GU*GU,-
  GU*GU,-   GU+GU,-
  GU+GU,-   45      GR                  5       Gn8GU4Sc:X  ab  SGn5GW6GR}                  GSGW7 3GW.GW/45      GR                  5       Sc   Gn4GU6GR}                  GSGU7 GS3GU.GU/45      GR                  5       Gn8GW6R                  5         GW2" [        GW85      U35      Gn9GU9 H  Gn:[        GW35      U3:  a    OGW: H  u  Gn;noGn<Gn=Gn>GU;(       d  M  GW1" GW;5      Gn?GU?(       d  M,  GW?u  Gn@GnAGW3Rs                  GU@GUAGW<GW=[M        GW>5      GTRf                  GR                  WoGS-   GTGR                  GR                  GS9R                  S5      GS.5          M     M     [        GW35      Sc:X  Ga  GW5(       Gd  GW4Sc:  Ga{  GW*Sc:w  Gas  SGn5GW)R                  GS{GW0 GS|3SGS}9GnBGUBGR}                  GSGW7 3GW.GW/45      GR                  5       Sc   GnCGUBGR}                  GSGU7 GS3GU.GU/45      GR                  5       GnDGUBR                  5         GUCSc:  a  GWCGn4GW2" [        GWD5      U35      GnEGUE H  Gn:[        GW35      U3:  a    OGW: H  u  Gn;noGn<Gn=Gn>GU;(       d  M  GW1" GW;5      Gn?GU?(       d  M,  GW?u  Gn@GnAGW3Rs                  GU@GUAGW<GW=[M        GW>5      GTRf                  GR                  WoGS-   GTGR                  GR                  GS9R                  S5      GS.5          M     M     [        GW35      U3:  a  GW4Sc:  a  G[        RE                  5       (       at  [        GW8GS GS9 GVFs/ s H>  GnFGUFSc   (       d  M  G[        GWFSc    GSB3-  RE                  5       (       a  M8  GWFSc   PM@     sGnFS GS GnGGUG(       a  G[        GWG5        U R                  SJGW3[        GU35      GW4GW5[        GS [        R                  5        5       5      GS.5        g UR                  R                  GS5      (       Gam  ScS K>GmUR                  [        GS5      S  GnGUR                  GS5      GnHGUR                  GS5      GnIGUH(       a  GWS GS Gn;[1        G[        GU; GSB3-  5      GnJGTR                  RE                  GUJ5      (       a  G[!        GWJGS5       nUR)                  5       nS S S 5        U R-                  SJ5        U R/                  SIS5        U R/                  SLGS5        U R5                  5         U R6                  R9                  W5        g U R-                  S5        U R5                  5         g GWI(       a  GWS GS OGWGn;G[;        GS GU; 5       5      (       d  U R                  SSkGS05        g GTR                  GR{                  GSx5      GmGW;(       a  GW;Sc   OSGnKGTR                  GR                  GTGUKGW;GS-   5      GnLGTR                  GR                  GTGUKGU;GS-   5      GnMGWI(       a'  GTR                  RE                  GWM5      (       a  GWMGnLOJGTR                  RE                  GWL5      (       d(  GTR                  RE                  GWM5      (       a  GWMOS GnLGWL(       a"  GTR                  RE                  GWL5      (       d"  U R-                  S5        U R5                  5         g G[!        GWLGS5      R)                  5       nU R-                  SJ5        U R/                  SIS5        U R/                  SK[        U5      5        U R/                  SLSM5        U R3                  5         U R5                  5         U R6                  R9                  U5        g UR                  GS:X  Ga%  ScS K+Gn&[]        UR^                  5      n2U2R                  GSS/5      Sc   R	                  5       GnNGUN(       a  GW&RY                  GS\GWN5      (       d  U R                  SSkGS05        g G[0        GWN GS[3-  GS-  Gn
GU
RE                  5       (       am   [F        RH                  " GW
RK                  SSST95      GnG[]        GU[        5      (       a  GWOGWR                  GSGU5      GnOU R                  SJGSGUO05        g U R                  SSkGS05        g UR                  GS:X  a  ScS K+Gn&[]        UR^                  5      n2U2R                  GSS/5      Sc   R	                  5       GnNGUN(       a  GW&RY                  GS\GWN5      (       d  U R                  SSkGS05        g G[0        GWN GS[3-  GS-  GnGURE                  5       (       a9   U R                  SJGS[F        RH                  " GWRK                  SSST95      05        g U R                  SJGS0 05        g UR                  GS:X  a  [R        GS-  nURE                  5       (       a   WRU                  5       nU R-                  SJ5        U R/                  SIS5        U R/                  SK[        U5      5        U R3                  5         U R5                  5         U R6                  R9                  U5        g U R                  SSkGS05        g UR                  GS:X  Ga]  [P        GR@                  " 5       GS-  GS-  GnP GUPRE                  5       (       aH  GWPR                  5        Vs/ s H+  nUR                  GS:X  d  M  GSWR                  ;  d  M)  WPM-     snO/ GnQGUQGRo                  GS SGS9  GUQS GS GnQ/ nGUQ H  nURy                  5       nUGR.                  GS-   GnRGWPGUR-  GnSS nGUSRE                  5       (       a%   [F        RH                  " GWSRK                  SSST95      nWRs                  WR                  WRz                  UGR                  WGS.5        M     U R                  SJGSW05        g UR                  GS:X  Ga?  ScS K+GnTScS K:Gm[]        UR^                  5      n2U2R                  GSS/5      Sc   R	                  5       nU(       d  U R                  SSGSS.5        g SW;   d  GSW;   d  GSW;   a  GSGnUU R-                  GS5        U R/                  SIGS5        U R/                  SK[        GUU5      5        U R3                  5         U R5                  5         U R6                  R9                  GUU5        g [R        W-  GnV GUVR                  5       GnW[R        R                  5       GnX[1        GUW5      R                  [1        GUX5      S-   5      (       d  GWWGWX:w  a  G[        GS5      eGWVRE                  5       (       a  GWVR                  5       (       d  GSGnUU R-                  S5        U R/                  SIGS5        U R/                  SK[        GUU5      5        U R3                  5         U R5                  5         U R6                  R9                  GUU5        g  GWVRK                  SSST9GnYGWTR                  GSSGUYGUTGR                  GS9GnYGS GnZGUTR                  GSGUZGUYGUTGR                  GS9GnYGUTR                  GSGUZGUYGUTGR                  GS9GnYGS Gn[GUTR                  GSGU[GUYGUTGR                  GS9GnYGU4GS jGn\GUTR                  GSGU\GUYGUTGR                  GS9GnYGUTGRe                  GSGUYGUTGR                  5      Gn]GU](       a   GW]R[                  Se5      R	                  5       OWGR                  ShS5      Gn^GWTR                  GSSGU^5      Gn_GU_R	                  5       GR                  GSS5      S GS Gn_GU_ GS3nGWYR                  SS5      Gn`U R-                  SJ5        U R/                  SISi5        U R/                  GSGSU GS35        U R/                  SK[        GU`5      5        U R3                  5         U R5                  5         U R6                  R9                  GU`5        g UR                  GS;   Ga#  [R        UR                  R                  S5      -  GnaGUaRE                  5       (       d"  U R-                  S5        U R5                  5         g GWaRU                  5       nUR                  GS:X  a  SnaOUR                  GS:X  a  S0naOSinaU R-                  SJ5        U R/                  SIWa5        U R/                  SK[        U5      5        U R/                  SLGS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g UR                  R                  GS5      (       a  UR                  R                  S5      Gnb[R        GUb-  GnaGUaRE                  5       (       a  GWaR                  5       (       a  GSGWb;  a  GWaRU                  5       nU R-                  SJ5        U R/                  SIS5        U R/                  SK[        U5      5        U R/                  SLGS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g UR                  R                  Sh5      (       d!  UR                  S:X  d  UR                  S:X  Ga,  UR                  GS;   a  GSOUR                  R                  S5      Gnb[R        GUb-  GnaGUaRE                  5       (       a  GWaR                  5       (       a  GWaRU                  5       nU R-                  SJ5        U R/                  SISi5        U R/                  SK[        U5      5        U R/                  SLGS5        U R/                  GSGS^5        U R/                  GSS5        U R3                  5         U R5                  5         U R6                  R9                  U5        g UR                  GS:X  a  []        UR^                  5      n2U2R                  GSS/5      Sc   R	                  5       nU(       d  U R                  SSGSS.5        g G[        W5      Gn3U R                  SJSGU3[        GU35      GS.5        g UR                  GS:X  aH  G[        GS5      nG[        GS5      GncU R                  SJSkU;  GUcR                  GSS*5      UGS.5        g UR                  GS:X  a  G[        RE                  5       (       a)  [F        RH                  " G[        RK                  5       5      O0 nG[        GSGSGS05      Gnd[M        GUdR                  GS5      =(       d    0 R                  GS5      5      GneU R                  SJ[M        UR                  GS5      5      GUeGS.5        g UR                  GS:X  a  []        UR^                  5      n2U2R                  GSS/5      Sc   R	                  5       nU(       d  U R                  SSGSS.5        g G[        W5      Gn3U R                  SJSGU3[        GU35      GS.5        g UR                  R                  GS5      (       au  UR                  [        GS5      S  R	                  S5      nG[           G[        R                  U5      nS S S 5        U R                  W(       a  SJOSW=(       d    SkS05        g UR                  GS:X  a  ScS KGnSnG[        RE                  5       (       ag  WR                  [1        G[        5      GSGSGSGS/SSGSGS9nUR                  Sc:H  =(       a&    [        UR                  R	                  5       5      Sc:  nU R                  SJWG[        RE                  5       GS.5        g UR                  GS:X  a  G[        5       GnfGUf Vs/ s H  nGSUR                  GSS5      UR                  GSS5      -   R                  5       ;   dN  GSWR                  GSS5      R                  5       ;   d(  GSWR                  GSS5      R                  5       ;   d  M  WPM     GngnU R                  SJGWfGUg[        GUf5      GS.5        g UR                  R                  GS5      (       Ga  / n[        G[        GR+                  GSb5      GS SGS9S GS  HN  nWRs                  UR                  G[U        URy                  5       GR                  GS-  GS-  Se5      GS.5        MP     [        G[        GR+                  GS5      GS SGS9S GS  HP  nWRs                  UR                  G[U        URy                  5       GR                  GS-  GS-  Se5      GSGS.5        MR     U R                  SJGSW05        g UR                  GS:X  a*  [M        G[        5       5      nU R                  SJGSU05        g UR                  GS:X  aF  G[           [        G[        R                  5       5      GnhS S S 5        U R                  SJGS1GWh05        g UR                  R                  GS5      (       a~  UR                  [        GS5      S  R	                  S5      nyG[           G[        R                  Uy5      nS S S 5        W(       a  U R                  SJW5        g U R                  SSkGS05        g UR                  R                  GS5      (       GaB  UR                  [        GS5      S  R	                  S5      R                  S5      n[        U5      S:X  a  Uu  GniGnjGnkG[0        GS-  GUi-  GUj SGUk GS3-  GnlGUlRE                  5       (       a  GWlRU                  5       nU R-                  SJ5        U R/                  SIGS5        U R/                  SK[        U5      5        U R/                  SLGS^5        U R3                  5         U R5                  5         U R6                  R9                  U5        g U R-                  S5        U R5                  5         g UR                  R                  GS5      (       a  UR                  [        GS5      S  R	                  S5      GnmG[0        GS-  GUm-  Gnn0 GnoGS H[  GnpGS HP  GnqGWp SGUq 3nGWnU GS3-  nURE                  5       =(       a    WRy                  5       GR                  S:  GWoU'   MR     M]     U R                  SJGSGWo05        g UR                  GS:X  aj  G[0        GS-  GnrGUrRE                  5       (       a5  U R                  SJ[F        RH                  " GWrRK                  SSST95      5        g U R                  SJ0 5        g UR                  GS:X  a`  G[0        GS-  GnsGUsRE                  5       (       a$  [F        RH                  " GWsRK                  SSST95      O/ GntU R                  SJGSGUt05        g UR                  GS:X  a  G[0        GS-  GnuGUuRE                  5       (       a$  [F        RH                  " GWuRK                  SSST95      O0 Gnv0 GnwGUvRO                  5        H5  u  GnxGnyG[]        GUy[        5      (       a  GWyOGWy(       a  GWy/O/ GWwGWx'   M7     U R                  SJGWw5        g UR                  GS:X  aj  G[0        GS -  GnzGUzRE                  5       (       a5  U R                  SJ[F        RH                  " GWzRK                  SSST95      5        g U R                  SJ0 5        g UR                  GS:X  aj  G[0        GS-  Gn{GU{RE                  5       (       a5  U R                  SJ[F        RH                  " GW{RK                  SSST95      5        g U R                  SJ0 5        g UR                  GS:X  a  [Q        [        5      R                  GS-  Gn|/ Gn}GU|RE                  5       (       ar  GW|R                  5        Vs/ s HC  nUR                  GS:X  d  M  WRy                  5       GR                  S:  d  M7  WR                  PME     Gn}nGU}GRo                  5         U R                  SJGW}[        GU}5      GS.5        g UR                  GS:X  Gag  ScS KGGn~GSGn/ / SGS.n GU~R                  GUGS	GS
/SSGS0 [i        GS
5      GR                  EGSGS0EGS9GnGUR                  Sc:X  aV  GWR                  R	                  5       (       a6  [F        RH                  " GWR                  5      R                  GS	/ 5      WGS	'    GW~R                  GWGSGS
/SSGS0 [i        GS
5      GR                  EGSGS0EGS9GnGUR                  Sc:X  aV  GWR                  R	                  5       (       a6  [F        RH                  " GWR                  5      R                  GS/ 5      WGS'   U R                  SJW5        g UR                  GS:X  a  ScS K>GnGUR                  GR                  GUR                  GR                  [        5      GS5      Gn G[!        GUGSSSST9 GnU R                  SJ[F        RH                  " GUR)                  5       5      5        S S S 5        g UR                  GS:X  a  U R                  SJG[        5       5        g UR                  GS:X  a  U R                  SJG[        5       5        g UR                  GS:X  Ga]   ScS KJGn  [        R                  " / GSQS[        R                  GS9R	                  5       GnGU(       d  U R                  SJSGSS.5        g GSGnGSGnGSGW 3SGS.GnGWR%                  GSGU 3GUSF9nGUR'                  UGSSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GS5      (       a  UR                  GSG5      (       d  U R                  SJSGS S.5        g UGSG   Sc   GnU R                  SJSGUGS2   GUGS   GUR                  S0 5      R                  GSGW5      GS!.5        g UR                  GS":X  a  U GR                  Sc   GnGUR                  GS#5      =(       d!    GWR                  GS$5      =(       d    GWGS%;   GnGU(       d  U R                  GSSGS&S.5        g G[        5       GnGU(       d  U R                  SSGS'S.5        g U R                  SJSGWGS(GS).5        g UR                  GS*:X  GaZ   ScS K3Gm[R        R                  GmGU4GS+ jGnGTRj                  Rm                  5       Ro                  5       Gn G[        RE                  5       (       a)  [F        RH                  " G[        RK                  5       5      O0 GnGWR                  S5      GW:w  a	  GWScScGS,.GnU R                  SJSGW" GS-5      GU" GS.5      GU" GS/5      GU" GS05      [M        G[        5       5      GWR                  GS1Sc5      G[        GUR                  GS2Sc5      GS3.GTRf                  GR                  5       Ro                  5       GS4-   GS5.5        g UR                  GS6:X  Ga|   ScS KJGn  [        R                  " / GSQS[        R                  GS9R	                  5       GnGU(       d  U R                  SJSGS7S.5        g GSGnGS8GnGSGW 3SGS.GnGS9GU GS:GU GS;3nGWR%                  UGUSF9nGUR'                  UGSSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GS5      (       dF  UR                  GS</ 5      nvU R                  SJSUv(       a  WvSc   R                  GS=5      OGS>S.5        g UR                  GSG0 5      R                  GS0 5      R                  GS?/ 5      GnU R                  SJSGUGS@.5        g UR                  GSA:X  a(  GSGSC jGnU R                  SJGU" GSD5      GSEGSF.5        g UR                  GSG:X  Ga   ScS KJGn  [        R                  " / GSHQS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g GSJU GSK3nGWR%                  UGSLGSM0SF9nGUR'                  USSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GSNSc5      nUR                  GSO/ 5      GnGU(       a  GWSc   R                  GSS/5      Sc   OSGnU R                  SJSWGUGSP.5        g UR                  GSQ:X  Ga   ScS KJGn  [        R                  " / GSRQS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSSS.5        g GSTnGWR%                  UGSU 3GSUSGSMGSV.SF9nGUR'                  USSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GSW/ 5      Gn3GU3(       a  GW3Sc   R                  GSS5      OSGnU R                  SJS[        GW35      GUGSX.5        g UR                  GSY:X  a   ScS KJGn  [        R                  " / GSZQS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g GS[U 3nGWR%                  UGSLGSM0SF9nGUR'                  USSH9 nUGR                  nS S S 5        U R                  SJWSJ:H  UGS\.5        g UR                  GS]:X  a   ScS KJGn  [        R                  " / GS^QS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g GS_U GS`3nGWR%                  UGSLGSM0SF9nGUR'                  USSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GSa5      S:H  nU R                  SJUUR                  GSa5      GSb.5        g UR                  GSc:X  Ga	   ScS KJGn  [        R                  " / GSdQS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g GSeU 3nGWR%                  UGSMGSfGSg.SF9nGUR'                  USSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GSh5      =(       d    UR                  GSi5      =(       d    GSjS GS GnU R                  SJSGUGSk.5        g UR                  GSl:X  Ga   ScS KJGn  [        R                  " / GSmQS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g GSnU 3nGWR%                  UGSLGSM0SF9nGUR'                  USSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GSo/ 5      GnGU(       a  GWSc   GSp   R                  GSS5      OSGnU R                  SJS[        GW5      GUGSX.5        g UR                  GSq:X  Ga   ScS KJGn  [        R                  " / GSrQS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g GSsU GSt3nGWR%                  UGSLGSM0SF9nGUR'                  USSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GSu/ 5      GnU R                  SJS[        GU5      GU(       a  GWSc   R                  GS2S5      OGSvGSX.5        g UR                  GSw:X  Ga   ScS KJGn  [        R                  " / GSxQS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g GSyU GSz3nGWR%                  UGSLGSM0SF9nGUR'                  USSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GS1Sc5      GnUR                  GSW/ 5      Gn3GU3(       a  GW3Sc   R                  GSS5      OSS GS GnU R                  SJSGWGUGSP.5        g UR                  GS{:X  GaZ   ScS KJGn  [        R                  " / GS|QS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g GS}U GS~3nGWR%                  UGSLGSM0SF9nGUR'                  USSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GSW/ 5      Gn3SGnGU3(       a]  GW3Sc   R                  GS0 5      GnGU3Sc   R                  GS0 5      nGUR                  GS5      =(       d    WR                  GSS5      GnU R                  SJS[        GW35      GWS GS GSX.5        g UR                  GS:X  Ga>   [        R                  " / GSQS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g ScS KJGn  GSU 3nGUR%                  USGSMGS.SF9nGUR'                  UGSSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GS5      =(       dW    UR                  GSW0 5      R                  GS5      =(       d-    [        UR                  GSW0 5      R                  GS/ 5      5      nU R                  SJSUGS.5        g UR                  GS:X  Ga   [        R                  " / GSQS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g ScS KJGn  GSU GS~3nGUR%                  UGSLGSM0SF9nGUR'                  USSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GSo/ 5      GnGU(       a  GWSc   R                  GSS5      S GS OSGnU R                  SJS[        GW5      GUGSX.5        g UR                  GS:X  Gac   [        R                  " / GSQS[        R                  GS9R	                  5       nU(       d  U R                  SJSGSIS.5        g ScS KJGn  GUR%                  GSGSU 3GSMGS.SF9nGUR'                  USSH9 n[F        RH                  " UR)                  5       5      nS S S 5        WR                  GS0 5      R                  GS/ 5      GnSGnGU(       a[  GWSc   R                  GSG0 5      nUR                  GSS5      S GS  GSUR                  GS0 5      R                  GSS5      S GS  3GnU R                  SJS[        GW5      GWGSX.5        g UR                  R                  Sh5      (       d  UR                  So;   a  UR                  R                  S5      =(       d    GSnp[R        Up-  n`U`RE                  5       (       a  W`R                  5       (       a  W`RU                  5       nU R-                  SJ5        U R/                  SISi5        U R/                  SK[1        [        U5      5      5        U R/                  SLSj5        U R3                  5         U R5                  5          U R6                  R9                  U5        g UR                  R                  GS5      (       Ga  UR                  R                  GS5      (       a  [Q        [        5      R                  UR                  R                  S5      -  GnGURE                  5       (       a  GWRU                  5       GnU R-                  SJ5        U R/                  SIGS5        U R/                  SK[1        [        GU5      5      5        U R/                  SLGS5        U R3                  5         U R5                  5          U R6                  R9                  GU5        g UR                  GS:X  ay   ScS KiGnGUR                  GR                  Sc[1        [Q        [        5      R                  R                  5      5        ScGSKJGn  U R                  SJGUGR                  5       5        g UR                  GS:X  GaU   ScS KiGnGUR                  GR                  Sc[1        [Q        [        5      R                  R                  5      5        ScGSKJGn  ScGS<KxJ.n  U" UR^                  5      n2U2R                  GSS/5      Sc   R	                  5       nU2R                  GSGS/5      Sc   R	                  5       GnU2R                  GSS/5      Sc   R	                  5       n[        U2R                  SGS/5      Sc   5      n3GUGS:X  a  GWGR                  WU3GS9Gn3OGWGRe                  WU3WGS9Gn3U R                  SJSGW3[        GU35      GS.5        g UR                  GS:X  a   ScGS<KxJ.n  U" UR^                  5      n2U2R                  SS/5      Sc   R	                  5       =(       d    S n[        U2R                  SGS/5      Sc   5      n3G[        (       a  G[        GR                  " WU3GS9O/ GnU R                  SJSGU[        GU5      GS.5        g UR                  GS:X  aB   G[        (       a  G[        GR                  " 5       OSkGS0GnU R                  SJSS0GUE5        g UR                  GS:X  a=   G[        (       a  G[        GR                  " 5       O0 nU R                  SJSUGS.5        g UR                  GS:X  a  ScS KJn  ScS KJGn   UR'                  GSSSH9 Gn[F        RH                  " GUR)                  5       5      GnS S S 5        G[        GS GW 5       S 5      GnG[        (       a  G[        GRJ                  " 5       O0 GnG[        (       a  G[        GRJ                  " 5       O0 GnU R                  SJSGWS LGU(       a  GWR                  GSS5      OSGWGWGS.5        g UR                  GS:X  Ga  ScS KGnU R-                  SJ5        U R/                  SIGS]5        U R/                  SLGS^5        U R/                  GS_GS`5        U R/                  GSaGSb5        U R/                  GSGS5        U R5                  5         G[        (       a  G[        GR                  " 5       OS Gn U R6                  R9                  GS5        U R6                  GR                  5          GWcR  ScS K^GnGUGR                  GS5        U R6                  R9                  GS5        U R6                  GR                  5         MW   GWR                  GSSH9Gn[F        R                  " GUSGS9n{U R6                  R9                  GSU{ GS3R                  SS5      5        U R6                  GR                  5         M  UR                  GS:X  GaE   [R        GS-  GnGURE                  5       (       d  U R                  SJSScSSGS.5        g [F        RH                  " GWRK                  5       5      nUR                  GS/ 5      GnG[        GS GU 5       S 5      GnSGnGU(       ap  ScS KJn  GSGWGS    3GnUR%                  GSGUGSGS.SF9Gn UR'                  GUSSH9 GnGUR)                  5       R                  SSGS6GS79GnS S S 5        GSGW;  GnU R                  SJ[M        GW5      [        GW5      UR                  GSS5      GWGS.5        g UR                  GS:X  Ga   ScS KGnScS KJGn  ScS K#Gn[        [|        GR                  R                  GSGS5      5      GnGUR'                  GSGU GS3GS4SH9 nGURI                  UR)                  5       5      GnS S S 5        GWR                  GSS5      GnGU(       d  U R                  SSkGSGSE.5        g GWGR                  GWGS4SGS9GnGUGR                  GWR                  SeGS0 GS.5      5        GURI                  GUGR                  5       5      R                  GSG0 5      R                  GS/ 5      GnGUR                  5         / GnGWR'                  GSGW GS3GS4SH9 nGURI                  UR)                  5       5      GnS S S 5        GW H  GmG[u        GU4GS jGS 5       5      (       d  M$  GTR                  GSS5      GnGU(       d  MC   GWGR                  GWGS4SGS9GnGUGR                  GWR                  SeGSGS.5      5        GWGURI                  GUGR                  5       5      R                  GSG0 5      R                  GS/ 5      -  GnGUR                  5         M     G[        5       Gn/ GnGWGW-    HY  GmFGTFR                  GS5      GTFR                  GS5      4nUGW;  d  M3  GWGR                  U5        GWRs                  GTF5        M[     / GSQGnGS/GnGW GVFG^Fs/ s H'  GmFG[u        GUF4GS jGW 5       5      (       d  M$  GTFPM)     GnGnFGW GVFG^Fs/ s H'  GmFG[u        GUF4GS jGW 5       5      (       d  M$  GTFPM)     GnGnFScSK3J3Gn  GWGWGUGUR                  5       Ro                  5       GS.Gn[R        GS-  GR	                  GWR                  GUSSGS 95        U R                  SJS[        GU5      [        GU5      GS.5        g UR                  GS:X  a   [Q        [        5      R                  R                  GSB-  GS-  Gn[        GR                  " GS[1        GU5      /[        R                  [        R                  GS9  U R                  SJSGS05        UR                  GS:X  a   [Q        [        5      R                  R                  GSB-  Gn[Q        GS5      nFGUGS-  GnGSGnGUGR	                  GU5        [        GR                  " GSGS[1        GU5      /[        R                  [        R                  GS9  U R                  SJGSGSGS.5        g UR                  GS:X  aP  [Q        GS5      nFUFRE                  5       (       a  WFRK                  5       OGSGnU R                  SJGSGUGSS  05        g UR                  GS:X  Ga  ScS K+GnScGS<KxJ.n  U" UR^                  5      GnGUR                  GSiGS/5      Sc   Gn[Q        GS5      [Q        GS5      GS.GnGUR                  GU5      GnGU(       a  GWRE                  5       (       d  U R                  SSkGS05        g GWRy                  5       GR                  GnU R*                  R                  GSS5      GnGU(       Ga  GWRY                  GSGW5      GnGU(       a2  GWR[                  Se5      (       a  [        GWR[                  Se5      5      OScGnGW(       a2  GWR[                  S5      (       a  [        GWR[                  S5      5      OGWSe-
  Gn[e        GUGWSe-
  5      GnGUGW-
  Se-   GnU R-                  GS5        U R/                  SIGS5        U R/                  GSGSGU GSGU SGU 35        U R/                  SKGU5        U R/                  GSGS5        U R/                  SLGS^5        U R3                  5         U R5                  5         G[!        GWGS5       GnGUGR#                  GU5        GUGnGUSc:  a^  GWR)                  [e        GSGW5      5      GnGU(       d  O6U R6                  R9                  GW5        GW[        GU5      -  GnGUSc:  a  M^  S S S 5        g U R-                  SJ5        U R/                  SIGS5        U R/                  SKGW5        U R/                  GSGS5        U R/                  SLGS^5        U R3                  5         U R5                  5         G[!        GWGS5       Gn GWR)                  GS5      GnGU(       d  OU R6                  R9                  GW5        M;  S S S 5        g UR                  GS:X  a  [R        GS-  GnGURE                  5       (       a  GWRU                  5       GnU R-                  SJ5        U R/                  SIS5        U R/                  SK[        GU5      5        U R/                  SLSj5        U R3                  5         U R5                  5         U R6                  R9                  GU5        g U R                  SJSS05        g G[        GTU G]  5         g ! , (       d  f       GNB= f! [:        R<                   aE  nU R                  SUR>                  s=::  a  SN:  a  O  OUR>                  OSOSSPS.5         S nAg S nAf[@         a  nU R                  SOSSQS.5         S nAg S nAff = f! [@         a    0 n GNf = f! [@         a    Sn3 GNf = fs  snKnJf ! [@         a     GM  f = fs  snf s  snf s  snf ! [@         a     GM  f = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! , (       d  f       g = f! , (       d  f       GNa= f! , (       d  f       g = f! [@         a    / ne GNf = f! [@         a(  nhU R                  SS[1        Uh5      S.5         S nhAhg S nhAhff = f! [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! [@         a'  nU R                  SSk[1        U5      05         S nAg S nAff = f! [@         a'  nU R                  SSk[1        U5      05         S nAg S nAff = f! [@         a'  nU R                  SSk[1        U5      05         S nAg S nAff = f! [@         a    U R                  SJSSS.5         g f = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = fs  snsf ! , (       d  f       GN~= f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a     GNf = f! [@         a     g f = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! , (       d  f       GNF= fs  snnf s  snnf s  snnf ! , (       d  f       GN= f! , (       d  f       GN= f! G[         a     GNf = f! , (       d  f       g = f! G[$        G[&        G[(        4 a     g f = f! [@         a    ScWSe-
  nn GNif = f! , (       d  f       g = f! G[$        G[&        G[(        4 a     g f = f! G[$        G[&        G[(        4 a     g f = f! [@         a     GNf = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a    U R                  SJ0 5         g f = f! [@         a,  nU R                  SJS[1        U5      0 0 ScGS.5         S nAg S nAff = f! [@         a'  nU R                  SSk[1        U5      05         S nAg S nAff = f! [@         a    U R                  SJWS GS.5         g f = fs  snKnJf ! , (       d  f       G{N= f! [@         a    U R                  SJGSS S GSGS.5         g f = f! [@         a*  nU R                  SJSS[1        U5      GS.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a    U R                  SJScSGS.5         g f = f! , (       d  f       GxN= f! [@         a'  nU R                  SSk[1        U5      05         S nAg S nAff = f! [@         a    U R                  SJSSGS.5         g f = f! , (       d  f       GuNe= f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a    Sn GuNf = f! [@         a     GtNf = f! [@         a    Sn GsNf = f! , (       d  f       GsN= f! [@         a  Gn[F        R                  " Sk[1        GU5      05      R                  5       GnU R-                  S5        U R/                  SIS5        U R3                  5         U R5                  5         U R6                  R9                  GU5         S GnGAg S GnGAff = f! [@         a    U R                  SJGS0 05         g f = f! [@         a    U R                  SSkGS05         g f = f! [@         a    U R                  SSkGS05         g f = f! [@         a     GmNdf = f! [@         a    U R                  SSkGS05         g f = f! [@         a     GlNf = f! [@         a    U R                  SSkGS05         g f = f! [@         a     GiNf = f! [@         a    U R                  SSkGS05         g f = f! [@         a  nU R                  SJGS2S05         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a    U R                  SJSSSGS?.5         g f = f! [@         a&    GWRs                  WR                  GSMGSN.5         GfM  f = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a     GcMt  f = f! [@         a,  nU R                  SS[1        U5      S GSc S.5         S nAg S nAff = f! [@         a    ScGn GaNf = f! [@         a,  nU R                  SS[1        U5      S GSc S.5         S nAg S nAff = f! [@         a    U R                  SSkGSq05         g f = f! [@         a    U R                  SSkGSv05         g f = fs  sGnFf ! [@         a'  nU R                  SSk[1        U5      05         S nAg S nAff = f! , (       d  f       GRN= f! [@         a    U R                  SSkGS05         g f = f! [@         a    U R                  SJGS0 05         g f = f! [@         a'  nU R                  SSk[1        U5      05         S nAg S nAff = fs  snf ! [@         a    S n GLNf = f! [@         a'  nU R                  SSk[1        U5      05         S nAg S nAff = f! [@         a    GSGnUU R-                  GS5        U R/                  SIGS5        U R/                  SK[        GUU5      5        U R3                  5         U R5                  5         U R6                  R9                  GUU5         g f = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! , (       d  f       GBNx= fs  snf ! , (       d  f       G?N= f! , (       d  f       G>N= fs  snf ! [@         a   Gn[1        GU5      WGS'    S GnGAG8N.S GnGAff = f! [@         a   Gn[1        GU5      WGS'    S GnGAG7NS GnGAff = f! , (       d  f       g = f! [@         a/  GnU R                  SJ/ [1        GU5      GS.5         S GnGAg S GnGAff = f! , (       d  f       G6N4= f! [        GR                   a    U R                  SJSGSS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! [@         a    0 Gn G4Nf = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G3NI= f! [        GR                   a    U R                  SJSGS7S.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G2N= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G1NP= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G0N= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G0NL= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G/N= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G/N= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G.Na= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G-N= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G,N= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G+N= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G+N!= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G*Np= f! [        GR                   a    U R                  SJSGSIS.5         g [@         a(  nU R                  SJS[1        U5      S.5         S nAg S nAff = f! G[$        G[&        G[(        4 a     g f = f! G[$        G[&        G[(        4 a     g f = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! [@         a(  nU R                  SS[1        U5      S.5         S nAg S nAff = f! , (       d  f       G%N]= f! [@         a    U R                  SJSSS0 GS.5         g f = f! GWGR                   a;    U R6                  R9                  GS5        U R6                  GR                  5          G#Nrf = f! G[$        G[&        G[(        4 a     Of = fGWb%  G[        (       a  G[        GR                  " GW5        g ! GWb'  G[        (       a  G[        GR                  " GW5        f f f = f! , (       d  f       G"N= f! [@         a    SGn G"Nf = f! [@         a'  nU R                  SSk[1        U5      05         S nAg S nAff = f! , (       d  f       G"Nj= f! , (       d  f       G!Nk= f! [@         a     G!My  f = fs  sGnFf s  sGnFf ! [@         a)  nU R                  SSk[1        U5      GSE.5         S nAg S nAff = f! [@         a*  nU R                  SSk[1        U5      GSE.5         S nAGNS nAff = f! [@         a)  nU R                  SSk[1        U5      GSE.5         S nAg S nAff = f! , (       d  f       g = f! , (       d  f       g = f(  Nz/api/flaneur/tile/rM  r  r  Fzbad tile pathrp  flaneurtiler  r  zbad zxyr2   zunknown tile styler1   r)   r   r   r   r
  zmapbox key missingz!https://api.mapbox.com/styles/v1/z/tiles/256/z@2x?access_token=r3   zthunderforest key missingzhttps://api.thunderforest.com/z.png?apikey=r?   zmaptiler key missingzhttps://api.maptiler.com/maps/z/256/z	.png?key=rH   zstadia key missingz#https://tiles.stadiamaps.com/tiles/r  z	?api_key=rU   rY   r-  WMSz1.3.0GetMaprZ   r[   rW   r\   rX   z	EPSG:3857256r  )SERVICEVERSIONREQUESTLAYERSSTYLESFORMATTRANSPARENTCRSWIDTHHEIGHTBBOXr]   )rl   rm   rn   r`   zjawg key missingzhttps://tile.jawg.io/z.png?access-token=rb   zgeoapify key missingz"https://maps.geoapify.com/v1/tile/z.png?apiKey=rg   zbad providerz)FlaneurTileProxy/1.0 (beachorchestra.com)z!image/png,image/*;q=0.8,*/*;q=0.5)rm  r	  r  rm  r  r`  r%  r  r  zpublic, max-age=86400r  r=  ztile upstream errorztile proxy failed)z/api/flaneur/live_locationz/api/whatsapp/live_locationrY  r  rs   r   )r  r  r  zsommerurlaub.)zsommerurlaub.htmlr  r  )r  r  r  )rk  r  r  )zsommerurlaub.webmanifestr  r  )z sommerurlaub_angebot.webmanifestr  r  )zsommerurlaub_tief.webmanifestr  r  )z!sommerurlaub-apple-touch-icon.pngrW   max-age=86400)zsommerurlaub-icon-512.pngrW   r  )	)rM  r   z/sommerurlaub.html)z/angebotz/angebot.htmlz/sommerurlaub_angebot.html)z/tiefz
/tief.htmlz/sommerurlaub_tief.html)z/sommerurlaub.webmanifest)z!/sommerurlaub_angebot.webmanifest)z/sommerurlaub_tief.webmanifest)z"/sommerurlaub-apple-touch-icon.png)z/sommerurlaub-icon-512.png)z/apple-touch-icon.pngr   z
^/v/(\d+)$rq   r  r  r  r  r  r   zVersion z nicht gefundenr  r
  r  rH  r  r	  r  r  r  r  r  r  r  r  r  r"  r  r#  r  r  r&  r  r'  r  z/api/alarmsrN  80r{  r$  r  r%  r  r(  r  r)  r   r*  r!  r+  z emil_spickzettel_rueckseite.html)z/emilz/emil/zemil_session.htmlz/api/lernbegleiter/session-datar  zurllib.parser	   fromlistr  r  r  rm  rn  T	has_imager]  rg  )r  total_eventsfotos
kurzcheckschatsz /api/lernbegleiter/session-imager  r  r  ri  z/api/lernbegleiter/versionzlernbegleiter.htmlr  z/api/lernbegleiter/staterY  r\  r   no_state)z/mathe-begleiterz/mathe-begleiter/z/mathe-mai26z/mathe-mai26/z/lernbegleiter.webmanifestzlernbegleiter.webmanifestz/photos/r  )rJ   r  r  rL   r4  )rJ   r  rL   r  zapplication/octet-streamz/api/sommerurlaub/loadr  )r  r  r>  z/api/sommerurlaub/build_statusz/api/sommerurlaub/build_resetr  r   r  r  z/api/sommerurlaub/deeper_statusz/api/sommerurlaub/versionsr  )r  versionsz/api/sommerurlaub/config)r   r   r   r*   r   r+   r   )r   )r  mapbox_token/api/healthr  zsancho-cockpit)r  serverrI  z/api/victor_input/chatgpt_inputc                    >#    [        SS/S9R                  SSS9R                  5       n [        R                  " U 5      n[        S U 5       S 5      nU(       d  g UR                  S5      =(       d    S	US
    3nT	R                  USS9 IS h  vN n[        R                  " SSSSS.S.5      nUR                  U5      I S h  vN   TR                  UR                  5       SS9I S h  vN n[        R                  " U5      nUR                  S0 5      R                  S0 5      R                  SS5      sS S S 5      IS h  vN   $  N N Na N! , IS h  vN  (       d  f       g = f7f)Nzurllib.requestr  r  r
  rp   r  c              3   V   #    U  H  nS UR                  SS5      ;   d  M  Uv   M!     g7f)chatgpt.comrY   r   Nr  r(  s     r'   r  ?CockpitHandler.do_GET.<locals>._read_chatgpt.<locals>.<genexpr>   s&     ']4a=AEERWY[L\;\4s   )	)r9  z"ws://localhost:9225/devtools/page/r'  rm  )open_timeoutc   r7  zw(document.querySelector("#prompt-textarea p") || document.querySelector("#prompt-textarea"))?.textContent?.trim() || ""T)
expressionreturnByValuer'  rc  rY  r  r  r   )r   r  r  r  r  r	  r   r  re  sendwait_forrecv)
	tabs_resptabschatgpt_tabr	  wsr%   r  r  _aio_ws2s
           r'   _read_chatgpt,CockpitHandler.do_GET.<locals>._read_chatgpt   sL     *+;yk R Z Z4a ![ !AAE ::i0D"&']4']_c"dK&#(__-CD  AJlmxy}m~l  IAF#||F|CCr"jj>P +d-1] *  !ggcl**%)]]2779a]%HH#zz$/#xx"599(BGKKGUWX  DCC
 +H  DCCCsm   BE,E
E,2EE%E,E-AE8E,EE,EEE,E)EE)%E,zKein ChatGPT-Tab auf Port 9225r  r  r  r  r  )r  r  r  rN  z/api/voice/load_transcriptr@  r  r  r  r  )r  r   rI  z/api/reise_commentsz/api/reise_annotationsz/travel_data/r  zmax-age=3600z/api/ws/status)	127.0.0.1  r  )r   rx	  z/api/prefetch_statusc              3   4   #    U  H  oS :X  d  M
  Sv   M     g7fru  r  r  s     r'   r  (CockpitHandler.do_GET.<locals>.<genexpr>6!  rv  rw  c              3   4   #    U  H  oS :X  d  M
  Sv   M     g7fry  r  r  s     r'   r  r  7!  rz  rw  c              3   4   #    U  H  oS :X  d  M
  Sv   M     g7f)r   rq   Nr  r  s     r'   r  r  8!  s     J$9q'\$9rw  )r  r   r  r  )r  z/api/health/zcockpit-minimal)r  rI  r   r  z/api/time-camera/healthzTime Travel Camera)r  r  storagefotolabor_queuery  r	  rp   r  rm  r  z[^a-zA-Z0-9._-]+r  rt  r#  zapplication/json; charset=utf-8zasset nicht gefundenr  
image/webpr  zmax-age=31536000, immutableztime-camera route unbekanntz/api/kameramotor/guardzprovider_access_guard.pyz--jsonr&  r  z{}r   r  r   r
  z/api/sancho_panesr	  r   r  r  c                 (    [        U S   5      U S'   U $ )Nr  alive)r  )rw  s    r'   check$CockpitHandler.do_GET.<locals>.check!  s    09>'
r   r  rM  c              3   T   #    U  H  nS U;   d  M  UR                  S 5      v   M      g7fr  )r  r  s     r'   r  r  !  s$     P,Cqsaxlaggcll,Cs   
((r  rN  rO  r  rQ  z/api/wohnung/loadrR  z/api/netzwerk/loadrS  z/api/quellen_bewertung_loadrT	  z/api/kameramotor/filtersz1/Users/victorholland/Vibe Coding/The Camera/Inputz
Prompt.txt)r   r   
has_prompt)r  filtersz/api/kameramotor/statusr  r  c                    > TU  S3-  nUR                  5       (       a$  [        R                  " UR                  5       5      $ 0 $ !    0 $ = f)Nr  )r  r  r  r  )r   r  r  s     r'   _load_state*CockpitHandler.do_GET.<locals>._load_state!  sG    "xu%55Byy{{$(JJr||~$>>I %Is   #A A
c                 &  > TU -  nUR                  5       (       d  / $ / n[        UR                  S5      5       H  n [        R                  " UR                  5       5      nT" UR                  5      nS H  nXe;   d  M
  XV   XF'   M     SU;  a  S US'   SU;  a  S US'   UR                  S5      (       a  US   US'   UR                  UR                  U S.UE5        M     U$ ! [         a"    UR                  UR                  U S.5         M  f = f)N*.json)rD  r
  r
  title_atdone_ateta_ms	phase1_msr  original_namer  rM  r  r
  ai_namer   r   rO  r<  r  rL  r'  r  )
r  r   r   r  r  r  r  r   r   r#   )	r  r  r  r  r   r  r  r  r  s	          r'   _list$CockpitHandler.do_GET.<locals>._list!  s   A88::byD#AFF8$45J"&**Q[[]";C"-aff"5B&B
 $%7RUCF&B  *4c*o&c1$3w<!vv&9::467J4KL 1 KKqvv(O3(OP# 6(  K  ) J KKqvv(HIJs   >C$ AC$$(DDc                 h  > T	U -  nUR                  5       (       d  / $ / nT	S-  n[        UR                  S5      5       H  n [        R                  " UR                  5       5      nX4R                   S3-  nUR                  5       (       a$  [        R                  " UR                  5       5      O0 nS H  nX;   d  M
  Xx   XX'   M     SU;  a  S US'   SU;  a  S US'   UR                  UR                  U S.UE5        M     U$ ! [         a"    UR                  UR                  U S.5         M  f = f)Nr	  r	  r  )rD  r
  r  r  r  r
  r   r   r   r  r
  estimatejob_previewopenai_usager(  r	  r	  r 
  rO  r<  r  )	r  r   r   r  r  r  r  r   r#   )
r  r  r  state_dir_oair  r   r  r  r  r  s
            r'   _list_openai+CockpitHandler.do_GET.<locals>._list_openai!  s   A88::byD$*^$;M#AFF8$45J"&**Q[[]";C!.FF851A!AB?Ayy{{BLLN!;PRB&U
 $%7RUCF&U  *4c*o&c1$3w< KKqvv(O3(OP 6   K  ) J KKqvv(HIJs   A8D?A D(D10D1r  r'  r
  r   _activer	  openai_doner  openai_failed)r  rT  r  r   r  z!/api/kameramotor/output-thumbnail)r	   r  r
  )r  r~  r  r|  zno imager  r  r  r  300r  r  r  75r  r  r	  r  r
  r
  )r  settingsz/api/kameramotor/thumbnailr   _thumbcacher   )heicheifrL   )r!  r"  r  r  zmax-age=604800, immutablez/api/kameramotor/eventsz6/Users/victorholland/Vibe Coding/The Camera/.sse_queueztext/event-streamzno-cache
Connectionz
keep-aliveAccess-Control-Allow-Origin*r  s   data: {"type":"job-update"}

   s   data: {"type":"ping"}

r	  z/api/naming/image-fullr  r	  r	  r   95)rJ   r  rL   webpz/api/naming/list-images>   r  r  r	  r	  r~  r  c              3   z   >#    U  H0  oR                   R                  5       T;   d  M"  UR                  v   M2     g 7fr   )r  r?  r   )r  r  extss     r'   r  r  "  s*     Y+<a@PTX@X6166+<s   !;;)r  r  z/api/naming/vision-key-statusr	  r	  r	  )r  has_keylast_logr	  r	  z/api/naming/resultsznaming_results.json)images	processedr  r   z/api/reisebericht/queuer   )r  r  r   r   r  r  z/api/reisebericht/status/r	  z/api/reisebericht/debug_log/r	
  r   )r  rx   r   r   z/api/reisebericht/audio/)unquoterV	  rC	  i  	forbiddenznicht gefundenRangezbytes=r  r     zContent-Rangezbytes r	  zAccept-Rangesr  r  r_  z/reiseberichte/r  z/api/reisebericht/archiver   c                 6    U R                  5       R                  $ r   r   r   s    r'   r   'CockpitHandler.do_GET.<locals>.<lambda>e#  s    0A0Ar   r   rn  _quellen.json)r  rI  r   r   rI  r   )r  r.  z/api/version/statuscurrentr  r  z/api/stimmen/loadr}	  rs  r  r  )r  rs  r  r  )r  r   rs  r  r  z/api/costs/summaryz/api/kostenr  r  )r  month)z/api/feedback/allz/api/design_feedback/allr  r.  z/api/design_eval/allr  z/api/design_standard/allr  z/api/page_versionr  r  r  r~  )r  r  r~  )r  r  r  c              3   X   #    U  H   oR                  5       =(       d    US ;   v   M"     g7fr  r  r  s     r'   r  r  #  r  r  r  r  rS  z/api/zotify/statusr   r  )r   rY   )votify_readyr  z/presence/melaniez&http://127.0.0.1:8092/presence/melanieofflinedisconnected)r   r  r  	wa_statusz/api/song/statuszModul nicht geladenspotify_connectedz/api/spotify/status)r  	connected)r  r>  r   z/api/spotify/auth_url)r  rY   z/api/spotify/song_auth_urlz/spotify/callbackz/api/spotify/song_callbackr  z!/song_erkennung.html?spotify_ok=1z"/song_erkennung.html?spotify_err=1z/api/talk/tsr  zwatson_ts.txt)rI  	availablez/api/watson/statuszcandidates.json
source.mp3rI  r[  )r   r[  rL  i  0 victor_holland)r   r[  )r   r   r   r  r   r  friedrich_bauschultezvoice_id.txt)r  with_sourcer@  short_fileshf_token_setwatson_voice_idz/api/convai/agent_configr  r  r  z/api/convai/signed_urlzagent_id fehltr   r	  zKein ElevenLabs API KeyzIhttps://api.elevenlabs.io/v1/convai/conversation/get_signed_url?agent_id=r	  r%  
signed_url)r  rG  zKeine signed_url)r  r   ro  z/api/elevenlabs/keyr   )r  r   z/api/elevenlabs/voicesr   genderfemale	page_size100z5https://api.elevenlabs.io/v1/shared-voices?page_size=z&gender=z&search=r>  z/watson-audio/z/api/rode_clip_tagsr&	  r'	  r  z/api/rode_emotion_tagsr7	  emotionsz/api/rode_transcriptsztranscripts.jsonz/api/rode_not_clean_tagsr9	  z/api/rode_clips/indexz
index.jsonclipszindex.json nicht lesbarzindex.json nicht vorhandenz/api/holmes_indexr<	  z/api/holmes_tagsz/api/holmes_emotion_tagsz/api/holmes_not_clean_tagsz/api/brueckner_clip_tagsrB	  z/api/brueckner_clips/indexz/api/brueckner_gf_clip_tagsrH	  z/api/brueckner_gf_clips/indexz/api/brueckner_gf_emotion_tagsz /api/brueckner_gf_not_clean_tagsz/api/brueckner_gf_transcriptsz/api/elsholtz_clip_tagsrM	  z/api/elsholtz_clips/indexz/api/candy/outputr  )zcapture-paner  r	  z-pr  z-80r  r  rA  r'  z/api/pi/wifi/keychain_statusr 	  z"acct"[^<\n]*?<blob>="(.+?)"r	  z(unbekannt))r  r  r	  )r  r+  r	  z/api/anruf/status/z!^[0-9]{8}-[0-9]{6}-[a-z0-9]{4,8}$z
invalid idr
  zAnruf nicht gefundenr   r	  r  z/api/anruf/listr  r  rh  )r'  rI  r  r   r  corrupt)r'  r   )r'  r   rI  c                 f    U R                  S5      =(       d    U R                  S5      =(       d    S$ )NrI  r'  r   r  r  s    r'   r   r4  %  s!    QUU4[%EAEE$K%E2%Er   )r  r   z/api/anruf/audio/r	  zno audior  r  z	audio/oggz/api/jobs/queuez/api/voice_library/index>   r&	  __pycache__r   alte_stimmenstewart_clipsrM	  rB	  originale_clipsrR	  rQ	  testsc              3   >   #    U  H  oR                   S :H  v   M     g7frC	  N)r  r  s     r'   r  r  
&  s     'XDWqF(:DWr  c              3   \   #    U  H"  oR                   S :X  d  M  UR                  v   M$     g7frV  )r  r   r  s     r'   r  r  &  s"     %`6IXXY_M_faff6Is   ,,)r   
has_source
clip_count	has_tests
first_test	has_clonevoicesz/holmes_clips/z^[a-z0-9_]+\.mp3$z/voices_dialog/holmes_watson_dialogz/voices/)r@  ztest.mp3ru   rS  z/api/evidence/photosrr   r{  r  16r}   z3.5z
bad paramszstart requiredr  c                    > [        U 5      S:X  a  U S-   n TR                  R                  U 5      T-
  R                  5       $ r  r  )r  r  
_epoch2001s    r'   _to_ts%CockpitHandler.do_GET.<locals>._to_ts&  s9    q6Q;AI2215
BQQSSr   r  zbad datez?~/Pictures/Fotos-Mediathek.photoslibrary/database/Photos.sqlitez>~/Pictures/Fotos-Mediathek.photoslibrary/resources/derivativesc                   > [         U  S3-  nUR                  5       (       a  U S-   SU  S34$ U (       a  U S   OSnTR                  R                  TX S-   5      nTR                  R                  TX S-   5      nTR                  R                  U5      (       a  U SU  34$ TR                  R                  U5      (       a  U S-   SU  S34$ g	)
zPReturn (key, url) if a local thumbnail exists (cache or derivatives), else None.r  __cache/api/photo_thumb/r   r  _1_105_c.jpeg.THM__thmN)r  r  r   r  )rj  r  firstp105pthmr  
deriv_bases        r'   _thumb%CockpitHandler.do_GET.<locals>._thumb&  s     )dV4=8==??4)+;?PQUPVV]=^+^$^#'QSxx}}Z8NOxx}}ZvF88??4((9J4&7Q1Q*Q88??4((CTUYTZZ_A`1`*`r   c                 ~   U (       d  / $ U  Vs/ s H  o"S   PM	     nn[        U5      [        U5      pTXT-
  n[        U5       Vs/ s H  n/ PM     nnU  HB  nUS:  a$  [        [        US   U-
  U-  U-  5      US-
  5      OSn	X   R	                  U5        MD     U H  n
U
R                  S S9  M     U$ s  snf s  snf )z
Divide candidates into n equal time buckets.
Returns list of buckets (each is a list of candidates),
with favorites sorted to the front within each bucket.
rq   r   c                 (    U S   (       a  SOSU S   4$ Nru   r   rq   r  r}  s    r'   r   BCockpitHandler.do_GET.<locals>._temporal_buckets.<locals>.<lambda>&  s    qt!AaD)Ar   rs  )r  r  r  rB  r   r  )r  r   r}  ts_allrw  t1spanr  bucketsr  r  s              r'   _temporal_buckets0CockpitHandler.do_GET.<locals>._temporal_buckets&  s     ""9(23
1A$
3Vc&kBw',Qx0x!2x0#AEIAX#c1Q4"9"4q"891q5ASTCL''* $ !AFFAFB ! 4 1s   B5B:r  r   r  r  zQSELECT COUNT(*) FROM ZASSET WHERE ZDATECREATED BETWEEN ? AND ? AND ZDATECREATED>0a  SELECT ZUUID, ZDATECREATED, ZLATITUDE, ZLONGITUDE, ZFAVORITE
                           FROM ZASSET
                           WHERE ZDATECREATED BETWEEN ? AND ? AND ZDATECREATED>0
                           ORDER BY ZDATECREATED
                           LIMIT 3000zSELECT COUNT(*) FROM ZASSET
                           WHERE ZDATECREATED BETWEEN ? AND ? AND ZDATECREATED>0
                             AND ZLATITUDE BETWEEN ? AND ? AND ZLONGITUDE BETWEEN ? AND ?a?  SELECT ZUUID, ZDATECREATED, ZLATITUDE, ZLONGITUDE, ZFAVORITE
                           FROM ZASSET
                           WHERE ZDATECREATED BETWEEN ? AND ? AND ZDATECREATED>0
                             AND ZLATITUDE BETWEEN ? AND ? AND ZLONGITUDE BETWEEN ? AND ?
                           ORDER BY ZDATECREATEDzVSELECT COUNT(*) FROM ZASSET WHERE ZDATECREATED BETWEEN ? AND ? AND ZDATECREATED>0 AND zSELECT ZUUID, ZDATECREATED, ZLATITUDE, ZLONGITUDE, ZFAVORITE
                               FROM ZASSET
                               WHERE ZDATECREATED BETWEEN ? AND ? AND ZDATECREATED>0 AND z_
                               ORDER BY ZDATECREATED
                               LIMIT 3000iO:)tz)rj  rY   rs   rr   is_favoriter  zSELECT ZUUID, ZDATECREATED, ZLATITUDE, ZLONGITUDE, ZFAVORITE
                           FROM ZASSET
                           WHERE ZDATECREATED BETWEEN ? AND ? AND ZDATECREATED>0 AND zW
                           ORDER BY ZDATECREATED
                           LIMIT 3000c                 (    U S   (       a  SOSU S   4$ rr  r  rs  s    r'   r   r4  ''  s    qt!AaD1Ir   rs  r  c              3   4   #    U  H  oS :X  d  M
  Sv   M     g7fru  r  r  s     r'   r  r  0'  s     ,`8M1V_Q_QQ8Mrw  )r4  r  total_dbgps_fallbackfetchingrf  re  ri  izpublic, max-age=31536000r  c              3   *   #    U  H	  oS ;   v   M     g7f)z0123456789ABCDEFabcdef-Nr  r  s     r'   r  r  G'  s     Dt!55tr  zinvalid uuidrg  rh  z/api/voice_clips/indexrP	  u$   voice parameter fehlt oder ungültigz/api/voice_clip_tagsz/lebensstationen.jsonrS	  z$lebensstationen.json nicht vorhandenz/api/reisebericht/archivrM  Reiseberichte_Musikc                 6    U R                  5       R                  $ r   r   r  s    r'   r   r4  '  s    QVVX->->r   )r   r  r6  sidecarr  z/api/export/standalonezpage parameter fehltrr  s   403 Forbiddenr		  zoutside cockpit dirs   404 Not FoundzD<script[^>]+src=["\'][^"\']*network-aware\.js["\'][^>]*>\s*</script>r	  c                 h   U R                  S5      nUR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  U R                  S5      $ [        UR                  S5      -  n UR	                  SS9nS	U S
3$ ! [
         a    U R                  S5      s $ f = f)Nrq   http://https:////r   rM  rY  r  z<style>
z	
</style>r   rU  r  r  r  r#   )r   hrefcss_pathcss_contents       r'   _inline_css*CockpitHandler.do_GET.<locals>._inline_css'  s    771:Dy11T__Z5P5PTXTcTcdhTiTi wwqz)*T[[-==H*&.&8&8'&8&J!*;-zBB$ * wwqz)*   >B B10B1zV<link[^>]+rel=["\']stylesheet["\'][^>]+href=["\']([^"\']+)["\'][^>]*/?>\s*(?:</link>)?zV<link[^>]+href=["\']([^"\']+)["\'][^>]+rel=["\']stylesheet["\'][^>]*/?>\s*(?:</link>)?c                 h   U R                  S5      nUR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  U R                  S5      $ [        UR                  S5      -  n UR	                  SS9nS	U S
3$ ! [
         a    U R                  S5      s $ f = f)Nrq   r  r  r  r   rM  rY  r  z	<script>
z

</script>r  )r   r  js_path
js_contents       r'   
_inline_js)CockpitHandler.do_GET.<locals>._inline_js(  s    ''!*C~~i00CNN:4N4NRUR`R`aeRfRf wwqz))CJJsO;G*%,%6%6%6%H
!+J<{CC$ * wwqz)*r  z5<script[^>]+src=["\']([^"\']+)["\'][^>]*>\s*</script>c                   > U R                  S5      nU R                  S5      nU R                  S5      nUR                  S5      (       dB  UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  U R                  S5      $ [        UR                  S	5      -  n UR	                  5       nUR
                  R                  5       R                  S
5      nSSSSSSSS.nUR                  US5      nT
R                  U5      R                  S5      n	U SU SU	 U 3$ ! [         a    U R                  S5      s $ f = f)Nrq   rp   rm  r  r  r  zdata:r   rM  r  ri  rW   z	image/gifzimage/svg+xmlr  zimage/x-icon)rJ   r  rL   gifsvgr(  icorK  z;base64,)r   rU  r  r  r  r  r?  r   	b64encoderg  r#   )r   prefixr  r  ru  img_datar  mime_mapr	  b64r  s             r'   _inline_img*CockpitHandler.do_GET.<locals>._inline_img(  sC   WWQZF''!*CWWQZF~~i00CNN:4N4NRUR`R`aeRfRfjmjxjx  zA  kB  kB wwqz)*SZZ_<H*#+#6#6#8&oo335<<SA+7+6{+:L+9$;  (||C="nnX6==gF"(tfHSE&JJ$ * wwqz)*s   7B D8 8EEz$(<img[^>]+src=["\'])([^"\']+)(["\'])z<title>([^<]+)</title>u   [^\w\-äöüÄÖÜß ]r  rr  z_standalone.htmlzContent-Dispositionzattachment; filename="rs  )z	/hub.html/hub.manifest.json/hub-icon.pngr  r  zno-cache, must-revalidatez.webmanifest#no-cache, no-store, must-revalidate)rM  r   z/index.htmlz
index.htmlPragmaExpiresz/api/jackett/searchr  z
q required)r  r  r  z/api/sabnzbd/statusr  )r  r  r  z/api/sabnzbd/configr
  sectionserversrc	  rM  )r	  usenet_serverz/api/nzbgeek/searchz/api/ytdlp/status/z/api/audible/statusr  r  r  r  )
configured
cli_existsz/api/audible/library	pratchettr  r4  scheibenwelt	discworld)r  r  r  z/api/ytdlp/filesc                 6    U R                  5       R                  $ r   r   r  s    r'   r   r4  (      1668CTCTr   r  )r   rL  z*.wavc                 6    U R                  5       R                  $ r   r   r  s    r'   r   r4  (  s    qvvxGXGXr   r  )r   rL  r  r	  r  z/api/realdebrid/downloadsz/api/realdebrid/status/z/api/voice_audit/clip/r	  z/api/voice_audit/status/)r  r	  r	  z/api/voice_audit/preview_urlszvoice_audit_preview_urls.jsonr	  r	  r	  r	  r	  z/api/voice_audit/sentencesr	  z/api/voice_audit/dateszvoice_audit_dates.jsonz/api/voice_demo_clipswatson_demo_clips)r  r  z/api/ccusagez/opt/homebrew/bin/ccusage)monthlydailyr  r  r   r   r	  r	  monthly_errorr  daily_errorz/api/receiptszreceipts.jsonrK  )receiptsr   z/api/anthropic_costsz/api/spawnsz/api/cloudflare/test-tokenrY	  rZ	  r[	  r]	  rp  rq  r^	  r_	  u(   Token ungültig oder Zone nicht gefunden)r  r%  	zone_nameaccount_namez/api/task/api-tokenz192.168.z10.)r  z::1	localhostu"   Nur im lokalen Netzwerk verfügbarzToken-Datei fehltz0https://tasks.beachorchestra.com/api/task/submit)r  r  r  z/api/task/statusc                 h  > TU -  nUR                  SS9  [        UR                  S5      S SS9n/ nUS S  H  n [        R                  " UR                  SS95      nUR                  UR                  S	UR                  5      UR                  S
S5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  S.5        M     [        U5      US.$ ! [         a:    UR                  UR                  UR                  SSSUR                  S.5         M  f = f)NTr  r	  c                 6    U R                  5       R                  $ r   r   r  s    r'   r   @CockpitHandler.do_GET.<locals>._count_and_list.<locals>.<lambda>)  r  r   r   r  rY  r  r'  r4  r   r  r	  rI  )r'  r4  r  r	  rI  r   )r  r   )r   r   r   r  r  r  r   r   r  r   r#   rA  )r  r   r  r   r  r  rB   s         r'   _count_and_list.CockpitHandler.do_GET.<locals>._count_and_list)  sd   vAGGTG*"166(#39T^bcEE"3BZ@ $

1;;;+H IA!LLdAFF0CaeeT[]_N`jkjojopvxzj{  FG  FK  FK  LR  TV  FW  _`  _d  _d  ei  km  _n  |}  |B  |B  *C  D ( &)Z%@@  ) @!LLQS]_giwxw}w})~@s   BC--A D10D1r  r  
PROCESSINGDONEERRORr  r  )token_configureddaily_countdaily_limitblocked_todayr  )r  r  r	  r   r   r   
checked_atz/api/cloudflare/tunnel-configzKein Token gespeichertr\	  r`	  ra	  rb	  r  rt  Fehlerrd	  )r  rd	  z/api/reisebericht/map-keysr   c           	           [         R                  " SSSU SUS/S[         R                  S9R                  5       $ ! [         a     gf = fr   r  )svcaccs     r'   _kc"CockpitHandler.do_GET.<locals>._kc)  sU    %22#%<dCsTXY!**<*<>>CegF ! s   8; 
AAr4   z$20d481d7-b68b-4c45-9424-5e0357f6a298)r3   rH   z /api/reisebericht/test-europeana)r   r   r   zeuropeana-apir   r   r   zKein Key gespeichertz5https://api.europeana.eu/record/v2/search.json?wskey=z$&query=Berlin&rows=1&profile=minimalrm  zReiseberichtSystem/1.0totalResultsr   )r  r  samplez!/api/reisebericht/test-foursquare)r   r   r   zfoursquare-legacy-apir   r   r   z1fsq3-Key nicht gespeichert (Legacy-Feld in Setup)zahttps://places-api.foursquare.com/places/search?ll=52.52%2C13.40&limit=1&fields=name%2Ccategoriesz
2025-06-17)r  zX-Places-Api-Versionr	  rm  r  )r  r  r  z$/api/reisebericht/test-thunderforest)r   r   r   r4   r   r+   r   z7https://api.thunderforest.com/pioneer/1/1/0.png?apikey=)r  http_statusz/api/reisebericht/test-flickr)r   r   r   z
flickr-apir   r   r   zFhttps://api.flickr.com/services/rest/?method=flickr.test.echo&api_key=z&format=json&nojsoncallback=1r   )r  r   z/api/reisebericht/test-unsplash)r   r   r   r  r   r   r   z>https://api.unsplash.com/photos/random?query=Berlin&client_id=r  )rm  r  r$  r)  zFoto gefunden)r  r  z"/api/reisebericht/test-opentripmap)r   r   r   zopentripmap-apir   r   r   zlhttps://api.opentripmap.com/0.1/en/places/radius?radius=1000&lon=13.40&lat=52.52&format=json&limit=1&apikey=r   
propertiesz /api/reisebericht/test-mapillary)r   r   r   zmapillary-apir   r   r   z0https://graph.mapillary.com/images?access_token=z2&lat=52.520&lng=13.405&radius=50&fields=id&limit=1r  zkeine Bilder im Testbereichz /api/reisebericht/test-freesound)r   r   r   zfreesound-apir   r   r   zChttps://freesound.org/apiv2/search/text/?query=berlin+street&token=z&page_size=1&fields=namez/api/reisebericht/test-tomtom)r   r   r   z
tomtom-apir   r   r   z7https://api.tomtom.com/search/2/search/Berlin.json?key=z&limit=1poifreeformAddressz/api/reisebericht/test-ddb)r   r   r   zddb-apir   r   r   zZhttps://api.deutsche-digitale-bibliothek.de/search?query=Berlin&rows=1&oauth_consumer_key=)r	  rm  numberOfResultsnumFounddocs)r  r  z/api/reisebericht/test-mapbox)r   r   r   z
mapbox-apir   r   r   zKhttps://api.mapbox.com/geocoding/v5/mapbox.places/Berlin.json?access_token=
place_namez/api/reisebericht/test-genius)r   r   r   z
genius-apir   r   r   z1https://api.genius.com/search?q=Berlin&per_page=1)r  rm  responsehitsr|	  primary_artistz/watson_demo_clips/z#no-store, no-cache, must-revalidatez/api/chatgpt/statusr
  z/api/chatgpt/searchrw  ftsrT  20semantic)rN  )rN  role_filterz/api/cherry/inbox50)r   rN  )r  rX  r  z/api/cherry/statsr
  r
  r
  z/api/cherry/bridge/statusr
  c              3      #    U  H5  nS UR                  SS5      ;   d  SUR                  SS5      ;   d  M1  Uv   M7     g7f)r  rY   r   zchat.openai.comNr  r(  s     r'   r  r  K+  s@       !AEq]aeeESUFV5VZkopototuz|~oZEs   0?	?)r   r  	tab_titlelistenerreactor)r   r  r  r  z/api/cherry/inbox/streamzX-Accel-Bufferingnos   : connected

s   : heartbeat

r  zdata: r  z/api/zefys/statuszzefys_session.json)has_sessioncookie_countr  session_validzefys_cookiesc              3   :   #    U  H  oS    S:X  d  M  Uv   M     g7f)r   r  Nr  r  s     r'   r  r  +  s     !U]i9>T!!]s   	zsession=r  zQhttps://zefys.staatsbibliothek-berlin.de/search/?query=test&facet_name=DDR-PressezMozilla/5.0)Cookierm  zBitte loggen Sie sich einr  z/api/zefys/harvestZEFYS_CDP_PORT9226zhttp://localhost:z/json/versionr9  zKein webSocketDebuggerUrl)r  suppress_originzStorage.getCookiesr  r!  z/jsonc              3   h   >#    U  H'  oTR                  S S5      R                  5       ;   v   M)     g7f)rY   r   Nr  )r  rm   tabs     r'   r  r  +  s*     `C_ab 1 7 7 99C_s   /2)zefysstaatsbibliothekzNetwork.getAllCookies)r'  rc  domain)r  r  xlogongooglec              3   L   >#    U  H  oTR                  S S5      ;   v   M     g7fr  r   Nr  r  r  r}  s     r'   r  r  +  s#     >n`m[\AEE(SUDV?V`m   !$c              3   L   >#    U  H  oTR                  S S5      ;   v   M     g7fr  r  r  s     r'   r  r  +  s#     ?pao\]QUU8TVEW@Waor  )r!  r  google_cookiesr  )r   r  zefys_countz/api/zefys/scrapezfetch_zefys_ddr.pypython3rw	  r  z/api/oderberger/refreshz/tmp/oderberger_refresh.logz_oderberger_refresh.pya  #!/usr/bin/env python3
import subprocess, json, sys
from pathlib import Path

log = open('/tmp/oderberger_refresh.log', 'w', buffering=1)
def out(msg):
    print(msg, file=log, flush=True)
    print(msg, flush=True)

out('Starte Oderberger-Archiv-Refresh...')

# Step 1: Scrape ZEFYS (all pages)
scraper = Path(__file__).parent / 'scrape_zefys_pages20_129.py'
if scraper.exists():
    out('Scrappe ZEFYS DDR-Presse...')
    r = subprocess.run(['python3', '-u', str(scraper)], capture_output=True, text=True, timeout=600)
    out(r.stdout[-500:] if r.stdout else 'kein Output')
    if r.returncode != 0:
        out(f'FEHLER: {r.stderr[-200:]}')

# Step 2: Merge new articles
data_dir = Path(__file__).parent / 'data'
existing_file = data_dir / 'zefys_ddr_articles.json'
new_file = data_dir / 'zefys_ddr_pages20_129.json'
if new_file.exists():
    existing = json.loads(existing_file.read_text()) if existing_file.exists() else []
    new_arts = json.loads(new_file.read_text())
    seen = set()
    merged = []
    for a in existing + new_arts:
        key = (a.get('date',''), a.get('headline','')[:40])
        if key not in seen:
            seen.add(key)
            merged.append(a)
    merged.sort(key=lambda a: a.get('date',''))
    existing_file.write_text(json.dumps(merged, ensure_ascii=False, indent=2))
    out(f'Merged: {len(merged)} Artikel')

# Step 3: Rebuild archive HTML
builder = Path(__file__).parent / 'build_oderberger_archiv.py'
out('Baue Archiv-HTML...')
r = subprocess.run(['python3', str(builder)], capture_output=True, text=True, timeout=120)
out(r.stdout)
if r.returncode != 0:
    out(f'Bau-FEHLER: {r.stderr[-200:]}')
    sys.exit(1)
out('Fertig.')
r9  )r   rx   z/api/oderberger/refresh_statuszKein Log vorhanden.rx   z/api/transkript/audiotrack2un   /Volumes/Hot Disk/Experten 2026 - Vorgespräche/Originale/Teams_2026-06-03_085824/EXTRACT_Track2_Systemton.wavum   /Volumes/Hot Disk/Experten 2026 - Vorgespräche/Originale/Teams_2026-06-03_085824/EXTRACT_Track3_Mikrofon.wav)r  track3zAudio nicht gefundenzbytes=(\d*)-(\d*)z	audio/wavz/api/transkript/loadr  )r   )r   r   rB  rU  r"   r  rA  r
  rr
  isdigit_FLANEUR_TILE_PROVIDERSr   r(   r   rB  r
   r[   r4  r  r  r  r  r  r  r   r  r  r  r  	_urlerrorrW  r  r#   rb
  r  r  r  r  rB  r   r   r  r  r   r?  r   r	   r  rX  r  r  r  r   r  r  r  r  r   rh  rX
  r   r   r   r  r?  r  r  ri  r  r  r;
  r   r    r!   rg  r  asyncio
websocketsr  r  r   r  rf
  rg
  TRAVEL_DATA_DIRis_filer  r  
settimeoutr  r  r=
  r  r  r   rp  rT  rn  r  r  r  re  rf  rr  r  r   r   r   r   r   r  r  r  r	  r
  r  r   r  r  r   r  r  r>
  r?
  r  ra  getmtimesha1rd  r   rsplitr  r  r   r   r   r   r   r   r   r/  r   r  r  r  seekBrokenPipeErrorConnectionResetErrorr  r   	with_namer  r  r~  r  r/  rA
  r  rB
  r  r  r  r  rO
  rP
  
get_statusspotify_is_connectedspotify_auth_urlspotify_handle_callbackloadr  r  r  r  r  r  r  r   r   r  r  r,  r  r  rS
  r   r@  r  r   r  r  fetchoner  rK  r  r  r  r  r  r  r   rA  rb  rj  rt  ry  r  r  r  r  rh
  r  r  r  r  r   dirnamer  r  rW
  client_addressr  r  r  ru
  r   r  r
  r
  	db_statussemantic_searchry
  rz
  get_messages	get_statsr}
  r
  r  r   r	  _cherry_listener_watson_reactorr  subscribe_sseEmptyunsubscribe_sse	websocketcreate_connectionr  r  r   r  r   r  do_GET(  r?  r  r~  r  r  r  r(  stylerl   rm   y_filern   rv  r1   r   style_idrY   r  wmsr   r   r   r   r  rK  r  r5  r  rE  _host_su_map_paths_fname_ctype_cc_su_file_su_data_re_su_vm_vnr
  r
  	_mik_file	_mik_data	_mwm_file	_mwm_data_alarm_file_alarm_data_alarm_m_file_alarm_m_datar
  rN  	_mv2_file	_mv2_data
_mv2m_file
_mv2m_data_tc_file_tc_data_m_file_m_data_sf_sd_rf_rd_ef_ed_jsd_dsdr  r  rU  r  r   r  r  r  r  r  r  _jsi_dsiqs2day2r  	log_file2foto_events	img_bytes_lb_file_mtime_st_file_st_data_mb_file_mb_data_mf_file_mf_datar
  fpathr	  r  r  r  r  r   tokr  r  r   r
  _dt_vlr
  r
  rI  r  fp_sockrw  r  r   r  r   tailr   r   rh  r   guardsanchosr  r   r7  r  rO  r   	input_dirr  r  r=  r  r  
all_queuedrT  jr  _pqsqpr{  r  real_dirr  r  r
  r  r%  r  rk  _hl_tosru  r  _ckey_tcdir_tcpath_tf3szr  tmp3	SSE_QUEUEdeadline	last_pingrU  _pqs2r   rt  _if_sp_if_tfr  rk  r+  r,  r  r{  results_file	queue_idsr  r   r   _uqfsize	range_hdrr{  r  r
  r  	remainingr  r  specr  r  r.  r  r  r  scr
  rC  r  r  _pvj_pvfile_pvstorerT  r
  votify_cookiesr  r   r>  r  r  r
  candidates_filer  r  coveragerD  r@  r  
size_bytesrL  hf_checkrE  voice_id_filerF  r
  r  r9  
key_resultr  r
  r   result2rG  e3_sp_el_lnr  _sp_el2_ur_el2_up_el2el_key2_qp_search_gender
_page_size_el_voices_url_vreq_vrespr
  r%
  r  r  r  	etags_rawr  tfr  
index_file	tags_dataro  r
  _re3r   r  r  r  _re_ar  diskr   _re_aar  
audio_filer]  r
  excludedrX  rY  r  idx_fileidx_data	tests_dirrZ  r[  r   r   
voice_nameclip_dir_sqlite3rs   rr   r}   rb  ts_startts_endr  rn  ry  r  r  r  r  r  	cands_rawrx  bucketrj  flatflonis_favrJ  
thumb_uuid	thumb_urldb2fb_countfb_cands
fb_bucketsr}  bg_uuidsis_cacheis_thm
cache_pathrj  r4  thm_pathrP	  rM  	reise_dir	mp3_filessidecar_namesidecar_path_re_expbody_err	html_pathr  cockpit_resolvedr,  r  r  r  title_mr4  
safe_title	out_bytesr   	file_nameversrv
has_serverr  r  r  rY  _va_lang_va_ct_va_clip	_va_vid_s_va_clips_dir_s
_va_resultr	  r	  _va_pu_file_va_wf	_va_wdata_va_sf_va_raw	_va_sdata_va_k_va_v_va_senf_va_df_vdc_dir
_vdc_files_sp_ccCCUSAGE	r_monthly	e_monthlyr_dailye_daily_os_rreceipts_path_f_r_e_rr  r  r!  r#  r  zone	client_ipis_localr  r  r  r"  rd	  r  r  r   r  r  r  
_clip_file
_clip_datar   r  rw  msgsstatsr  rc  _tabs_chatgpt_lst_rctr  sub_qr/  rC  session_filer  	session_cr  _cookie_req_html_ws_sync	_urlreq_z_jzzefys_cdp_portcdp_infor	  r  browser_cookiestab_cookiesr  tab_wsrb  r  all_cookieszefys_domainsgoogle_domainsr  _dt_zsession_datarR  reisebericht_dirrefresh_scriptrefresh_codelog_content	_re_audio_params_which
_AUDIO_MAP_af_fsize_ranger_  _start_end_length_fh_rem_chunkr
  r
  r  r  r  ra  r  r  r  rB   rm  r*  r  r  r  r  s                                                                                                                                                                                                                                                                                                                                        `                                                                                                                                                    @@@@@@@@@@@@@r'   r!  CockpitHandler.do_GET  sɵ   $))$  "";;!!"677KK%%c*005E5zQ

3u GH>C;A!)#tv~V__V=T=T

3u GHsAIIKKAIIKKAIIKK

3uy AB)--h7C%wwx'<<

3u7K LMTMwwv8#+C	NCGGIr<RSC

3u?S(TU"8}U3H=hZ{STRUUVWXVYYZ[\Z]]nornstC_,+C	NCGGIr<RSC

3u?Z([\"8}U3H:8*AaS!AaSP\]`\abCZ'+C	NCGGIr<RSC

3u?U(VW"8}U3H:8*E!AaSPQRSQTT]^a]bcCX%+C	NCGGIr<RSC

3u?S(TU$'M%$8MHc?z1#QqcQRSTRUUVWZV[[dehdijCY&h-.C-CCFCPQFTWXYTZ-[*D$de*s*Y#(#*#+"%h-"$"%''(K"@'*ww}f'E*!&"'#'&$qav >8 . C ]*h-.55!5DCV^+C	NCGGIr<RSC

3u?Q(RS"8}U3H1(1QCq1QCGYZ]Y^_CZ'+C	NCGGIr<RSC

3u?U(VW"8}U3H>xj!AaSPQRSQTT`ad`efCZ'h-.55!5DCJJs5>$JK!))#"MA8  !((b9Q668DIIMM.+FE : ""3'  7  !13s4y>B  2IJ

  "

  &
 ;;WW$++--**%:%D%Dg%D%VWC 

3$swwu~T/I/hcggV[ndhNh*iwz {|  

3%R @A   ,O,,1n NS EG0u 9F59|1l,o
G 29--;;&(#K069H((#+#6#6#8**3/((@(()93x=I((#>

((*

((2 2A  ,,}fkk:C#))A,'k*/Ec#Ye-TT==??#..0F&&s+$$^5OP$$%5s6{C$$_jAJJL$$&JJ$$V,

3HSE*I JKO,,	1Is#Z)=>JJLH%%&++*Bs#Z5JJLN++y0Hs#Z)<=JJLL))fkkY.Fs#Z)JKJJLL))fkkY.Fs#Z)JKJJLI&&6;;)+Cs#Z):;JJL;;55[)O;I!,,.Is#^-GH-s9~>_j9JJLJJY';;44[),BBI!,,.Is#^-HI-s9~>_j9JJLJJY';;VV{+.BBK%002Ks#^-GH-s;/?@_j9JJLJJ[);;99 -0KKM)446Ms#^-HI-s=/AB_j9JJLJJ]+;;-'&,,'BBFF7TF3A67 JJsLQE3)@AB;;;;[),>>I!,,.Is#^-GH-s9~>_j9JJLJJY';;77k*-FFJ#..0Js#^-HI-s:?_j9JJLJJZ(;;77K(+;;H**,Hs#^-GH-s8}=_j9JJLJJX&;;77;'*@@G((*Gs#^-GH-s7|<_j9JJLJJW%;;??{#&==C.."Cs#^-GH-s3x8_j9JJLJJS!;;=={#&HHC.."Cs#^-GH-s3x8_j9JJLJJS!;;--{#&99C.."Cs#^-GH-s3x8_j9JJLJJS!;;;;1,/GGLNj\BKKFLLYB&&$))//"3"="="?!@A!DC#Vn4HF  $...@KKMD::<Dt!!%D!1B!vvf~779xxz%Vztq!Q+EUdadz%V26;"MM"- N !'B1!%%-6*AQEB%+LVquuV}/K!VJL &B1!%%-6*AQEBJJs #F(  ;;<<1,/GGL^zlCLLV\\ZC776DIIOO$5$?$?$A#BCAFDcggecU+A./C$$v6IK!!%///ALLND::<Dt!!%D!1B!vvf~7 + 2 22 6  8 O c+&&k#.>.B.B;.O.O

3+ 67!{3'7'DEIs#^\:-s9~>_j9JJLJJY';;66K(+??H6>oo6G6GS112QFJJsWf-.;;44K(+EEH  #..0""3'  1CD  !13x=A  *=

  "

  *  

3: 67;;ddK(+??H**,Hs#^-GH-s8}=_j9JJLJJX&;;66K(+FFH**,Hs#^-HI-s8}=_j9JJLJJX&;;!!*--KKJ 0188=E%C5LU[[5Eb5IMh5h#h.6<<>>++c*2.446C#/kcuvzz{~  A[  \D ++-D&&s+$$^T:$$%5s4yAJJL$$&JJ$$T*s#T%5%5%7;;22@ -0LL	##%% JJy':':G':'LMEJJs4$?@
  JJs4$>? ;;::

39.  ;;99&,	(#$&	&!()	*%%'	'"	  
 JJsT4L);;;; 

3:/ !;;66 -0LLMP]PdPdPfPftzz-"9"97"9"KLln JJs4T(4.5IJK;;44$A&&m;; '  &(557  

3tS AB ;;-'0JJs43C3779K^K^K`ab;;;;@::Y Y" xx0<JJs5;[$\]
  JJs4$>? ;;66@ $X 5 5 < <~ MPZ Z]l l ''))::m&=&=w&=&OPDJJsT4$84$89
  JJs4"R[]$^_ ;;66@7!::<00<"&x."7"7">">"OR_"_dopxoyy}b~"~"))++*44g4FD_113<<tCDBJJs4R$HI
  JJs41$EF ;;//3ViVpVpVrVrtzz"5"?"?"?"QRxz

3% ;;223YoYvYvYxYxtzz"8"B"BG"B"TU  A

3% ;;!!/22++c/234C 3&Byy{{rzz||		W0D
7==?D&&s+$$^5GH$$%5s4yA$$_nEJJL$$&JJ$$T*
  

3+ 67;;**"ALLOB		-.	

3D$ ?@ ;;00M\%8%8%:MMGG,"5"5"7GGDJL$7$7$9JJFJJs&),&79 :;;99 JJs4s5::</@D\mno;;33JJs+|,#&'D#E	  ;;!!":;;-@{{3'?#@#ABHHM+/

3R)e%(DJJs5>$JKu:?JJsOF$;<u:?uQx:'=JJsM&$9:u:?uQx8';66"5sE!HED."&**]6-B1[`"a"h"hip"q**3/((9Z[(()93s7|;LM((*E

((*

((1'/(:TAD;;==

3u?U(VW(E{{((*f4 +**,7 ,??,D&&s+$$^U;$$%5s3t9~F$$_W[WfWfgpWqWq6S  xB  CJJL$$&JJ$$T*

3u7T UV ;;22
@'*DDNNCNNCJ#I26T2Ozz!(("2d3%&\\\"88%&XXef%5DN

$((4..3c4@ ;;--+-G") H'Q!vr):)@)@)BB "!%%b*A*G*G*II  #!%%	2*>*D*D*FF 'G H - ''A'6"bffUG45 7JJsF#;;22TZT`T`PFLL,>,>s,CPPfhB66-rvvf~/J.Q.Q.STD 24&>>AJJsDJJq{{}5L;;--11AJJsDJJq{{}5L;;..22AJJsDJJq{{}5L;;77::AJJsDJJq{{G{'DEY[\;;44@ !TU		 1 1 34A88::):):3)?)? "#l"2KNN !4?4F4F4H4HK 0b&1&8&8&:$ 	 5 

3t @A ;;33J@$++m;"W,	    2 . #6]
"$b#A$QtW-Bvvm,,RVVF^^'+)a(q) $ 

3%&m)DD$V}|M/JJ$Xo1NN!  ;;==#@9&,,'&&-a02	;B3tG}4467h&9&9)&D&DDQXML`L`LbLbJJsWk$:;W 5 5 78Axx~~'/HH(vv((55xvv((--x H	 9
  JJsWj$9:;--VE-J		&$s8})8V)?D!388- >B  C !N557	SXX%%%6""3'  >  !13s9~3FG  /B  "

  + ;;55##m3oEByy{{

3tBLLZaLDb9c de  

3t >?;;66,@9EE&,,'66&2$/22	8@s4>1134bty'A'AhI^I^I`I`JJsWk$:; TYY//9:8f#4"<"<">?IIK$++m;mKTD9 EFN3>>## ' 2 2 4I"..*11#q9"=C+55&)-=&=U5&)-=&=T4#66fU6S

&$H"18V"1?A")499"6 GK ! L %)O$>$>$@	TYY..$.?$(N$=$=$?	''	2""3'  >  !13s9~3FG  2MN  "

  + ;;33 UVI""3'  1DE  *=  |<  !>D  " ::<#-!JJL	jjlX- ''))!&/&9&97&9&K&Q&Q&SG& ) 4 4R' 4 J $

 0 01S T $

 0 0 2,1JJL	 zz|i/25

(()EF

((*$)JJL	KK$# jjlX-( ;;226v||$Bvvfrd+A.HfgG)H8??#4#4

3+ 67@?oo++-,, 336%3PCIIKJJhoW[ #Hw BRV  X $SXX 9 9 ;IN))T):'D ( 3 3 5I#/#.FFIc#**UX/[gFh ""3'  6  !13s9~3FG  .A  "

  + ;;33efGGDY7??+<YYEJJs4%89;;99"))M9<LLH"))M9<MMHoo'[H,>,>,@,F,F,H,S,STZ,[GH   **,224??A(-592JJs4GRS;;00!((=8;QQG~~DJJsDJJw/@/@'/@/R$ST
  

3#;;//&--=@UUL""$$DJJsDJJ|/E/Ew/E/W$XY
  

32AVZ [\;;33 N	 -4]]_]_63hS\@\3_]-4]]_Z_63hSY@Y3_Z-4]]_[_63hSZ@Z3_[  JJs"" Y#g,6  ;;!!"=>>[[&&s+B/Fkk&) 

3u7K LM  

3t 3s 34;;!!"@AA[['',2237;F++f%C

3/ :;VJJs4R0HTWT[T[\dTepspwpwx  qA  B  C;;!!"<==3C(B$C$DELLSQREe|tu}ENN64J4J

3+ 67!E)E<<>>

3*: ;<fJJL((E(("5IEAI3E##H--!!"++C0-21XCaM1E-0Z!^aCaMeVWiC 5[1_F""3'  F5'3%q2PQ""3'^\:-s6{;_g6_j9JJL
%&"GGEN &I#a- "E9(= >$e

((/!SZ/		 $a- ' ;;!!"3443fkk#&7"8"9:AA#FGCsyy~%S

3+ 67"S(113Eu:((]-B-B-D)E)KLL

3+ 67<<>>

3*: ;<f\\'')F 26!$7"9

3+ 67

,, LL,,W5		s!5!5h!?!?2(sA6q9??QGJ#zz#q11$'FE"%a&C As5%!)45%S%!)!45uq&&s+$$_ugQse1UG6TU&&s+  7  !13v;?  ':  *=

  "eT*b$*	'!m$&GGCy,A$BE#( % JJ,,U3%U3I (!m + ##%Ds#^U3-s3t9~>_j9JJL

  & ;;55@##D4#@!-"4"4W"=&A4QQTRTVC!mmCHH,FGG$'HHD"QSTE~~''!!%G,=,=w,=,O!PB/1vvd|E$K/1vvfb/AE&M/1vvi/DE), != #s 347JNafNN5)!V" 

3t @A ;;//JJsXy12;;11),FFI!!(JJsDJJy/B/BG/B/T$UV
  

3#;;--&--0FFL	j&&((::l&<&<g&<&NODJJs4DHHYPR<S26((;2K,0HHUA,>%@ A  JJs4BRXY$Z[ ;;..JJsN,-;;-'&,,'BVVGgY/2F// 3

3V 45 ;;KK!+0G"GHGJJsY01;;00!+0C"CDGJJsY01;;44!+0H"HIGJJsY01;;--&,,'B66&2$'*DA#%,,/CC>Enn>N>N4::g&7&7&9:TV T2.

3%))I:NZ_ZcZcdlnpZq rs ;;!!-00;;s=12399#>Ds"JT"JJJ

3u~ FG"vS\1J@J@Q@Q@S@Sj**G*<Y[GJJsTg>?;;..&,,'BVVEB4(+F&K/

3F 34  "&/_!_

3$2$9$9$;]h]n]n]pq]pUYUVXYQ1X;quuUB?O PP]pq!  ;;--{,[[!IST[UYZ::affh/D V

3% ;;,,<

3u7L MN))+F*3*H*H*JF&'JJsF#;;//<

3u7L MNT%::<	

3t) DE ;;11<

3u7L MN@002

3tC 89 ;;66<

3u7L MN@002

3tC 89 ;;--@\1\&,,'B66&2$'*D66t<""3'=?9Ei  S1

  " 	 ""3'  -QR

  ";;.(!G+o=G~~CW..06689BJJs2D$AB
  

3qu =>;;..///2CCO"3/*a!%1J +J #AV9D+d2\ACzz||%(XXZ%7%7
"'
T(9D(@!"D gt@Tah(ij%7DDT<T'..quuWVZG[ho/pq =U7!11quuWd?S'TU $ 77#c37d # D'22a7YDAVAVAX<Y 14J J^ [GTG[G[G]G]-"9"9";"A"A"Ccg

3"#&x=&#.$0'6!  ;;44%(FFK!!##C**[%:%:%<=CJJs4SWWZQS=T$UV
  

3u" =>;;22&,,'BzB408RD!<BBDH

3u7G HIAAA!XXO#'d & 
 7A6K6Kq6P**002VX 0 : :G : L W W Y::<223HII%)ZZQ%7%:%@%@%BF! !Z JJs5;T$UV||_`h_ij)62 $  \\$\3u"jj6G 4$[[r:
JJs4z$JK
  JJs5;MVYZaVb$cd ;;//',,Ofnn -  %'  /99;FFH99;112GHH%(YYsA%6q%9%?%?%AF  I
 ::T&\F&PRST[[]Ds#^-?@JJLJJT";;!!":;;\\!..Ogoo /  %'  6<<(Cggh-a0Gggh
3A6Gug6q9J&#XYcXddlmtlu!v"w1G0H&IINw@WX__UB_76#[[]F 8""3'  1CD

  "

  ( ;;!!"233++c"2345C*S0J  ""z'8'8F'B!,,.""3'  >  !13t9=

  "

  &  

3+ 67;;//)L8;FI!!2JJsVTZZ	8K8KU\8K8]-^$_`
  

3-;;22"\14GGB=?YY[[

2<<#89bIE!)1",Q"4"4A3jQRTXFYFY_aa *JJsZ/0;;11"\14FFB8:		4::bll734DJJs]D12;;44"\14IIB8:		4::bll734DJJsVTN+;;11*\9LHJ  ""JJJsWdjj9M9MW^9M9_.`$ab
  

3*F GH;;--*^;lJJ  ""ZZgtzz*:N:NX_:N:`/a%bc  

3*F GH;;,,"^3kAB8:		4::bll734DJJsVTN+;;44"^36IIB=?YY[[

2<<#89bIE!)1",Q"4"4A3jQRTXFYFY_aa *JJsZ/0;;66"^36KKB8:		4::bll734DJJsVTN+;;44),==KII!!!%I,?,?,?,Q!RYJJsVY/0;;66*->>MJ  ""ZZgtzz*:N:NX_:N:`/a%bc  

3*F GH;;77),@@;NII!!!%I,?,?,?,Q!RYJJsVY/0;;99*-AALPJ  ""X**Z%9%97%9%KLCJJs:c4+@+@CwPSnU  

3*F GH;;::"%99<OOB=?YY[[

2<<#89bIE!)1",Q"4"4A3jQRTXFYFY_aa *JJsZ/0;;<<"%99<QQB8:		4::bll734DJJsVTN+;;99"%99<NNB8:		4::bll734DJJs]D12;;33),<<{JII!!!%I,?,?,?,Q!RYJJsVY/0;;55*-==LJ  ""ZZgtzz*:N:NX_:N:`/a%bc  

3*F GH;;--&w//

3".
/#K"TT%??%--	 CIBSBSWXBX,,I,>^`

3% 01 ;;88@^^O#'d4 ==A%%$CRYYOA KK(;RYYG)*1771:DJJsdD$AB
  JJseT$BC ;;00R+-v,

3tG TU ;;!!"677{{3';#<#=>DDSIH;;CXNN

3u| DE""8,C{,X6!XXh7FJJs"(*0F*:$!%'!2%   JJsyCY$Z[JJs''(L9''(+) 
 ;;++E#++-A88:: qvvhe,,Axxzz
N#'::akk7k.K#LD!LL&*hhtQVV&<&*hhtn.2hh|.D*.((8*<,0HHY,?,E2t+L*  +..qvvr:"#&&&)ggh	&B"%''$-& ' .6 JJEtJTJJs4%89;;!!"566{{3':#;#<=CCCHH<< DhOO

3u| DE"X-I##%%

3+ 67J48*AcU 3388::!"J	 5
 

3* 56((*D$"""	
 c*##**3/1KL  s#^T2-s4y9_g6JJLJJT";;++F"))++ / 9 97 9 K V V X#zz|4% %TZZ-= >	 !Y 

3te <= ;;44/F!^#$5$=$=$?@E <<>>  ::Dx'4==+B+BdooVYFZFZ^b^m^mnq^r^r ::ot<< "',"6!>!>!@J% !"J 1tfFO CI ''))#,|#;#??,,/+/::h6H6HRY6H6Z+[>HSW>X>XS]^_
 !&I %I ''))i.>.>.@.@$''XIDUDUDW'X$X	!%J %%`i6G6G6I%``04T!W$
MM $&0&0%.&0&+n&<%D%D%F# A AP 

36 23 ;;!!"233{{((-b1Hyy-x88)N:XE<<>> ++-D&&s+$$^\B$$%5s4yA$$_g>JJL$$&JJ$$T*s#;;!!"344{{((-b1Hyy-x88),BBXM<<>> ++-D&&s+$$^\B$$%5s4yA$$_g>JJL$$&JJ$$T*;;!!*--KK%%c*005E5zQ58/I#I"1X
99_j99-
:U1XEE||~~$//1**3/((F(()93t9E(('B

((*

((.UqU1X%8U1X=N=Nv=V=V"1X
 899_j99ciiH\^f>g>g-
:WDxOE||~~$//1**3/((F(()93t9E(('B

((*

((.UqU1X1B%BuQxGXGXY_G`G` 89918<<-0AAHLE||~~$//1**3/((F(()93t9E(('B

((*

((.UqU1X%6%6x%@%@U1XEVEVW]E^E^ 8 899_h77CIIFZ\d<e<e-88CE||~~$//1**3/((F(()93t9E(('B

((*

((.s#;;00BB&,,'BArvvecU3A67rvvecU3A67".q1w/2S$!8!;<bArvvh8;< 

3*: ;<fdAq1JT T?!%=256#;.8e;K ,,QSI,,PRJ & GH Ll<%%i[&At%Lh	!8q!zzk!6* ,,4HJq :H !#

)
 "6*!, -5HJ   "zz] "6VSZVSZI	 J
 KS(*UV XH !#

4
 "6VSZVSZI!J KS(*   1}'+#%::tu~t  A%v.$008
1$> %'JJ!ZZcYd e*-
 &v.%0 19
 " 
 ,DOUC%F7|u,e8>4b$f#X"4L1451J	#NNJy37;?<47LL4N4N02Y36<<3C3C 5O 5EEMXjEY,[ \ " 9? &" w<1$\\hlsVWx#'L"**U9+X+FD*QC"{{pqzp{|!6* ,,4HJq :H  #{{VV_U` a&)
 "6* , -5HJ  IIK!|#+%6tH~u%M
&0F"7|u4e@F <b$f'+X$*4L#$1<=$9J	$+NNJy;?CG<<?LL<V<V8:Y;><<;K;K =W =MMUXV`Ma4c %d %* AG '1" w<%'HqL]=Q=Q=S=S.4!'I/  R /1 !%'6AaD6'F&N&N&P !%! /  RRUSU WH  (2 JJswW)1<),,`8K8K8M,`)`b c ;;!!"566++c"5678C||I.H\\'*F3Bx dV4=!@A
88??:..j$/1QVVXd/&&s+$$^\B$$_6PQ$$&JJ$$T*  &&s+T-=-=-?%3s83DDtDDD

3. 9:,,PRJ#DGEz5$:PQJz5$-HH#((//(33%
XX__Z00),)B)BX
SXX__Z%@%@""3'  "
D)..0Ds#^\:-s4y9_.EFJJLJJT" ;;22&,,'BFF7RD)!,224E		/5 A A

3*P QR*wf-==LJ  ""J**Z%9%97%9%KLC#-c4#8#8Ccgggs>SEJJsWe$45
  

3*F GH ;;00&,,'BFF7RD)!,224E		/5 A A

3*P QR)ugV,<<{JI!!2JJsVTZZ	8K8KU\8K8]-^$_`
  

3- ;;1144Axxzz	7<<>D&&s+$$^5GH$$%5s4yAJJL$$&JJ$$T*
  

3*P QR;;44		i//AI3 %%''  )0022!xx6) .6aff.D 2 .0  #>M%crN	"AB#$66O#;L#,|#;L"G#**,,+&*jj1G1GQX1G1Y&ZG MM$%FF!# "

#*	#  #  

3& 12  ;;22 !&,,'B66&2$'*002D

3u7M NOd{ddlddl+""3'  >  !13x=A

  "

  *#d*I$,,.#.#6#6#8 8}//4D0E0KLLQY]mQm$%:;; ##%%Y->->-@-@+""3'  >  !13x=A

  "

  *[@ **G*< {{[G$6$6 # 	* {{mW-?-? # 
 {{mW-?-? # 	* {{LG,>,> # * *( {{;W-?-? #  "..)BD'J\J\]4;a(..0gWYAZ$[[)BCO
'--/77SA#2F
(\)9: KK0	""3'  1KL  !6:PQYPZZ[8\]  !13y>B

  "

  +  ;;NN#fkk&8&8&==I##%%""3'  "'')D{{222/"1s#^T2-s4y9_.IJJJLJJT" ;;//**3/I#i/I!!i&7&7&9&9d)>S ++-""3'  1LM  !13t9=  2WX

  "

  &;;((FKK3,>&++QSBS(.7O(OU[U`U`UgUghkUlI#i/I!!i&7&7&9&9 ++-""3'  1KL  !13t9=  2WX  :6  C0

  "

  & ;;//&,,'BsRD!!$**,A

3u| DE%a(GJJs4Gc'lST ;;//(D	*CJJs7$#63779UXCYdhij;;//9D9K9K9M9M$**[2245SUC|i-CDCswwx06B;;IFGJJJsD1C,DWabc;;//&,,'BsRD!!$**,A

3u| DEv%a(GJJs4Gc'lST ;;!!"677++c"6789??DC!ooc* JJcssC,IG[3IJ ;;//%B!!##HHc+.	6:uU,0tR  I\\Q&D3qxx~~/?+@1+DJJs2[=O=O=QRS;;00$&E$) HEq[QUU8B=ORSRWRWX_`bRc=c<j<j<l-l*quuWR/@.G.G.II'AEE'",=+D+D+FF EI H JJsE	CPUJWX;;!!"455EM..s39T^bcdgeghaffqvvx?O?OPT?TUY?Y[\9]^_ iM..w7=Xbfghkiklaffqvvx?O?OPT?TUY?Y[\9]glmn mJJsWe,- ;;229;'GJJs\734;;55GNN,- JJsVTN+;;!!";<<[[%>!?!@AGGLFkk&) 

3$  

3/ :; ;;!!":;;KK$< = >?EEcJPPQTUE5zQ,1)6,/BBWLRZQ[[\]c\ddhOii??$$#..0D&&s+$$^\B$$%5s4yA$$_jAJJL$$&JJ$$T*s#T%5%5%7;;!!"<==C(B$C$DEKKCPI/2EE	QOJ$vB!F!B4.C'SE,6A&'hhj&LQVVX5E5E5LJsO w %
 JJsWj12;;99+.MMK!!##

3

;+@+@'+@+R ST  

3#;;66&)EEFJP--//

6#3#3W#3#EF_aIJJs[)45;;11&)@@FHNdjj!1!17!1!CD]_GI 'u,6ud,C,C5UZ5'`b	%  !0JJsI&;;66(+GGH  

3

8+=+=w+=+O PQ  

3#;;22&)AAF}}

3

6+;+;W+;+M NO  

3#;;11H~,,/BBHJ  .6.>.>.@r.@AHHPVDVf[\[a[a[c[k[knq[qfaff.@
r!JJsj3z?KL ;;.('1G!#b=F	9"JJi2#'dBn:d+33nV=mn ' 	
 ''1,1A1A1G1G1I1I(,

93C3C(D(H(HTV(WF9%	5 **gx0#'dBn:d+33nV=mn % 
 %%*w~~/C/C/E/E&*jj&@&D&DWb&QF7O JJsF# ;;/)!JJOOEJJ,>,>x,H/ZMF-w?4JJsDJJtyy{$;< @  ;;00JJs023 ;;-'JJsKM* ;;66@."//Wj&8&8::?%'  JJs5;Y$Z[]c?
3.5eW,=Oabmm&VWcVd$eovmw]]3]3t::diik2D 4xx	**$((82D2DJJs5;e$fgioH~a(

3tT
QUV\Q]osowow  yB  DF  pG  pK  pK  LR  T^  p_  !`  a
 ;;//++A.I!,,Z8 GI<P<PQV<W G!%FF 

3u7[ \]#%E

3u7J KLJJs4%Ewxy;;,,&@&"))A A (224 IYI`I`IbIbTZZ(8(B(B(DEhjF ::f%.&+aAFF

3-h7"1,"?+F3,W5,01B,C'-zz'1'='7)/Iq)A	! #&,,"5"5"7"A"A"Cc"I!   ;;99@."//Wj&8&8::?%'  JJs5;S$TUW]?
C	.5eW,=OabFzlR^_h^iixymmCm9]]3]3t::diik2D 4xx	**!XXh3FJJs5W]6!9==;Sck$lmou((8R044XrBFFyRTU

3t @A
  ;;66 JJs!$%8!9!G   ;;<<@. --lj&8&8::?%'  JJs5;Q$RSU[McURvwmmC,@X1YmZ]]3]2d::diik2D 33"-;@qgt4Q7b

3tev NO
 ;;==@. --tj&8&8::?%'  JJs5;n$oprxymmC'.se_,80":	2m  ]]3]2d::diik2D 3((9b17>3B

3tc'lf UV
 ;;@@@. --rj&8&8::?%'  JJs5;Q$RSU[OPSuUmmC,@X1YmZ]]3]2d;;D 3

3ts{4 HI
 ;;99@. --ij&8&8::?%'  JJs5;Q$RSU[^_b^c  dA  BmmC,@X1YmZ]]3]2d::diik2D 3XXf%-

3r488F3C DE
 ;;;;@. --kj&8&8::?%'  JJs5;Q$RSU[VWZV[\mmC":&*2m  ]]3]2d::diik2D 3((=1cTXX>O5PcTcehfhi

3tv >?
 ;;>>@. --nj&8&8::?%'  JJs5;Q$RSU[VVYUZ\mmC,@X1YmZ]]3]2d::diik2D 388J3FN!\266vrBTV

3tc(mv VW
 ;;<<@. --lj&8&8::?%'  JJs5;Q$RSU[((+u,^`mmC,@X1YmZ]]3]2d::diik2D 3,

3tc%jEJ58<<b+APm!o p ;;<<@. --lj&8&8::?%'  JJs5;Q$RSU[558E9QSmmC,@X1YmZ]]3]2d::diik2D 3!,((9b18?'!*..4R"M

3tev NO
 ;;99@. --ij&8&8::?%'  JJs5;Q$RSU[OPSuT\]mmC,@X1YmZ]]3]2d::diik2D 3((9b1!!*..3C"1:>>)R8D WWV_O9JB0OF

3tc'lfUXVXk Z[
 ;;66@ --fj&8&8::?%'  JJs5;Q$RSU[.rsvrwxmmC<N^v1wmx]]3]3t::diik2D 4"34 F)R044Z@FTXXi488DE  

3te <=
 ;;99@ --ij&8&8::?%'  JJs5;Q$RSU[.cdgchhpqmmC,@X1YmZ]]3]2d::diik2D 388J3CK!r:3B?QS

3tc(mv VW
 ;;99@ --ij&8&8::?%'  JJs5;Q$RSU[.mmG07uoMef $ h ]]3]2d::diik2D 3xx
B/33FB?QHb1A !gb 1#2 67uQUUCSTV=W=[=[\bce=fgjhj=k<lmF

3tc$i6 RS
  ;;((FKK9,D++$$S)9\C#%E||~~%--//'')""3'  1KL  !13s4y>B  *=

  "JJ$$T*  ;;!!"788V[[=Q=QRX=Y=Yh..1C1CC1HHJ  ""'224
""3'  >  !13s:3GH  2WX

  "JJ$$Z0  ;;//@"		  CX(=(=(D(D$EF9

3 01 ;;//@"		  CX(=(=(D(D$EF99&,,'-a077903::<-a0779BFF7TF3A67:%"221E2BG"kk!5dkKG

3t#g, WX  ;;--@9fll+2$/288:BdRVVGdV4Q78S]S]336Oce

3tD	 RS ;;--@5?Z//1gOkEl

3t 5u 56 ;;55@5?Zn//1R

3ts ;< ;;55==k[[!=q[IR JJrwwy1E J  !AE  !A  CG  H8B
'2247Az113r

3##+4#7>Fgr!:B $#!  ;;44s#^-@A_j9\<8:C@0$75?ZM//1TE9

  !34

  "})288B<

(();<

((* + %		"	 5"&**U"G

((6'$)?)F)Fw)OP

((* , ;;--3*-AA#**,,JJsE1Z\ot$uvzz,"8"8":; $" = !U]!UW[\	 %0 (7);(<=G;;k+2- P ' D. [[q[9R$&GGI$4$4WY$4$OE :(C5(P 

3#'	?$'$6 $R 8%2	!  ;;..6F,2"!$RZZ^^4Df%M!N&&):>:J-'Xbc&dhi"yy2H e!&<bAJJswA\$]^`f//SW/X		6JVX"YZ["%))BGGI"6":":8R"H"L"LYXZ"[
 &&):>:J%'PZ[&\`a99QVVX.D ]C`C_```!$)?!C%x!!)!;!;FA_c!;!dBGGCIIA?V.W$XY'399RWWY+?+C+CHR+P+T+TU^_a+bbKHHJ   u (;6A55=!%%/:C$#**1-	 7
 !H"*,7 oKq3>n`m>n;nK o-8!q[C?pao?p<p!![!q6*%2&4 %		 5 5 7	  33??IIl15II 

34[AQbefsbt uv ;;--	Fh..55FI]]  F,%--%--
 

39 56 ;;33=F#'>#8#8#?#?.#P  =>!14L!L/ ` )),7  c.&9:%--%--
 

39=Z [\ ;;::9:H2://2C2C(,,.I^KJJsUK$789 ;;11"56<<(G[[(4Q7F   P  Q   O  PJ ..(Ccjjll

3*@ ABXXZ''F\\%%gr2Fv__%96B-/BHHQKKRXXa[)Q-/BHHQKKRXXa[)VaZT6A:.-!+""3'  =  F6(!D66(2ST  !17;  ':  *=

  "#t_HHV$"D(!$#eT*:!;%!

((0F+ ( %.  ""3'  =  !16:  ':  *=

  "#t_!$%%!

((0	  % ;;00%(??K!!###..0""3'  1CD  !13u:>  *=

  "

  '  

3u.oi :9 && r

SAFF%8S%8166c%ZoCpqq   M

3u7J KLLM ! CP  B &W  ) ! !BLB2  ) ! !d  @

3us1v >??@   !
    A

3us2w ?@@AB  @

3us1v >??@  @

3us1v >??@  @

3us1v >??@  3

3#a& 1223  3

3#a& 1223  ! 7JJsWc!f$566 	7  B

3E4 @ABF  @

3us1v >??@  @

3us1v >??@H 76H  @

3us1v >??@Z  @

3us1v >??@L  @

3us1v >??@l  @

3us1v >??@4  ) ! !  D  @

3us1v >??@0 ! DJJs53q6$BCC 	D ! DJJs53q6$BCC 	D  ^Z[   B "  '&  $%97C F % 2%&	ss2" +*  ()=wG  $%97C $  ) ! !  @

3us1v >??@ ! (JJsB' 	(   j

3us1v"[]fg hiij  3

3#a& 12230  A

3$ ?@A* r VU  {

394W[jx yz{$  T

3u53q6 RSST  @

3us1v >??@  @

3us1v >??@6 ! CJJs15$AB 	C +*@  3

3#a& 1223 ! CJJs5b$AB 	C> 43  A

3us2w ?@@A   ! "   87  &jj'3s8!45<<>""3'  1CD

  "

  %%&8 ! 2JJsVRL1 	2< ! JJJsW.G$HI 	J !W$**S7<U2V"W  X8 !&$& !W$**S7<U2V"W  X !&$& !W$**S7<U2V"W  X> !&$& !W$**S7<U2V"W  X$  /

3"../"  @

3us1v >??@  R

3t% PQR`  ) N!LL))LMMN  

3us1v >?b $- % $%  F

3us1vds| DEEF: $- /-.
/*  F

3us1vds| DEEFf  A

3, 78&A  ?

3* 56?^ R  <

3#b' 23V<  0/j ! JJJsW.G$HI 	J$ ! 2JJsVRL1 	2$ ! 7JJsWc!f$566 	7  ) +&*G+  3

3#a& 1223<  +""3'  >  !13x=A

  "

  *X  @

3us1v >??@@ &H,  f s$  9*-i.''9  5(+G}%%5 @?   F

3R#d) DEEF6 43 00 X

3u7U VW   @

3us1v >??@N !  F $  @

3us1v >??@" 43 00 R

3u7O PQ   @

3us1v >??@< 32 00 P

3u7M NO   @

3us1v >??@* 32
 00 P

3u7M NO   @

3us1v >??@ 32 00 P

3u7M NO   @

3us1v >??@ 32 00 P

3u7M NO   @

3us1v >??@" 32 00 P

3u7M NO   @

3us1v >??@ 32
 00 P

3u7M NO   @

3us1v >??@  32
 00 P

3u7M NO   @

3us1v >??@ 32 00 P

3u7M NO   @

3us1v >??@ 32 00 P

3u7M NO   @

3us1v >??@ 43 00 P

3u7M NO   @

3us1v >??@ 32
 00 P

3u7M NO   @

3us1v >??@ 32 00 P

3u7M NO   @

3us1v >??@$ ()=wG " ()=wG   @

3us1v >??@(  @

3us1v >??@  @

3us1v >??@  @

3us1v >??@  @

3us1v >??@ JI  k

3E%VXfh ijk< 88 +

(();<

((*+ $%97C  $!11%8 $!11%8 *4$. :9 % .(-.  3

3#a& 1223 ed ]\  ) ! ! !p!q  F

37SV DEEF  F

37SV DEEFB  F

37SV DEEFP %_.  %_ s  AK} -AK} 
AK} 'AK} D
K} AK} +AK} 8-K} %-K}BK} 'K" K5 R49L@S-L@S>L@TL@T&L@ UL@ UL@%U,L@%U8L@*VL@*[7L@/qALA r#LA sLA6t%LBu LBv%:LB* xALB= {ALC2 |	LC2 |1A:LD' ~,LD' B5LE BLE B5ALF DALG G-BLG9 K6LH- QA4LI S*LI S33LI T'C?LI X'ALI Y9DLI ]=LI ^&CLJ b*LJ<b<$LJ<c$$LJ<dLJ<d.LKnCLK q9C8LL vB-LL= x3B/LL= {#D.LL= B2B9LM2 E,H?LM2 OB=LN8 RA<LN' T	BLN8 XFLO d+3LO= f13LP2 hLQ'h7LRiLQ9i1LQ9i7LRjLQ?j3LQ?j9LRkLRk4LRk:LRm;LRwALR/ {LS {(A.LS}LS D8A#LS0 JLT J A.LTLLT N#LT7 OBLU& Q A'LUSA8LU& V3LV XBLV= Z
LV= \LW6 `)BLX* i'LYj	LY( j %LYkLY( n-LZ o1-L[	 q-L[> w=L\3 yL]+ yL]y&C"L]+ }C L]+ AAL^ D6BL_ GAL_ H(L_ I%L_I'8L_ J !L_ K-L` LA	L` M(L` Q-L`0 SALa T(LaT;A&La [(7Ld d*7Ld& f/7Le o4%Le0 q'7Lf s/%Lf& u#ALf7 %Lg @87Lg- C BLh EB0Lh> HLh> H5/Li3 OALk P0B#LjSA-Lk ]ALl ^9&Ll_-Ll ` DLm! e ALmfC$Lm! HB?Ln L&Ln? NGLo* U.FLo* \C Lo* _Lo$_#Lo$`
Lo$`Lo* d;Lpr<A+Lp0 w27Lq y1B	Lq: })Ls },Lr.~Lr.~Lr.~A-Ls @$Lr3@0ALs FA)Ls: J,H$Lv l8Lw q"B
Lws0Lwz  Lw|/Lw)R0Lw;S	Lw;S*Lw;UB!Lx  W6B!Lx- \ Ly+ \7Ly]Ly+ ^;ALz9 `=Lz9 a%Lz'a:ALz9 cALz9 g-A	L|. h7AL| i=CL|. mAL}5 n6AL}5 o<%L}#p!A$L}5 rAL}5 t AL( u;.L( v)%LwA-L( yAMA z*1MA {%MA	| A MA }3AMC ,MC :MB<@!MC @<AME B.ME C%MD/C*AME EAMF4 F.MF4 G
%MF"G/AMF4 IAMH' J7,MH' K#%MHLA$MH' N AMJ O.MJ P	%MJP.AMJ RAML S:.ML T(%MK;UA/ML WAMN  X+.MN  Y%MM.Y>B*MN  \<AMO3 ^5MO3 _%MO!_*BMO3 bAMQ& c 5MQ& d%MQd:A$MQ& f2AMS h3MS h9%MSiB5MS p&MT: u MU vA7MU6 xEMV+ ~ B/MW  AA MX B;MY
 C0MZ D(MY?D)B%MZ JBM\	 LA4MZ9 NM\	 N(9M^' O"BM^' Q(M^ Q9$M^RM^ R->M^' S?AM` U"M_U8<M` V5B2M` Y'"M_-Z	+M` Z8M` [BM_?]1A	M` ^>=M` _;#M``"M``)M` `5#M`aM`a#BM` dBMa fB/Mb
 s8A=Mc x>Mc}
K}}K} }K}3;K~3~3K KK"K21K25L@@L@@L@@
L@@L@@/
L@>@=L@>A
LA3ALA.A.LA3A6
LBB
LBB
LB'B*LB:B9LB:B=
LC/CLC*C*LC/C2
LD$C<LDDLD$D'
LED1LEELEE
LFE&LF	F	LFF
LGFLF=F=LGG
LG6GLG1G1LG6G9
LH*HLH%H%LH*H-LIILII
LJILI?I?LJJ
LJ9JLJ4J4LJ9K
LKK
LLKLL L LLL
LL:LLL5L5LL:L=
LM/MLM*M*LM/M2
LN$M<LNNLN$N'
LN5N1LN8 N4LN5N5LN8 N8
LOOLOO
LO:OLO5O5LO:O=
LP/PLP*P*LP/P2
LQ$P<LQQLQ$Q'
LQ6Q9LRR
LRR
LR,R/LR>R=LR>S
LSSLS SLS SLS-S,LS-S0LTTLTT
LTTLT TLT TLT4T3LT4T7LUULUU
LU#ULU& U"LU#U#LU& U&
LVU0LVVLVVLV:V9LV:V=
LW3W"LW.W.LW3W6
LX'X LX"X"LX'X* LYYLYY
LY%Y LY( Y($LZZLZZ
L[Z L[[L[[	
L[;[L[6[6L[;[>
L\0\L\+\+L\0\3 L]]L]]
L](]#L]+ ]+
L^]5L^^L^^ L__L__
L__L_ _
L`	_!L``L`	`L``L``
L`-`,L`-`0La `?La a
LaaLa aLc>a BLc7c7Lc>dLd#d"Ld#d&LeeLeeLe-e,Le-e0
Le>e=Le>fLf#f"Lf#f&
Lf4f3Lf4f7LggLgg
Lg*g)Lg*g-LhhLhh
Lh;hLh6h6Lh;h>
Li0iLi+i+Li0i3!LjjLjj+Lk
kLk k	Lk
k
Lk k
Lk?kLk:k:Lk?l
LllLl lLllLl l
Lm
l"LmmLm
mLmmLm! mLmmLm! m!
Lnm+"LnnLnnLn<n;Ln<n?Lo!o Lo!o$Lo* o*
Lpo4LppLpp
Lp-p0LqqLqqLq7q6Lq7q:
Lr+rLr&r&Lr+r.Ls r3Lsr?Ls sLssLs s
Ls7sLs2s2Ls7s:BLvvLvv
Lv=vLv8v8Lv=w 
Lww
Lw&w)
Lw8x Lx*xLx#x#Lx*x-Lyx8LyyLyy
Ly(y$Ly+ y(Ly+ y+Lz$y6 LzzLz$z'
Lz6z1Lz9 z9+L|{&	L|{/L||L||L|+|'L|. |*L|+|+L|. |.
L} |8L}}L} }#
L}2}-L}5 }5+L~"	L~+LL
L% L( (+MA@	MA@MAAMAA	
MAAMA A+MB9B	MB9BMB4B4MB9B<
MCCMC C+MD,C;	MD,DMD'D'MD,D/
MD>D9ME E+MFE.	MFE7MFFMFF"
MF1F,MF4 F4+MHG!	MHG*MHHMHH
MH$HMH' H'+MJI	MJIMJ J MJJ
MJJMJ J+MK8K	MK8KMK3K3MK8K;
ML
LML L+MM+L:	MM+MMM&M&MM+M.
MM=M8MN  N +MON-	MON6MOOMOO!
MO0O+MO3 O3+MQP 	MQP)MQQMQQ
MQ#QMQ& Q&+MSR	MSRMR?R?MSS
MSSMS S+MT7T	MT7TMT2T2MT7T:MUUMUUMU3U2MU3U6
MV(V MV#V#MV(V+
MWV5MWWMWW 
MXW*MXXMXX
MYXMYYMYY

MY<YMY7Y7MY<Y?
MZZ	MZ Z"MZ6Z5MZ6Z9A	M\\M\	 \M\\M\	 \	M\$\!M] \#M\$\$M] ]-M]>^
M^^M^ ^M^$^ M^' ^#M^$^$M^' ^'
M_^1M__M__
M_*_%M` _-
M_<_7M` _?
M``	M` `M``M` `
Ma`'MaaMaa
MbaMbbMbb

Mb=bMb8b8Mb=c 
Mcc
Mcc                     U R                   R                  SS5      R                  5       nU(       a  [        R	                  5       (       d  g[
        R                  " [        R                  SS95      nUR                  S0 5      n[        U[        5      (       a  U[        UR                  5       5      ;   $ [        U[        5      (       a  X;   $  g! [         a     gf = f)NzX-Flaneur-Tokenr   FrY  r  r1
  )r  r   r"   FLANEUR_TOKEN_FILEr  r  r  r  r  r  r   r  r  r#   )r?  suppliedr  r1
  s       r'   ra
   CockpitHandler._flaneur_token_oku,  s    	||''(92>DDFH#5#<#<#>#>::0::G:LMDXXh+F&$''3v}}#777&$'')) (   		s   A
C A)C 7C 
CCc                 `   [         R                  " USS9R                  5       nU R                  U5        U R	                  SS5        U R	                  S[        U5      5        U R	                  SS5        U R                  5         U R                  5         U R                  R                  U5        g )NFr  r`  r\  r  r  r  )
r  re  rf  r  r  rA  r  r  r  r  )r?  r  r  r  s       r'   r
  CockpitHandler._json,  s    zz$U3::<4 );<)3t95*OP



r   c                 p    U R                  SS5        U R                  SS5        U R                  SS5        g )Nr$  r%  zAccess-Control-Allow-MethodszGET, POST, OPTIONSzAccess-Control-Allow-Headersz8Content-Type, X-Audio-Ext, X-Vocabulary, X-Flaneur-Token)r  rF  s    r'   r  CockpitHandler._cors,  s7    6<79MN79str   c                     g r   r  )r?  fmtr=  s      r'   log_messageCockpitHandler.log_message,  s    r   r  )r  T)r   )rB  rC  rD  rE  r  r  r  r  r,  rB  rG  r  r!  ra
  r
  r  r  rF  __classcell__)r  s   @r'   r  r    sT    F#](T<|
n94`sS6jlu
 r   r  i  c                 *  #    SSK nSSKnSSKnSSKnSSKJn  SSKJn  UR                  5       R                  S5      S-   [        UR                  5       5      SS -   nU" S5      nUR                  S	S
9  X S3-  n	U" S5      SUR                  5       R                  S5       S3-  n
U
R                  R                  S	S
9  / n U R                  [        R                  " SUS.5      5      I Sh  vN    U   Sh  vN n[#        U[$        5      (       Ga  Un['        U5      S:  a  M2  [)        U	S5       nUR+                  U5        SSS5        UR-                  U5         U R                  [        R                  " S['        U5      S.5      5      I Sh  vN    [/        5       nU(       d3  [0        R2                  " / SQS	S	SS9nUR4                  R7                  5       nU(       Ga  SR9                  USS 5      nUR;                  SSS9 nUR+                  U5        UR<                  nSSS5         UR?                  5       nURA                  S[)        WS5      SS S!9  URA                  S"S#5        URA                  S$S%5        URA                  S&S'5        URC                  5        ISh  vN nURE                  S(S)S*U 30UURG                  S+S,9S-9 ISh  vN nURH                  S.:X  a  URK                  5       I Sh  vN R7                  5       nU(       az  [)        U
S/S0S19 nUR+                  S2UR                  5       RM                  5        S3U S435        SSS5         U R                  [        R                  " S5US	S6.5      5      I Sh  vN   SSS5      ISh  vN   SSS5      ISh  vN    [N        RP                  " U5        GM  GM  [#        U[        5      (       d  GM   [        RR                  " U5      nURU                  S95      S::X  a@  / n U R                  [        R                  " S;U[        U	5      S<.5      5      I Sh  vN   GM[  URU                  S95      S=:X  a3   U R                  [        R                  " S9S>05      5      I Sh  vN   GM  GM   GN! [          a     gf = f GN! , (       d  f       GNs= f GN0! [          a       gf = f! , (       d  f       GN= f GNC GN GN! , (       d  f       GN= f GNz! [          aN     SSS5      ISh  vN    SSS5      ISh  vN     [N        RP                  " U5          g! [          a       gf = ff = f GN! , ISh  vN  (       d  f       GN= f GN! , ISh  vN  (       d  f       GN= f! [          a     GM  f = f!  [N        RP                  " W5        f ! [          a     f f = f= f! [          a\  n U R                  [        R                  " S7[        U5      S8.5      5      I Sh  vN     SnAGM3  ! [          a      SnA  gf = fSnAff = f GN! [          a       gf = f GN! [          a       gf = f! [          a     GM  f = f
 g! [          a     gf = f7f)?u=   T2 Voice WebSocket — Server ist Wahrheit, Browser ist dumm.r   Nr  r   r  r  ru   /tmp/voice_archiveTr  r  /tmp/voice_transcriptsr  r@  r  readyr  r  r  r8  audio_saved)r  r  r	  rm  r  r   Fr  r  r  z
audio.webmr  )r   r  rP  r  r  r  r*  r   z.https://api.openai.com/v1/audio/transcriptionsr  rp  r&  )r  )r  r  r  r%  r  rY  r  r  r  r  r  r  r   r  r   r  r  r  finalize	finalized)r  r  r  pingpong)+rj  r  r>
  aiohttpr  r[
  r   r  r  r   rk  r   r   r  r  re  r#   r  r  rA  r  r  r   r  r   r  r   r"   r  r?
  r   FormData	add_fieldClientSessionpostClientTimeoutr   r   r  r   r  r  r   )r  rK  _asyncior
  _aiohttpr  _Pathr  r
  wav_pathtranscript_pathchunk_bufferrt  r  r  rz  r  
chunk_blobr%  r
  r  r  r  r   r  s                            r'   _voice_t2_ws_handlerr9  ,  s    (%##$783>U[[]ASTVUVAWWJ,-Kt$|511H45+cggiFXFXYcFdEeei8jjO  $ /LnnTZZZ(PQRRRa& ^	''5))u:# (D)QGGEN *##E*#..]UXY^U_4`)abbb
8!1!3J%!+W+/dA" &,]]%8%8%:
!%(XXl23.?%@
 33753QUXIIj1'*xxH R"%#+#4#4#6D NN64$3G4@| + ] NN74GH NN:t< NN+<fE'/'='='?'?7+2<<$T-<
|>T,U)-,4,B,B,B,L	 ,8 ," ,"
 &*'+{{c'96:iik0A/H/H/J+/15osU\1]ab01!CGGI<O<O<Q;RRTUYTZZ\8]0^ 2^-66?nnTZZ<H<@=AQ2 F3 74 14 14," ," (@'?.% "		( 3O "` GS))::g.Dxx':5')""+..(3+5),X= 2 #      &)V3""+..VV<L1M"NNN 4{ 	S ^	 *)
 c  " RQ (@," 1B 2^1]14
 4= -605)," ," ," (@'?'?.% "		( 3#, % $%-6'," ," ," ," (@'?'?'?2 $- % $%% "		( 3#, % $%  'nnTZZQTUVQW8X-YZZZZ$  
  ) "!" O( "!"  { '~  s  CZ+R  /R0R  5Z 7Z;R0<Z?6Z 5R3Z !4SSSA0WS)W2A6V2(S+)V2,)VS.
V$U'=S1
>$U'"5S4	U' ,T	T
T	VU$V!V2,V-V22V Z '-Y/5Y

YY
Z Y/(*YYYZ R   
R-*Z,R--Z0Z3
S	=Z S
SZ ZSZ 
S(	#W+V2.V1U'4
T>U'T		
U!	U'VT" V%V20T31V27UZ Z
UWZ ZUW U!	!U'$V'U?-U0.U?:VV2V	VV	V2 
V/*W+Z .V//W2W4W
W
W	WW	WW
Y)4X*X X*#Z *
X<4X?5Z :Z;X<<X??YZ Y


YY/Z ZYY/Y
Y,(Y/)Z *Z+Y,,Y//
Y>9Z =Y>>Z Z
ZZZZc                    ^ ^^^ SSK m SSKmUUUU 4S jnTR	                  5       nUR                  U" 5       5        g! [         a    [        SSS9   gf = f)zKStartet den WebSocket-Server in einem eigenen asyncio-Loop (Daemon-Thread).r   Nu8   [cockpit] websockets nicht installiert — WS T2 inaktivTr   c            
        >#    T(       a  SOSn [        SU  ST S3SS9  TR                  [        STTS	S
SS9 IS h  vN   TR                  5       I S h  vN   S S S 5      IS h  vN   g  N- N N	! , IS h  vN  (       d  f       g = f7f)Nwssr  
[cockpit] ://0.0.0.0:z/ws/voice_t2Tr   0.0.0.0   r&  r%  sslmax_sizeping_intervalping_timeout)r  server9  Futureprotor2  _ws_libssl_ctxws_ports    r'   r   _start_voice_t2_ws.<locals>._run-  s      d
5'WI\B$O== % ! 
 
 //###
 
 
 $
 
 
 
W   :BA+BA1A-A1B%A/&B-A1/B1B7A:8BBr  r  ImportErrorr  new_event_looprun_until_completerL  rK  r  loopr2  rJ  s   ``  @@r'   _start_voice_t2_wsrU  -  sX    $
$ $ ""$DDF#'  HPTU   > AAi  c                 
  ^ ^^^^^#    SSK nSSKmSSKnSSKnSSKnSSKJm  SSKJn  TR                  5       R                  S5      S-   [        UR                  5       5      SS -   nU" S5      nUR                  S	S
9  U" S5      STR                  5       R                  S5       S3-  mTR                  R                  S	S
9  [        R                  R!                  SS5      nU(       d.  UR#                  / SQS	S	SS9n	U	R$                  R'                  5       nU(       d-   T R)                  TR+                  SSS.5      5      I Sh  vN   g T R)                  TR+                  SUS.5      5      I Sh  vN    SSKn
SSKJm  SnSU 3SS.nU
R3                  5        ISh  vN nUR5                  XS9 ISh  vN m T R)                  TR+                  SUS.5      5      I Sh  vN   TR7                  TR+                  S S!/S"S#S$0S%S&S'S(S).S*.S.5      5      I Sh  vN   UUUUU U4S+ jnUR9                  U" 5       5      n T   Sh  vN n[;        U[<        5      (       ay  Xv S,3-  n[?        US-5       nURA                  U5        SSS5        URC                  U5      RE                  5       nTR7                  TR+                  S.US/.5      5      I Sh  vN   M  [;        U[        5      (       d  M   TRG                  U5      nUR!                  S05      S1:X  a-  TR7                  TR+                  S0S205      5      I Sh  vN   GM  UR!                  S05      S3:X  a-  T R)                  TR+                  S0S405      5      I Sh  vN   GMD  GMG   GNG! [,         a     gf = f GN-! [,         a     gf = f GN GN GN! [,         a%     SSS5      ISh  vN    SSS5      ISh  vN    gf = f GN GN! , (       d  f       GNr= f GN0 N N! [,         a     GM  f = f
 O! [,         a     Of = fURI                  5          UI Sh  vN    OM! URJ                   a     O;f = f! URI                  5          UI Sh  vN    f ! URJ                   a     f f = f= fSSS5      ISh  vN    O! , ISh  vN  (       d  f       O= fSSS5      ISh  vN    g! , ISh  vN  (       d  f       g= f! [,         aW  n T R)                  TR+                  SS5[        U5       3S.5      5      I Sh  vN     SnAg! [,         a      SnAgf = fSnAff = f7f)6uB   Relay: Browser → lokaler WS → OpenAI Realtime API (Port 8097).r   Nr  r   r  _rt_ru   r   Tr  r!  r  r@  r  OPENAI_API_KEYr   r	  r  r  r   zKein OpenAI Key gefundenr'  
connectingr#  )	WSMsgTypezIwss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17rp  zrealtime=v1)r  zOpenAI-Betar  r"  zsession.updater   pcm16rP  z	whisper-1
server_vadr   r  r>  )r  	thresholdprefix_padding_mssilence_duration_ms)
modalitiesinput_audio_formatinput_audio_transcriptionturn_detectionc                    >#    T
  Sh  vN n U R                   TR                  :X  Ga   TR                  U R                  5      nUR	                  SS5      nUS:X  a  UR	                  SS5      R                  5       nU(       aw  [        TSSS9 nUR                  S	TR                  5       R                  5        S
U S35        SSS5         T	R                  TR                  SUSS.5      5      I Sh  vN   M  M  US:X  a.   T	R                  TR                  SS05      5      I Sh  vN   GM,  US:X  a.   T	R                  TR                  SS05      5      I Sh  vN   GM`  US:X  aH   T	R                  TR                  S[        UR	                  SS5      5      S.5      5      I Sh  vN   GM  GM  U R                   TR                  TR                  4;   d  GM    g GN! , (       d  f       GN'= f GN! [         a       gf = f N! [         a       gf = f N! [         a       gf = f N! [         a       gf = f! [         a     GML  f = f
 g7f)u   OpenAI → BrowserNr  r   z5conversation.item.input_audio_transcription.completedr  r  rY  r  r  z][RT] r  Tr&  z!input_audio_buffer.speech_startedspeech_startz!input_audio_buffer.speech_stoppedspeech_stopr   r'  )r  TEXTr  r  r   r"   r  r  r  r  r  re  r#   r   r  CLOSE)r  r  rJ  r   r  
_WSMsgTyper  r
  r6  r  	ws_openais        r'   relay_from_openai5_voice_realtime_ws_handler.<locals>.relay_from_openaiz-  sH    %. ("c88z6$%',{{388'<$(HHVR$8#$(_#_+/88L"+E+K+K+MD'+-1/3QX-Y]^,-GGa	8K8K8M7NfUYTZZ\4],^ .Z)22;..8D8<9=N. B/ 30 -0 -0	 (, &'*M%M%..7nnU[[&R`Ia=b.c(c(c &'*M%M%..7nnU[[&R_I`=a.b(b(b &''\%..7nnU[[4;36txx7L3MJ* >+ /, ), ), &2 !XX**:*:J<L<L)MM!Q(" .Z-Y-0
 09 )2,1)2 )d+4 %.(-%. )c+4 %.(-%.), ,5 %.(-%.#, % $%K &/s]  IIG"IIA%I5G%I'G:5G76G::I>I%H*H+H/I2I9%H HH #I&I-?H3,H1-H31*I I"I%
G4	/I7G::
HIIHIH
HIIHIH  
H.*I+I-H..I1H33
I=I>I II
IIIIz.pcmr8  zinput_audio_buffer.append)r  r  r  commitzinput_audio_buffer.commitr*  r+  zRelay-Fehler: )&rj  r  r  rh  r   r  r[
  r   r  r  r   rk  r   r   r   r   r   r  r   r"   r  re  r#   r,  r[  r/  
ws_connectsend_strcreate_taskr  r  r  r  r  rg  r  cancelCancelledError)r  rK  r2  _base64r   r4  r  r
  r   rK  r3  rt_url
rt_headershttp_sessionrl  
relay_taskrt  r  r  	audio_b64r  r  rj  r  r
  r6  rk  s   `                     @@@@@r'   _voice_realtime_ws_handlerrz  4-  s     (%##$786ACDVWYXYDZZJ,-Kt$45+cggiFXFXYcFdEeei8jjO  $ / **..)2
.CGGO#'dA  ?hhnn	..gF`-a!bccc 	nnU[[,:)VWXXXw"3\&se_(


 ))++|#..v.JJi#..gR\5])^___
  ((,'-h.5#[6 %1),1436	+ 6 *   "*" *"X &112C2EF
)2 %g%gu55)4T7J)JJ!%j$!71 ! 0 "8 )0(9(9'(B(I(I(KI"+"4"4U[[(C)2B 6 #      (55	%',{{7';#'88F#3x#?*3*<*<U[[)/1L(M>& +' %' %' &*XXf%5%?*3..ffEU9V*W$W$W &@a d 		
 	Y  ,J_  	 KJJ ,++B% "8!7 %' %X#, % $%+ *3. !  %%'(((#22  %%'(((#22 K KJJJJJ ,+++++R  	..gWZ[\W]V^F_-`!abbb 		s  DU!&N NN U&N$ 4N!5N$ :(S4 "N4#S4 &S:N7;S>R. &N=&N:'N=+3R.O/%R.P"P O2
P )P"8O5	
AP"P
P"6APP

PP"	:PP
PP"N 
NUNU!N$ $
N1.U0N11U4S4 7S:N==
O,R.SOSS4 $O'%S4 *U+O,,R.2P 5
P?	P"
PP
P	P"P	P"!Q%"
P/,Q%.P//Q%2R.QQ	QR.Q"R.!Q""R.%R7R<Q?=RRRRRRR.S'R*(S.S	4R75S	SS4 SS4 US1 S#!S1-S4 0U1S4 4
U?2T<1T42T<7U<
UUUUUUUc                    ^ ^^^ SSK m SSKmUUUU 4S jnTR	                  5       nUR                  U" 5       5        g! [         a    [        SSS9   gf = f)zNStartet den Realtime-WebSocket-Server in eigenem asyncio-Loop (Daemon-Thread).r   Nu>   [cockpit] websockets nicht installiert — WS Realtime inaktivTr   c            
        >#    T(       a  SOSn [        SU  ST S3SS9  TR                  [        STTS	S
SS9 IS h  vN   TR                  5       I S h  vN   S S S 5      IS h  vN   g  N- N N	! , IS h  vN  (       d  f       g = f7f)Nr<  r  r=  r>  z/ws/voice_realtimeTr   r?  r@  r  r%  rA  )r  rF  rz  rG  rH  s    r'   r  &_start_voice_realtime_ws.<locals>._run-  s      d
5'WI5GHPTU==&% ! 
 
 //###
 
 
 $
 
 
 
rN  rO  rS  s   ``  @@r'   _start_voice_realtime_wsr~  -  sX    $
$ $ ""$DDF#'  NVZ[rV  c                     SSK n [        R                  " 5       S-  S-  nUR                  5       (       d  gSnUR	                  S5       H  n[
        UR                  -  nUR                  5       (       a  M-   [        R                   " [        U5      5      nUR                  S-  (       a  Mc  SSKnUR                  [        U5      [        U5      5        UR                  UR                  S-   5      nUR                  5       (       a5  UR                  [        U5      [        [
        UR                  -  5      5        US-  nM     U(       a  [!        S	U S
3SS9  gg! [         a     GM!  f = f)u   Kopiert lokal verfügbare MP3s von ~/Desktop/Reiseberichte nach RB_OUTPUT_DIR.
SF_DATALESS-Dateien (iCloud-ausgelagert) werden übersprungen.r   NrM  r  r   i   @r5  rq   z[reisebericht] z$ Dateien aus iCloud-Desktop migriertTr   )r   r   r  r  r   r   r   r  r   r   st_flagsrT
  rU
  r  r  r#   r  )	_stat_modlegacycopiedr  r  r  rU  r  s           r'   _migrate_icloud_mp3sr  -  s    YY[9$6F==??F{{7#sxx';;==	S"B{{Z' IIc#hD	*mmCHH$>?G~~		#g,MGLL,H(IJaKF $" x'KLTXY   		s   73E,BE
E+*E+__main__r   z
rb-migrate)r  r  r   c                       \ rS rSrSrSrg)ThreadingHTTPServeri.  Tr  N)rB  rC  rD  rE  daemon_threadsrF  r  r   r'   r  r  .  s    r   r  r?  z[cockpit] http://0.0.0.0:i  c              #   T   #    U  H  nUR                  5       (       d  M  Uv   M      g 7fr   r  r  r   s     r'   r  r  .  s(       
 
 !    (	(z192.168.0.244+2.pemzMinimac.local+1.pemz192.168.0.192+1.pemz192.168.0.192+2.pemc              #   T   #    U  H  nUR                  5       (       d  M  Uv   M      g 7fr   r  r  s     r'   r  r  .  s(       q
 
  r  z192.168.0.244+2-key.pemzMinimac.local+1-key.pemz192.168.0.192+1-key.pemz192.168.0.192+2-key.pem)certfilekeyfile)server_sidehttpsz[cockpit] https://0.0.0.0:zws-voice-t2r	  zws-voice-realtimeu2   [cockpit] Keine mkcert-Zertifikate — HTTPS-Port z inaktiv)r   )i   r  r   )r  )r  )i   )Fr<  )rl  r   )r   N)r{  )r   r[  r>  r@  )r_  r   (  __doc__ra  r  rv   r   r   r   r   rB  rj  http.serverr   r   socketserverr   r[
  r   r  r   r	   r
   r  r  r4  r  r   r  r   r  r   r  r   song_erkennungrP
  rO
  r#   r  r  cherry_inboxrz
  r|  r}
  cherry_listenerr  watson_reactorr  start_watcherstart_reactorry
  _cer  WATSON_VOICES_DIR_FOR_ZOTIFYr  rb
  re
  r   r(   r   rB  r   r   r   r   r  __annotations__Lockr   r   r   r   r  r   Eventr   r   r   rC  _rb_worker_threadr{  r  r  r  r  r  rR  r  r  rh  rg  STIMMEN_DIRr  rh
  r  r  rt  r  r  r  r  r  r  r  r  ri  r  r  r  r  r  r  rL  ri  rl  rv  r|  r  r  r  r  r  r  rB  r  r  r9  r\  r  r  r  r  rf  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  rb  rj  ry  r  r  r  r  r  r  r  changedr  r   r   r  re  r  r   r  r  r  	Semaphorer  r  r  r  Timerr  r  KLING_KAMERAMOTOR_DIRKAMERAMOTOR_LEGACY_JOBS_DIRKAMERAMOTOR_LEGACY_STATE_DIRrT  rU  rR  rS  r&  r5  rA  rP  rV  rX  rq
  rY  r\  rf  TTC_ROOT_DIRrp  r  rn  rr  ru  rw  rz  r  r  r  r  r  r  r  r  rs
  rt
  r  r  r  r  rA
  r  rB
  r  r  rx  r  r  rS
  rf
  rg
  r  PORTr  r  r  r  r   r  r  r,  r/  r2  rJ  rW  rI  r\  rk  r:  rD  rM  rX  r]  r`  rm  r~  r  r  r  r  r  r  r  r  r  r  _WS_PORTr9  rU  _WS_RT_PORTrz  r~  r  rB  r`
  r  r  _https_portr	  _cert_keyrB  _ssl
SSLContextPROTOCOL_TLS_SERVERctxload_cert_chainhttpsdwrap_socketr  serve_forever_ws_ssl
_ws_rt_sslr  r   r'   <module>r     s   h    	 	  
   < '  6 6 $   3tH~,,- . 3tH~,,334 5 3tH~,,336FFG HG&LF(#.,!!!#	
ETRJ
 #$aberru~~ jk op kl s S # " !#+-'%7 <
	  &#$"$."&* ,
	& !#'%#'#' +#!
	( $#6,60+7#A/	
	  L7%%	

 vtx C	
 #%%!!
	 !#&$ 2"(
	 U
]t l"c "c "c "eE5%QV<V6W "$  
..
X%%7N!!((>9<PP	$  __
`-C `-s `- `-U `-S `-T `-DM& $$,<TJ       
..
N)),GG 4 '1"D) $ )  '1 MN*((de_`T nn  "  !!(   $RQL	4 L!$ba"XZ[
D [.."%g.9+FMg\&|4>?PQ[\j z &k 3?| MVV_ >	 #,I	
 
 *-
 9H - !) 3<I GSS_  ) 5:* FMW G X '.k ;A ITT_  &g /8	 _ **C EMMl M */ ;Fk S[[j 6 8 %0 
%  (33J LRR\ ^n  oE FR  Sa bh  is t{  |P -?R$6Y# 6Y$ 6Yp+
Xs Xs X3 c c (y%3 y%4 y%D y%xAS A# A3 Ac Az} A  HK A2 s # <S <# <3 <# <"< <c <s <S <", ,S ,c ,C ,p# ps pC pC pHt HS	 H(Ot OS O# O$ O<B
$ B
3 B
HZs Zt Z Z<E E Ec ETX Eeh EN# s C TW (!
 !
 !
F-
 -
$ -
3 -
^N NT Nc N`g g gRG@# G@R]c ]d ]s ]~nS n nD n$ nae nqt n`EA3 EA EAP t ~~ T *nHt nH`	c 	'C 'D 'R+d +$P3: P
(# ($ (6C 63 6dTk 6t 66c 6d 6d  #* < 2J3 JS Jd JZ
!s 
!4 
!4 
!#3 #4 #:+# +C +T +D +T +8$ "%+S %+ %+ %+Pc+ c+S c+# c+C c+Y] c+L **.88:;>>#Cwwx $XX 'H"FJcG $ ((G%XY)Z[
 x.''-7   t  $X%%(??d nn  #
ED ET E8 HMX 
) * 0 0 28n##$$}4#**-@@ -6 .8  // A !03C!C 2V; 3g= T D T c $  dCi@P & s # QT Y] 4Is IuT4Z/@ I '--=@YY $>>+ * !!$88f$##k1H<?SS2# 2# 23 3 323 24 23 4 ;3 ;c ;c ;c s DJ ( D T "C td{ d < #  $  D%`S %`4 %`T %`X\ %`ae %`R x.''..1BB>((//2DD   ,.AB  % %!tSy!1 !
H 8n##**Y6VW N!!((94	>((//%7:KK x.''..1GG(^""))H4}D
(^""))H4
 
  $  x.''..1CC8n++.CC h..1II x.''..># BC S H H4 H.W[S W[d W[ W[ W[t<7# <73 <7E <7~-7# -73 -7E -7`	C 	D 	d t  ? ?T ?d ? (*
44 #44 "55 %(BB @4 @C @D T  $ T * S\9d s c C 36im&	 	S 	3 	 	)dt )d )dX" "P $'$t[_`#&$t[_`#&$t[_`#&$t[_`/2cRVfj%k/2cRVfj%k $'$t[_`  o# od ou oU U Up4    t >	< 	<4 	<lr- lr`e xv$8 Zz$6Z8 zHH[t40LQWWYnj  )T!2NCF	%dV
,D9 K ++++++++	 
 E  ////////	 
 D uood667SZTC$i%=~N4H 4 4TPVVX*;-8E //$":":;USYG%Xw,?m	
 %'__T%=%=>
""CJD	"J+;
2K1	
 %'B;-xX`de%Xt,<m	
 %'+;2E1	
 %'
y ]o  GL	4RD
9FFG  FJ	23%
8EEF\V  s^    A@ ;A@2 AAA ,AAA @A@/@A@*@*A@/@2AA@8AA
A
AAAAAAAA